image
Как технари, мы постоянно находимся на фронте технологий: новые версии, новые стандарты, новые фреймворки, новые парадигмы. Во многом это хорошо. Многие результаты представляют собой ощутимое улучшение по сравнению с существующим положением дел. Специализация (например, степени бакалавра в области AI) ускоряет развитие перспективных областей, приближая будущее с захватывающими возможностями. До тех пор, пока наши многообещающие технологии находят эффективное применение.

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

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

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

1) Debugging with GDB by Richard Stallman et al. (1988 — Present)





Проведя академические исследования в области динамического анализа программ, я питаю некоторую слабость к отладчикам и эмуляторам. 1-е издание продолжительной серии «Отладка с помощью GDB» вышло в 1988 году. В соответствии с требованиями Фонда свободного программного обеспечения (FSF), самая последняя версия находится в свободном доступе в Интернете. Это исчерпывающий справочник по gdb — пользовательскому отладчику для Unix-подобных систем.

gdb является краеугольным камнем невероятно авторитетного набора программ GNU. Этот набор инструментов включает, среди прочего, компилятор gcc, стандартную библиотеку С glibc и систему сборки make — программное обеспечение, фундаментальное как для развития ядра Linux, так и для системного программирования в целом. Поскольку технологии GNU есть практически на каждом сервере, почти все ваши повседневные задачи на компьютере прямым или косвенным образом обеспечиваются утилитами GNU. Эта горстка инструментов ежегодно приносит миллиарды долларов.

Доктор Ричард Столлман, автор нескольких программ GNU, лично подписал эту копию, когда я встретил его на конференции по программному обеспечению в 2016 году. Я отчетливо помню, как люди вставали и уходили на середине его заключительной речи, в которой он подчеркивал эксплуататорскую природу облачных сервисов. Категорически. Любого использования удаленных компьютеров, на которых выполняется код, управляемый другой стороной. Несмотря на то, что Столлман, без сомнения, является иконой в мире компьютеров, его можно охарактеризовать как довольно резкого спикера.

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

Классические проблемы, современные решения


gdb / rr — один из немногих инструментов разработчика конца 80-х, который все еще популярен сегодня. Как среди обычных, так и среди reverse-инженеров. Неудивительно, что несколько современных стартапов выпускают продукты для отладки и наблюдения. Общий объем целевого рынка (TAM) для удовлетворения извечных потребностей является значительным.

Некоторые из этих стартапов (список в алфавитном порядке, не является исчерпывающим и ничего не рекламирует): logrocket.com, metawork.com, replay.io и tetrane.com

2) BIOS Interface Technical Reference by IBM (1987)





«Clean-room design» был закулисным способом легального реверс-инжиниринга и клонирования продукта конкурента. Это работало следующим образом: инженер А создавал спецификацию после изучения конкурирующего продукта, юрист подписывал спецификацию, не включающую материалы, защищенные авторским правом, а инженер Б повторно реализовывал продукт на основе спецификации, созданной инженером А. У A и B один и тот же работодатель, но, поскольку они не одно и то же лицо, технически нарушение авторских прав отсутствует. Этот метод использовался во времена жесткой конкуренции на рынке первых персональных компьютеров.

Возможно, самым печально известным применением данного метода было воссоздание базовой системы ввода-вывода (BIOS) IBM. IBM's Personal Computer (PC) представил целое поколение домашних компьютеров, открыв новую эру. Это послужило катализатором массового внедрения компьютеров общего назначения, бывших до этого корпоративными инструментами и диковинками для любителей. Путем реверс-инжиниринга BIOS, части низкоуровневой прошивки, конкуренты могли сократить время выхода на рынок программно-совместимых клонов флагманского потребительского продукта IBM.

Именно так поступили такие успешные компании, как Compaq Computer и Phoenix Technologies. Одна команда получила технические руководства IBM, вероятно, очень похожие на книгу, изображенную выше, и написала спецификации, описывающие поведение программы, не включая какой-либо код из книги. Другая команда написала клон BIOS, соответствующий спецификациям, вероятно, на языке ассемблера, а затем запускала программы для IBM PC поверх реплики, чтобы проверить, работает ли она так, как предполагалось. Неэтично? Возможно. Эффективно? Определенно.

