OK, Compiler

В этот день, 19 апреля, стоило бы отмечать (во всяком случае, среди инженеров и программистов) прошедшее практически незамеченным событие, чей долговременный эффект для развития человеческой цивилизации, однако, сопоставим как минимум с запуском первого искусственного спутника Земли. Впрочем, год у этих двух этапных дат совпадает. А именно, 19 апреля 1957 г. сотрудники Westinghouse получили от группы Джона Бэкуса из IBM первый в истории компилятор для высокоуровневого языка (Fortran) и проверили его работоспособность на тестовой программе. Как и следовало ожидать, не обошлось без дебаггинга.

Наверняка большинству читателей этой записи известно о существовании феномена Hello World и негативных коннотациях, связанных в профессиональном IT-сообществе с этим термином. Перелистывая грустную заметку о грузе унаследованного кода на Fortran, отягчающем спины британских ученых, я вспомнил, что FORTRAN 66, с которого, собственно, и начиналась история высокопроизводительных вычислений на суперкомпьютерах, породил поистине достойного кандидата на самую неуклюжую реализацию Hello World. В ней применялись холлеритовы постоянные.

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

У Вернора Винджа не менее ярко, чем в ранее упомянутой заметке, описаны попытки Фама Нювена нашарить дно трясины служебных программ Чжэн Хэ:

Навозная куча за отцовским замком могла показаться чистой и благовонной по сравнению с тем, что громоздилось в локальной сети Репризы. Были там программы, написанные пять с лишним тысяч лет назад, когда Человечество еще не покинуло Землю. И самое удивительное (самое ужасное, по мнению Суры) было в том, что, в отличие от бесполезных обломков канберранского прошлого, эти программы все еще работали! Через миллион миллионов перекрестных потомковых нитей многие древние программы в недрах систем Чжэн Хэ продолжали работать…
— Надо это все переписать, — сказал Фам.
— Это уже сделано, — ответила Сура, не глядя на него.
Она готовилась сдать Вахту и последние четыре дня ковырялась в автоматике капсул, пытаясь локализовать возникшую проблему.
— Это пытались сделать, — уточнил Брет, вылезая из морозильника. — Но объем кода даже на верхних уровнях флотских систем колоссален. Посадить тебя и тысячу твоих друзей на столетие за эту работу — тогда, быть может, вы бы его и воспроизвели. — Тринли зловеще усмехнулся. — И знаешь что? Даже если бы вам это удалось, к моменту, когда бы вы закончили работу, проявились бы новые нестыковки. И все равно вы бы не добились совместимости со всеми приложениями, какие нам могут понадобиться.

В начале нулевых Fortran постарались приблизить к C и С++, введя среди прочих улучшений элементы ООП и улучшив асинхронную работу, а поддержка колоссальных объемов унаследованного кода на нем — эзотеричное и высокооплачиваемое дело. Впрочем, с поддержкой кода для той же z/OS (HLASM) ему не тягаться.

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

Фото ниже иллюстрирует процесс обучения студентов программированию на Fortran с помощью перфокарт в 1970 г.

Как видим на похожем снимке из нашего времени, новое тысячелетие принесло приятные перемены. Собственно, “секретарша с интимом” — не такое уж и вредное усовершенствование, а вот побороть парадигму бумажного офиса пока не удалось.

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

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

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

LoadedDice