Хабрахабр

[Перевод] Университет Карнеги-Меллона спасает старые программы от забвения

Прототип архивной системы Olive позволяет запускать на современных компьютерах винтажный код

С таким большим долгом, по их мнению, рост должен стать отрицательным. В начале 2010 года гарвардские экономисты Кармен Рейнхарт и Кеннет Рогов опубликовали анализ экономических данных разных стран, и заключили, что если долг превысит отметку в 90% от ВВП, это станет угрозой для роста экономики страны.

В то же время консервативные политики, например, Олли Рен, бывший тогда европейским комиссаром, и конгрессмен США Пол Райан, использовали открытия Рейнхарт и Рогова для агитации в пользу финансового воздержания. Их анализ был сделан вскоре после рецессии 2008 года, поэтому он имел непосредственное отношение к работе законодателей, многие из которых были уверены в необходимости увеличивать долг для стимуляции национальных экономик.

Значимость её была огромной: при правильном проведении анализа, как показал Херндон, уровень долга в 90% ВВП соотносился с положительным ростом экономики на 2,2%, а не с отрицательным ростом в -0,1%, как писали Рейнхарт и Рогов.
Херндон мог без труда проверить выводы гарвардских экономистов, поскольку ему было доступно ПО, с которым они работали — Microsoft Excel. Три года спустя Томас Херндон, выпускник Массачусетского университета, нашёл ошибку в электронной таблице Excel, которую Рейнхарт и Рогов использовали для своих вычислений. А что же насчёт более старых открытий, использовавших старое ПО, которое сегодня сложно отыскать?

Ведь софт – это просто набор файлов, а эти файлы легко хранить на жёстком диске или на плёнке в цифровом виде. Мы можете решить, что решение этой проблемы – сохранение важного ПО для будущих исследователей – не должно быть сложным. Программный код некоторых программ можно даже воспроизвести на бумаге, во избежание проблем с устареванием цифровых носителей, для которых оно было написано.

В онлайне можно, к примеру, найти исходный код для Apollo Guidance Computer, который помог доставить астронавтов на Луну в 1960-х. Хранение программ таким способом ведётся на постоянной основе, даже для программ возрастом несколько десятилетий. Его переписали с бумажного носителя и загрузили на GitHub в 2016.

Им интересно использовать ПО. И хотя внимательное изучение такого винтажного кода может понравиться хардкорным программистом, большей части людей это неинтересно. Но поддерживать ПО в готовом для запуска состоянии на длительных промежутках времени чрезвычайно трудно, поскольку, чтобы запускать большую часть старых программ, вам нужны старые компьютеры и старые операционные системы.

Но в области научных и технических исследований невозможность запустить старую программу может привести к гораздо более серьёзным последствиям. Вы могли столкнуться с такими проблемами самостоятельно, пытаясь играть в компьютерные игры вашей молодости.

Они занимаются симуляцией явлений при помощи компьютерных моделей, написанных на различных языках программирования, и использующих большое количество поддерживающих их работу программных библиотек и ссылок на наборы данных. Кроме экономистов, многие другие исследователи, например, физики, химики, биологи и инженеры, на постоянной основе используют программы для обработки данных и визуализации результатов анализов. Такие расследования и ПО, на которое они полагаются, играют главную роль в открытиях и отчётах о результатах поисков.

Будет ли то старое ПО всё ещё доступно вам? Представьте, что вы – исследователь, желающий проверить подсчёты другого учёного, проведённые 25 лет назад. Даже если существует его современная версия – примет ли она данные в исходном формате? Компания, выпустившая его, могла уже закрыться. Вероятно, нет. Будут ли все подсчёты – к примеру, работа с ошибками округления — идентичны старым, сделанным на компьютере целое поколение назад?

Проблема устаревающего софта сводит на нет понятие воспроизводимости, лежащее в основе науки. Зависимости исследователей от компьютеров растёт, а сложности при попытке запуска старого ПО увеличиваются, и это мешает им проверять опубликованные ранее результаты.

Допустим, подсчёты инженера показали, что здание должно выстоять, а после этого крыша здания падает. Эта проблема может влиять и на проведение судебных экспертиз. Если много лет спустя ПО нельзя будет запустить, проверить это будет очень сложно. Сделал ли ошибку инженер, или дело было в неправильной работе ПО?

Мои коллеги, специалисты по информатике Бенджамин Гильберт и Ян Харкс, написали большую часть кода. Поэтому мы с коллегами из Университета Карнеги-Меллона разработали способ архивировать программы таким способом, что их можно будет легко запустить сегодня и в будущем. В совместной работе также участвовали архивариус программного обеспечения Дэниел Райан и библиотекари Глориана Сен-Клэр, Эрика Линке и Киф Вебстер, которые, по понятным причинам, имеют свой живой интерес в сохранении этой части современной культуры.

