Как передать потомкам исполняемый код? Задача сложнее, чем кажется

Kate

Administrator
Команда форума
Вы читали берестяные грамоты жителей Новгорода 11 века? Жёны писали записки мужьям типа «Не забудь в дорогу бутерброды, когда поедешь в Киев», девушки слали любовные записки, мужчины вели учёт долгов перед соседями. Но мы даже близко не можем представить, как жила эта богатая культура до завоевания Москвой.

Так и от нашего поколения останутся лишь обрывки, непонятные файлы, фотографии. Потомки будут смотреть и искренне недоумевать, зачем мы делали то, что делаем.

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

Что же делать?
Во-первых, недостаточно сохранить исходный код программы и скомпилированные бинарники. Для использования софта нужен контекст (среда выполнения/железо) и понимание, как это запустить.

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

Например, у меня обширная библиотека электронных книг и документов в разных форматах, в том числе старые версии Microsoft Word. Я могу открыть их на современном компьютере. Они действительно откроются, но будут выглядеть иначе. Не так, как раньше. Некоторые шрифты и графика выглядят по-другому. Да, экраны стали лучше, но я не получу того впечатления, которое было раньше. Внешний вид изменился, он уже не такой. По сути, файлы деградировали в силу естественной энтропии Вселенной.

И это только начало деградации. Через несколько столетий вообще не факт, что их смогут открыть.

▍ Сохраняйте скриншоты​


Самый простой способ передать информацию о своей программе, исходниках, вообще любых файлах — сохранять скриншоты. Всего, что вы хотите запомнить или передать потомкам.

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

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

У меня десятки скриншотов моих работ (и несколько скринкастов). Это своего рода «визуальный журнал» забавных, глупых и интересных вещей, которые я делал на компьютере. Вот некоторые:

hdnbwfgigzmzi8p78vffcyajw6a.png

На каждом скриншоте небольшое превью (слишком маленькое, чтобы рассмотреть в деталях) и имя файла с временем создания от декабря 2015 года до февраля 2021-го

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

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

▍ Брейндансы​


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

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

Картинка стоит тысячи слов.

▍ Софт, который не зависит от инфраструктуры​


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

Но некоторые вещи понятны и очевидны. Для максимального сохранения система должна быть максимально простой. Чем проще — тем лучше, без всяких усложнений. Простой текстовый файл лучше, чем .docx. Распечатка лучше, чем файл. А ещё лучше картинки вместо текста.

В качестве маленького примера можно посмотреть на блогерскую платформу Bear:

nmpa6xr1cigijohsch31wwolxh8.png


Здесь минимализм на пределе:

  • размер страничек около 2,7 КБ;
  • никаких трекеров, баннеров или скриптов;
  • простой текст;
  • готовые фиды RSS и Atom;
  • отлично выглядит на любом устройстве из прошлого, настоящего или будущего.

Это реально софт, который должен работать вечно (такой лозунг у этой платформы). Идея в том, что статичные файлики своего блога можно перенести куда угодно за пару минут. Можно подключить любое доменное имя. Блог можно прочитать в Блокноте с любого устройства. Да и сам движок написан на Django/Python, поэтому может работать практически на любом хостинге, да хоть на Raspberry Pi под столом.

Так называемая «блогерская платформа» настолько проста, что она недалеко ушла от Блокнота, файлики HTML/CSS редактируются практически вручную.

▍ Потеря знаний человечеством​


К сожалению, потеря знаний человечеством — реальное явление. Мы забыли рецепт римского бетона, состав греческого огня, забыли об антикитерском механизме (до его находки) и других сложнейших механических устройствах прошлого.

r-21kz4qkrza5z0ch6ciyk_ixgo.jpeg

Антикитерский механизм

Никто не знает, как строились египетские пирамиды и подгонялись камни в стене Мачу-Пикчу (на КДПВ) без современных строительных инструментов.

Потеря информации — естественный процесс. Энтропия нарастает со временем и ускоряется. Всё, что мы видим вокруг, довольно скоро деградирует и исчезнет. Мы потеряли 50% фильмов, снятых до 1950 года, и 90% до 1930-го, не можем восстановить важную информацию с флоппи-дисков, а ведь прошло всего пару десятилетий.

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

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

▍ Вывод​


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

Так что делайте скриншоты, господа. Для максимально точной и быстрой передачи своих нейронных состояний. Хотя бы самому себе в будущем. Скриншоты гораздо мощнее фотографий в этом смысле.

Недавно мой друг нашёл старый скриншот экрана 1997 года. С аськой и контактами, которые почти забыл (а теперь с удивлением вспоминал этих людей), со списком любимых треков в WinAmp, которые уже перестал слушать, с иконками Jagged Alliance и NHL 96. Воспоминания так нахлынули, что товарищ почти заплакал от одной картинки.

В принципе, можно поставить запись экрана, автоматическое снятие скриншотов по таймеру (TimeSnap) или настроить в Greenshot (опенсорсная программа для скриншотов), чтобы по нажатию PrtScr скриншот с датой и временем сохранялся в указанную папку.

Есть специальный софт типа Rewind, который записывает всё происходящее на экране, индексирует и сжимает, включая телеконференции со звуком. Это позволяет потом найти «всё, что вы когда-либо видели, слышали или говорили». Но там платная программа только под Mac, да и непрерывная запись кажется избыточной. Иногда один скриншот лучше, чем тысяча часов видео.


 
Сверху