Программисты старой школы: преклоняться или бояться?

Программисты старой школы: преклоняться или бояться?

Свежие новости кибербезопасности стряхнули слой пыли с крепко забытого слова «Ассемблер». А мастера программирования на нем всегда умели выжимать из компьютера невозможное — и тому есть красивые, в прямом смысле слова наглядные, примеры.

Недавно Евгений Касперский опубликовал в своем блоге запись «Призраки вирус-оперы, или Ситхи Ассемблера«, посвященную сверхкомпактным и мощным вредоносным приложениям, обнаруженным недавно, но написанным в стиле 15-летней давности. Мой возраст позволяет помнить этих парней и их блестящую работу – речь ведь не обязательно о создателях вирусов, они были лишь частью программистского сообщества, специализировавшегося на «ручном» написании кода и программировании на ассемблере. Это похоже на Джедаев и Ситхов из мира «Звездных войн» – существ, чье оружие, лазерные мечи, было крайне специфическим и, несмотря на это, воспринималось всеми остальными героями как одно из самых мощных (кроме шуток, спросите Йоду). Увы, похоже, людей, которые помнят этих мастеров-программистов, осталось трое (я, Касперский и Билл Гейтс). А если серьезно – в сегодняшнем мире, где драйвер мышки занимает 50 мегабайт, довольно трудно вообразить, на что способен хакер старой школы при совсем небольшом количестве выделенных ресурсов. Поэтому я решил показать, о чем говорит Евгений, на несколько ином примере – а вы уж решайте, насколько плохи новости об «олдскульных» авторах заразы.

Калькуляторы под нагрузкой

В 1992 году компьютеры не были «мультимедийными» и представляли собой скорее калькулятор с большим экраном. На подавляющем большинстве из них не было ни микрофонов, ни приличной возможности воспроизводить звук – и, конечно, забудьте о веб-камерах. Там даже мышка была далеко не всегда, и первая сколько-нибудь популярная версия Windows, 3.1, вышла аккурат в середине весны. Но существовало несколько групп энтузиастов, которые любили трудные программистские задачи: использовать всю доступную память, систему команд процессора, а главное – каждый такт его мощности, чтобы выжать из компьютера 100% того, на что он способен. И в отсутствие звуковой карты, 3D-акселератора и всего того, что сегодня есть в каждом смартфоне, они заставляли те «калькуляторы» рисовать сложную 3D-анимацию с музыкой и спецэффектами и делать другие вещи, на первый взгляд невозможные. Демонстрация невозможного очень логично и кратко называлась «демо». Чтобы создать ее, нужно было быть действительно творческим человеком, в деталях, в том числе недокументированных, знать принципы работы системы, пить много кофе или чего покрепче, а главное – иметь заоблачный IQ. Само это движение, позже названное «демосценой», зародилось в середине восьмидесятых, но по законам эволюции рано или поздно его участникам потребовалось соревноваться между собой. Так родились фестивали-конкурсы создателей «демо», одним из крупнейших и самым известным стал The Assembly, впервые проведенный в 1992 году.

Future Crew вернулись из будущего

В 1992 году группа скандинавских программистов под названием Future Crew вместе с друзьями из групп Complex и Amiga организовали мероприятие под названием The Assembly, чтобы показать миру результаты своей впечатляющей работы на Ассемблере и посоревноваться за звание «Лучший кодер года».

Вообще говоря было несколько номинаций, но самыми интересными, примерно как «Лучший фильм» и «Лучший режиссер» на «Оскаре», стали звание «Лучшая демо для ПК», аналогичные титулы для платформ Amiga и C64, а также отдельная (и особенно интересная нам сегодня) номинация «Демо размером менее 64 килобайт для ПК». В первых номинациях требовалось продемонстрировать максимум возможностей платформы, которые можно выжать при помощи оптимального, артистичного даже, программирования. Последняя была непроста – на хранение всей программной части, всех графических и звуковых элементов отводилось всего 64 килобайта. Это, безусловно, побуждало к элегантному и экономному программированию – ведь в объем, в котором сегодня еле помещается картинка среднего размера, создатели «впихивали» мини-фильм длительностью несколько минут. В 1992 году в соревновании победила группа Future Crew с демо Unreal. Название было выбрано не зря – до тех пор никто не мог выжать из компьютера подобные графические эффекты: рендеринг сцен в трех измерениях и реальном времени, сложные физические вычисления и моделирование потоков света и т.п. А самое интересное – все-все-все для запуска демо, включая музыку, помещалось в 1 Мб! Достичь этого можно было, только мастерски программируя на Ассемблере – за внешней простотой этого языка скрывается дьявольская его сложность и трудоемкость при написании больших программ, трудно не допустить ошибок. Вот что по этому поводу говорили мне ребята из Future Crew:

Обучение программированию демо – долгий и сложный процесс. Чтобы научиться как следует, уходят годы. Можно начать с языка высокого уровня (Паскаль или Си), а затем начинать эксперименты с Ассемблером. На то, чтобы все освоить, уходит много времени, много экспериментов, и способов сократить срок не существует. Основное занятие – понять, что вы сделали, потом менять программу и следить, что получается, и набирать опыт в том, как лучше всего решать те или иные задачи. Обучение качественному программированию требует терпения, энтузиазма и тучу времени!

Те, кто тогда участвовал в соревнованиях, стали Источником Вдохновения для разработчиков позднейших приложений. Нет, у них не крали идеи, но принимали на вооружение сами подходы к решению проблем и творческое видение. Из вдохновения Assembly выросли ВСЕ современные игры, продукты Adobe для работы с видео и графикой, прогнозы погоды, GPS-приложения и Google Earth – вся многомиллиардная индустрия компьютерной визуализации.

1993 – год Second Reality и Eclipse

Успех Assembly был так велик, что на следующий год число посетителей и количество работ на конкурсе удвоилось (этот тренд сохранялся многие годы, и с 1999-го The Assembly проводится на крупнейшем футбольном стадионе Хельсинки). На нем снова – совершенно заслуженно – победила работа Future Crew. Демо «Вторая реальность», Second Reality, подняла планку качества на огромную высоту и существенно повлияла на мир программирования. Если графика вас не впечатляет, стоит вспомнить, что демо создавалась ДО появления самого первого процессора Intel Pentium и работала на компьютерах x486 БЕЗ графического ускорителя. Second Reality глубоко впечатлила жюри и все программистское сообщество, показав, чего можно достичь профессиональной работой с Ассемблером и минималистичным подходом, – скомпилированные файлы демо занимали около 1,5 Мб. Создатели, Future Crew, стали всемирно известны.

Это видео «За кулисами Future Crew» времен создания Second Reality.

В 1994 году первое место заняла демо Verses от группы EMC

Они продемонстрировали, что физические вычисления для реалистичного отображения воды и морфинг 3D-объектов вполне могут быть сделаны с помощью процессора Pentium.

А победителя в номинации 64 кб, Airframe группы Prime, можно назвать мамой и папой современных 3D-авиасимуляторов. Просто чтобы показать, как быстро эволюционировал код с развитием компьютеров, приведем всех победителей с 1995 по 2012 год:

📎📎📎📎📎📎📎📎📎📎