0, один из первых браузеров с Macintosh, 1993
NCSA Mosaic 1.

1 для Linux, 2013
Chaste (Cancer, Heart and Soft Tissue Environment) 3.

1, игра для Macintosh, 1990
The Oregon Trail 1.


Wanderer, игра для MS-DOS, 1988


Mystery House, игра для Apple II, 1982

1, 1991
The Great American History Machine, интерактивный образовательный атлас для Windows 3.

3 для Windows 3.
Microsoft Office 4. 1, 1994


ChemCollective, образовательное ПО по химии для Linux, 2013

С их помощью мы продемонстрировали восстановление давно забытых компьютерных систем и сделали их доступными для всех в онлайне, чтобы любой пользователь компьютера мог отправиться в прошлое одним щелчком мыши. Поскольку этот проект связан с сохранением ПО, а не с популярной информатикой, мы собирали на него средства не у обычных государственных агентств, а у фонда Альфреда Слоана и Института музейных и библиотечных услуг.

Olive позволяет получить через интернет то же впечатление, которое вы получили бы, запуская приложение, ОС или компьютер из прошлого. Мы создали систему Olive – это акроним для открытой библиотеки изображений для виртуального высполнения [Open Library of Images for Virtualized Execution]. Это что-то вроде интернет-архива Wayback Machine для исполняемых программ. Установив Olive, вы можете работать с очень старым ПО так, будто он современное.

В самом основании находится общая база большинства современных вычислительных технологий: стандартный настольный компьютер или ноутбук с одним или несколькими микропроцессорами x86. Чтобы понять, как Olive может возрождать старое компьютерное окружение, необходимо пройти через несколько слоёв программных абстракций. На нём мы запускаем ОС Linux, формирующую второй слой в стеке.

Виртуальная машина – это вычислительное окружение, имитирующее на компьютере окружение, существовавшее на компьютере другого типа. Над ОС находится ПО VMNetX, написанное в моей лаборатории, запускающее виртуальную машину по сети [Virtual Machine Network Execution]. Преимущество в том, что вашему компьютеру не нужно скачивать весь диск и состояние памяти с сервера для запуска виртуалки. VMNetX позволяет хранить виртуальные машины на центральном сервере и запускать их по требованию удалённо. Информация, хранящаяся на диске и в памяти, скачивается частями, по необходимости, для организации следующего слоя – монитора виртуальной машины (гипервизора), который может поддерживать работу одновременно нескольких машин.

Эмулятор делает вид, что на нём работает уже давно вышедший из употребления компьютер – к примеру, старый Macintosh Quadra с Motorola 68040 CPU из 90-х. На каждой из виртуалок работает эмулятор оборудования – это следующий уровень в стеке Olive. Если архивированное ПО может работать на компьютере с процессором x86, этот слой виртуализации можно опустить.

У неё есть доступ к виртуальному диску, имитирующему дисковый накопитель и файловую систему, необходимую для работы следующих слоёв этого торта программной абстракции. Следующий слой – старая операционка, на которой может работать архивное ПО.

Это может быть верх кучи, или же на ней может быть ещё один слой, состоящий из данных, которые необходимо скормить программе, чтобы получить от неё то, что вы хотите. Над старой ОС находится уже сама программа.

Нижние слои устанавливаются на компьютер пользователя в виде клиентской части. Верхние слои Olive разные для каждой из архивных программ, и хранятся на центральном сервере. При запуске архивной программы клиент Olive скачивает необходимые части верхних слоёв по требованию с центрального сервера.

Но что Olive может делать? Это то, что находится у системы под капотом. Выбор из того, что включить в систему, был основан на смеси любопытства, доступности и личных интересов. На сегодня в неё содержится 17 различных виртуальных машин, способных запускать разнообразные ОС и приложения. В результате мы нашли старую версию игры для Mac и сумели запустить её через Olive. К примеру, один член нашей команды с нежностью вспоминал, как он играл в The Oregon Trail, учась в школе в начале 1990-х. После того, как об этом стало известно, многие люди начали приходить к нам с вопросами о возможности возродить их любимое ПО из прошлого.

Другая программа — NCSA Mosaic, которая, как могут вспомнить люди определённого возраста, подарила им чудеса WWW. Самое старое приложение из восстановленных нами – это Mystery House, графическая игра с начала 1980-х для компьютера Apple II.

