Одна из приводящих в благоговейный трепет работ настоящих программистов выполнена в Лаборатории реактивного движения, Калифорния. Многие знают всю операционную систему космических кораблей "Пионер" и "Вояджер" наизусть. С помощью симбиоза больших наземных фортрановских программ и маденьких бортовых ассемблерных, они могут совершать невероятные чудеса в навигации и импровизации - такие, как попасть в окно шириной 10 км в кольце Сатурна после 6-ти лет полета в космосе и починить или обойти неисправные сенсорные платформы, радиопередатчики или аккумуляторы. Утверждают, что один настоящий программист умудрился засунуть прграмму распознавания образов в несколько сот байт неиспользованной памяти корабля "Вояджер", которая осуществляла поиск, обнаружила и сфотографировала новую луну Юпитера.
Одна из планируемых задач для корабля "Галлилей" - использовать притяжение Марса на траектории полета к Юпитеру. Эта траектория проходит в 80 +/- 3 км от поверхности Марса. Никто не собирается доверить паскалевской программе или программисту такую навигационную задачу.
Многие из настоящих программистов всего мира работают на правительство США, в основном в Министерстве Обороны. Так и должно быть. Однако, недавно на небосклоне настоящих программистов появилась черная туча. Кажется, что кто-то из высокопоставленных сосунков в Министерстве Обороны решил, что все оборонные программы должны быть написаны на некоем великом унифицированном языке ADA. Некоторое время казалось, что ADA была предназначена стать языком, который шел вразрез со всеми правилами настоящего программирования. Это язык со структурой, типами данных, строгим синтаксисом и точками с запятой. Короче, он был разработан для сдерживания творчества типичного настоящего программиста. К счастью, язык одобряемый Министерством Обороны, обладает достаточно интересными свойствами, которые делают его приемлемым - он невероятно сложен, включает в себя способы порчи операционной системы и перераспределения памяти, и Эдгар Дейкстра (Edsgar Dijkstra) не любит его. Дейкстре, как вы должны знать, автору краеугольной работы по методологии программирования "GOTO - считать вредными", апплодируют программисты на Паскале и подобные им сосунки. Да и потом, закоренелый настоящий программист может написать фортрановскую программу на любом языке.
Настоящий программист может пойти на компромис со своими принципами и работать над вещами немного более тривиальными, чем распад жизни, при условии, что здесь достаточно платят. Например, существует несколько настоящих программистов, разрабатывающих видео-игры в Atari. Но они сами в игры не играют. Настоящий программист знает, как выиграть у машины, и в этом нет пряного удовольствия. Каждый работающий в LucasFilm является настоящим программистом, потому, что нужно быть сумасшедшим, чтобы отвергнуть деньги 50-ти милионов поклонников Звездных войн (Star Wars).
Доля настоящих программистов, занятых машинной графикой, несколько ниже нормы в основном потому, что никто пока не нашел ей применения. С другой строны, вся машинная графика выполнена на Фортране, так что существует определенное число людей, занимающихся графикой для того, чтобы избежать программирования на Коболе.
В общем случае настоящий программист развлекается так же, как и работает - с помощью ЭВМ. Он не перестает удивляться тому, что его работодатель платит ему за то, что он все равно бы делал для развлечения, хотя он достаточно осторожен, чтобы высказать это мнение вслух. Иногда настоящий программист выходит из конторы, чтобы глотнуть свежего воздуха или кружечку -другую пива. Существует несколько признаков, по которым можно узнать настоящего программиста за пределами машинного зала :
- на вечеринке настоящие программисты это те, кто сидит в
углу, обсуждая защиту операционных систем и как ее обойти;
- на футбольном матче настоящий программист сравнивает ход
игры с "проигровками", распечатанными на фальцованной 11
или 14-дюймовой бумаге;
- на пляже настоящий программист рисует блок-схемы на песке;
- настоящий программист ходит в диско-клуб, чтобы посмотреть
мигание лампочек;
- на похоронах настоящий программист изрекает : "Бедный
Джордж. А ведь он почти заставил работать программу
сортировки, когда его хватил инсульт";
- в бакалейном магазине настоящий программист настаивает
на собственноручной проверке банок на лазерном аппарате,
т.к. он не верит, что операторы могут правильно отперфо
рировать данные с первого раза.
В каких условиях лучше всего работается настоящему программисту ? Это очень важный вопрос для начальников настоящих программистов. Учитывая высокую стоимость содержания одного такого в штате, лучше создать ему или ей оптимальные условия.
Типичный настоящий программист живет перед дисплеем ЭВМ. Вокруг этого дисплея расположены листинги программ, над которыми он когда-либо работал. Они складированы в кучи приблизительно в хронологическом порядке на каждой плоской поверхности конторы. Вы так же обнаружите полдюжины, или около того, наполовину выпитых чашек с холодным кофе. Иногда в кофе можно обнаружить плавающие "хабарики" сигарет. В некоторых случаях в чашках находится выжатый апельсин. И только в тех случаях, когда программист не очень хорош, вы увидите экземпляры руководства OS JSL и принципов работы, открытых на особо интересных страницах. Приклеенный клейкой лентой, на стене висит распечатанный на АЦПУ календарь с собачкой Снуппи за 1969 год. На полу разбросаны обертки от хлеба с сыром и земляными орехами (такого, который становится черствым уже в пекарне, так что не может стать хуже в торговых автоматах). И, наконец, в верхнем левом ящике стола, под коробочкой Oreos, находится линейка-шаблон для вычерчивания блок-схем, оставленная предыдущим владельцем стола. Настоящие программисты пишут программы, а не документацию, которую они оставляют штату сопровождения.
Настоящий программист может работать по 30, 40 и даже 50 часов непрерывно, под интенсивным нажимом. На самом деле, он и предпочитает так работать. Плохое время отклика не беспокоит настоящего программиста; он получает возможность вздремнуть между трансляциями. Если график выполнения работы не очень жесткий, то настоящий программист предпочитает делать свою жизнь более захватывающей, работая первые 9 недель над маленькой, но интересной частью проблемы. Затем, он заканчивает выполнение всей остальной части за 2 или 3 50-часовых марафона. Это не только впечатляет начальника, но и создает удобное оправдание не делать документацию. В общем случае, ни один настоящий программист не работает с 9 до 5, за исключением тех, кто работает в ночную смену. Настоящие прграммисты не носят галстуков. Настоящие программисты приходят на работу вовремя к обеду. Настоящий программист может знать, а может и не знать имя своей супруги. Он, однако, знает наизусть таблицу ASCII (или EBCDIC) символов. Настоящие программисты не умеют готовить. Бакалейные магазины не часто открыты в 3 часа ночи, так что они должны уметь выживать на печенье и кофе.