Доминирование через совместимость


Почти все современные ноутбуки/десктопы/серверы являются прямыми потомками IBM PC 1981 года и используют обновленную версию архитектуры x86. Это наследие устойчивой монокультуры. Почему же IBM PC так убедительно доминировал?

Возможно, потому, что для Big Blue это был отход от традиций, утверждает Шон Хаас. В то время как мейнфреймы компании использовали собственный технологический стек, IBM PC был открытым и модульным, легко поддерживающим аппаратное и программное обеспечение сторонних производителей. Команда разработчиков поставила в приоритет как время выхода на рынок, так и производственные возможности, намеренно объединив серийно выпускаемые 8-битные периферийные устройства с их 16-битным CPU (вариант почтенного Intel 8086). Если бы был сделан другой выбор, возможно, недавняя SoC Apple ARM не стала таким заметным исключением из правила x86.

Хоть BIOS уступил UEFI, однако процессор 8086 отказывается умирать. И по сей день ваш новенький 64-разрядный x86 компьютер загружается в «реальном режиме» при запуске — готовый выполнять 16-разрядные инструкции с «ошеломляющим» 1 МБ адресуемой памяти. Это странный технический долг, артефакт 40-летней приверженности обратной совместимости. И похоже так будет еще лет 40.

3) The Ada Reference Manual by Honeywell (1983)





В конце 70-х Министерство обороны США (DoD) столкнулась с критической проблемой: в их проектах встраиваемых систем использовалось более 450 «эзотерических» языков программирования, обслуживание которых ложилось многомиллиардным бременем. Ответ правительства? Стандартизация. Создайте новый язык, специально предназначенный для встраиваемых систем, критически важных с точки зрения безопасности, и юридически закрепите его использование в соответствующих проектах.

В 1978 году Министерство обороны выдвинуло перечень требований «Steelman» и спонсировало соревнование (мало чем отличающееся от более современных DARPA «Grand Challenges»). В бой вступили четыре команды языковых дизайнеров: красная, зеленая, синяя и желтая. Зеленая команда выиграла и подготовила изображенную на картинке спецификацию языка, отсюда и цвет обложки. Это памятная копия с благодарностью оригинальной команде разработчиков Honeywell.

Их язык был назван «Ада» в честь Ады Лавлейс — программиста-первопроходца, которая отлаживала свой еще не построенный механический компьютер при помощи переписки по почте. Официальный номер документа спецификации, MIL-STD-1815-A, включает дату рождения Лавлейс — 1815 год.

О современной Аде


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

Недавно в SPARK Ada улучшили проверку памяти кучи. Nvidia выбрала его вместо Rust для низкоуровневой прошивки в 2019 году, сославшись на отсутствие сертификации Rust для систем, критически важных с точки зрения безопасности. Но Ада так и не вошла в мейнстрим. Социальные факторы — ассоциации с ограничивающими лицензиями и проприетарным компилятором — сдерживали принятие. Что очень жаль, набор функций языка остается привлекательным.

Заключительные мысли


То, что мы считаем цифровой древностью, в масштабах человеческой жизни является совсем недавним временем, чтобы навешивать ярлык «истории». Сегодня некоторые из первых последователей Ada все еще работают в качестве разработчиков. Для новых проектов по-прежнему выбирается GNU General Public License (GPL). Будучи ребенком 90-х, я с теплотой вспоминаю заставку клона BIOS от American Megatrends, освещенную нечетким свечением CRT-монитора.

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

Комментарии (14)


  1. Dolios
    14.04.2022 12:41
    +9

    Вспоминается старый баян про книгу с названием "Язык Ада" и про реакцию окружающих на нее :)


    1. nickolaym
      15.04.2022 01:49

      и язык РАЯ, заодно


    1. Nialpe
      15.04.2022 09:27

      У меня был случай, за который немного стыдно. В ВУЗе слыл довольно сообразительным в сфере разработки и подрабатывал с 4 курса на частичной занятости, преподаватели особенно даже не спрашивали - "с этим все понятно, он уже на нужных рельсах". Однажды встретил в корридоре такого преподавателя с книгой, он начал воодушевленно рассказыввть, что только что оторвал новую книгу по крутой технологии (на всякий случай дело было в 1999 или 2000 году). Дальше диалог:

      • Тех-но-ло-ги-я сом... И при чем тут рыба?

      • Читать надо - "ком". Component Object Model. Эх ты...


    1. dimm_kan
      17.04.2022 01:08

      Ты про эту?)


  1. foxweb
    14.04.2022 12:44
    +4

    По поводу дешёвого увлечения. Неделю назад я видел в продаже мануал по Mac OS X Snow Leopard (2009 год) стоимостью примерно 4000 ₽. А на соседней полке была брошюра по Perl 2000 года стоимостью 389 ₽. Эпично.


  1. joffer
    14.04.2022 13:43

    Все три книги - крутые, с удовольствием прикупил бы такое для книжной полки.

    Отдельный bookгазм по второй книге - даже не могу передать, насколько круто это выглядит + ещё вспомнилась серия журналов "Древо познания", которые тоже выпускались для похожих папок с "клещами" (или не знаю, как такое правильно называется).


  1. saipr
    14.04.2022 14:18
    +3

    Их язык был назван «Ада» в честь Ады Лавлейс

    В 1990 году во всесоюзном издательстве "Финансы и статистика" вышла книга "От Паскаля к Аде", участие в подготовке которой принимал и я:
    image


    От Паскаля к Аде/ Т.Ю.Бардинова, В.Ю.Блажнов, А.А.Маслов, В.Н.Орлов. — 1990
    Москва, Финансы и статистика, 1990. 255 с. Твердый переплет.
    Аннотация: В книге рассматриваются основные приемы программирования на языках Паскаль и Ада. Изложение материала сопровождается большим количеством примеров программ, иллюстрирующих аналогичные возможности обоих языков программирования.
    Одна из первых книг по языку программирования ADA/АДА в Советском Союзе.


    Говоря о старых книгах по программированию, нельзя не сказать о книге Эндрю Таненбаума «Operating Systems Design and Implementation», о её первом издании и о том, как в ней представлен язык Си. Оно по-прежнему актуально.


    1. ru_vlad
      15.04.2022 15:28
      +1

      Одна из первых книг по языку программирования ADA/АДА в Советском Союзе.

      Не совсем, была еще Вегнер , Программирование на языке Ада, издательство Мир 83-85 год, где то у меня в коллекции есть


      1. saipr
        15.04.2022 16:41
        +1

        В издательстве Мир издавались переводные книги. В том числе там была издана и книга, о которой вы упоминаете:


        Вегнер, Петер.
        Программирование на языке ада / П. Вегнер; Перевод с англ. Ю. Ю. Галимова, Э. М. Киуру. — М.: Мир, 1983. — 239 с.: ил.; 22 см. — (Мат. обеспечение ЭВМ).

        Перевод изд.: Programming with Ada / Peter Wegner (Englewood Cliffs, N. J., 1980)
        Программирования языки

        Я же говорю о книгах, написанных советскими авторами, на основе своего опыта программирования на языке Ада:
        image


  1. vvviperrr
    14.04.2022 18:14

    >Мы возвращаемся назад, Марти!

    тонко


  1. vvviperrr
    14.04.2022 18:16

    >BIOS Interface Technical Reference

    если я ничего не путаю, этот мануал был основной одного эпизода в halt and catch fire


  1. NeoCode
    14.04.2022 22:23

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

    Интересно, а можно где-то ознакомиться с остальными вариантами языков?


  1. artemisia_borealis
    15.04.2022 12:28

    "Кобол ЭВМ "Минск-32"
    image


  1. domix32
    15.04.2022 20:32

    gdb / rr — один из немногих инструментов разработчика конца 80-х

    Вот этот момент конечно у автора смутил, т.к. rr появился не раньше 2010 года, насколько мне известно.