5. В Olive хранится версия Mosaic, написанная в 1993 году для Macintosh System 7. Несмотря на всю эту виртуализацию, быстродействие получается неплохим, поскольку современные компьютеры работают гораздо быстрее оригинального оборудования Apple. Эта ОС работает на эмуляторе Motorola 68040 CPU, созданном при помощи ПО, работающем на компьютере с процессором x86 под управлением Linux.

Он появился раньше, чем такие современные веб-технологии, как JavaScript, HTTP 1. Довольно интересно направлять восстановленный Mosaic из Olive на современные сайты. Но вам может быть интересно поискать так давно сделанные сайты, что они отлично видны в этом браузере. 1, Cascading Style Sheets и HTML 5, и поэтому неспособен отображать большинство сайтов.

Возможно, вам интересно, какие инструменты использовались в бизнесе сразу после появления процессора Intel Pentium. На что ещё способен Olive? Запустите Microsoft Office 4. Olive может помочь и с этим. 3 с 1994 года (который, к счастью, вышел ещё до появления раздражающего ассистента-скрепки).

Или, возможно, вам надо переделать ваши налоги от 1997 года, и вы не можете найти дискету с той версией программы TurboTax на чердаке. Возможно, вам захочется провести ностальгический вечер, поиграв в Doom для DOS, или понять, почему в начале 90-х шутеры от первого лица стали так популярны. Не волнуйтесь, Olive позаботится о вас.

1. Если говорить о более серьёзных вещах, то в Olive хранится Chaste 3. Это симуляция, разработанная в Оксфордском университете, позволяющая решать вычислительные задачи по биологии и физиологии. Это сокращение от Cancer, Heart and Soft Tissue Environment (рак, сердце и мягкие ткани). 1 была связана с исследовательской работой, опубликованной в марте 2013 года. Версия 3. 1 перестал компилироваться в новых версиях Linux. Однако уже через два года после публикации исходный код Chaste 3. Это прекрасный пример проблем научной воспроизводимости, решать которые должна система Olive.

1 продолжал работать, Olive предоставляет неизменное во времени Linux-окружение. Чтобы Chaste 3. Обработка этих данных выдаёт визуализацию работы мускулов. Воссозданный в Olive Chaste также содержит примеры данных, опубликованных с работой от 2013 года. Будущие исследователи физиологии, которые захотят изучить эти визуализации, или внести исправления в опубликованное ПО, смогут использовать Olive для редактирования кода на виртуальной машине и его запуска.

Из-за лицензионных ограничений набор старого ПО из Olive доступен только для людей, помогавших в разработке проекта. Пока что Olive доступен ограниченному количеству пользователей. Связанные с ПО компании должны предоставить разрешение на то, чтобы презентовать возрождённые программы широкой аудитории.

Internet Archive сохраняет тысячи старых программ при помощи эмулятора MS-DOS, работающего в браузере. В наших поисках возможностей поддерживать жизнь в старом ПО мы не одни. Учёные и библиотекари из проекта Сеть сохранения программ [Software Preservation Network] работают над этим и другими проектами. В Йельском университете разрабатывают проект EaaSI (эмуляция как инфраструктура услуг), в надежде дать всем доступ к тысячам эмуляций программного окружения из прошлого. Они также работают над решением проблем с авторскими правами, появляющимися при запуске старого ПО таким способом.

Кроме проблемы с лицензированием, ей остаётся преодолеть некоторые технические препятствия. Olive уже неплохо развилась, но ей ещё далеко до полностью готовой системы.

Пока что такие данные нужно вводить вручную, а этот способ труден и подвержен ошибкам. Одно из препятствий – импорт новых данных для обработки старой программой. Даже если бы мы добавили механизм импорта данных, количество сохраняемых данных было бы ограничено размером виртуального диска виртуальной машины. Также этот способ ограничивает объём данных, которые можно проанализировать. Это может казаться небольшой проблемой, но нужно помнить, что у файловых систем старых компьютеров иногда были такие ограничения на объём, которые сейчас воспринимаются, как странные.

Уже довольно давно учёные пользуются параллельными вычислениями для ускорения различных подсчётов. Другое препятствие – эмуляция GPU. Всё оттого, что интерфейсы GPU – что в них можно вводить и что они выводят – не стандартизированы. Для архивации исполняемого ПО, использующего GPU, в системе Olive придётся воссоздать виртуальные версии таких чипов – а это трудная задача.

Но Olive – это хорошее начало создания систем, которые потребуются, чтобы гарантировать сохранение старых программ в таком состоянии, чтобы их можно было ещё долго изучать, проверять и использовать Очевидно, что предстоит сделать ещё много работы перед тем, как мы объявим о решении проблем с архивацией исполняемых программ.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть