Pull to refresh
1799.71
Timeweb Cloud
То самое облако

О старых книгах по программированию

Reading time6 min
Views19K
Original author: Tiemoko Ballo
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-монитора.

Темпы технического прогресса стремительно растут. И его направление непредсказуемо. Изучение прошлого необязательно облегчает предвидение будущего. Однако оно может дать богатый контекст для некоторых современных технологий. В любом случае все нынешние технологии рано или поздно превратятся в ретро-диковинку на пыльных страницах старых книг. И это, возможно, к лучшему.
Tags:
Hubs:
Total votes 22: ↑21 and ↓1+29
Comments18

Articles

Information

Website
timeweb.cloud
Registered
Founded
Employees
201–500 employees
Location
Россия
Representative
Timeweb Cloud