76403.fb2
владелец не может оставить свои программы без охраны.
Где же работает типичный настоящий программист ? Какие программы достойны таких талантливых индивидумов ? Вы можете быть уверены, что настоящий программист не умрет за написанием программы "Зарплата" на Коболе или сортируя список почтовых отправлений журнала People. Настоящий программист желает задачи с важностью землетрясения.
Настоящие программисты работают на национальную лабораторию в Лос-Аламосе, создавая программы на супер ЭВМ Cray-1, моделирующие атомную бомбу. Они так же работают на Агенство по Национальной Безопасности, расшифровывая передачи русских.
В большой степени из-за усилий тысяч настоящих программистов, работающих в NASA, наши ребята добрались до Луны и вернулись обратно, опередив космонавтов. ЭВМ в космическом корабле "Шатл" были запрограммированы настоящими программистами, и эти же истинные профессионалы работают на фирму Боинг, создавая операционные системы для крылатых ракет.
Одна из приводящих в благоговейный трепет работ настоящих программистов выполнена в Лаборатории реактивного движения, Калифорния. Многие знают всю операционную систему космических кораблей "Пионер" и "Вояджер" наизусть. С помощью симбиоза больших наземных фортрановских программ и маденьких бортовых ассемблерных, они могут совершать невероятные чудеса в навигации и импровизации - такие, как попасть в окно шириной 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 часа ночи, так что они должны уметь выживать на печенье и кофе.
Заглядывая в будущее, некоторые настоящие программисты считают, что новейшее поколение программистов имеет не такие же взгляды на жизнь, как их старшие товарищи. Многие из них никогда не видели передней панели ЭВМ. Едва-ли кто-либо из выпускников в наши дни может производить вычисления в шестнадцатиричной системе без калькулятора. Сегодняшние выпускники колледжей слабы - они защищены от реальностей жизни символьными отладчиками, редакторами текстов, которые подсчитывают скобки, и лояльными к пользователю операционными системами. Хуже того, некоторые из этих патентованных ученых умудрились "защититься" без изучения Фортрана ! Неужели нам предписано свыше стать отраслью фанатиков UNIX'а и паскалевских программистов ?
Из собственного опыта, я думаю, можно смело сказать, что будущее прекрасно для настоящих программистов. Ни OS/370, ни Фортран не высказывают ни каких признаков отмирания, несмотря на усилия программистов на Паскале. Даже такие изощренные уловки, как добавление конструкций структурного программирования в Фортран, провалились. Да, конечно, некоторые изготовители ЭВМ выпустили компиляторы Фортрана-77, но каждый из них оставил возможность перейти в режим компилятора Фортрана-66 с помощью удаления одной перфокарты - чтобы компилировать циклы DO как предписано богом.
Даже UNIX может быть не так уж плох для настоящих программистов, как в прошлом. Последняя реализация UNIX'а обладает потенциальными возможностями, ценными для любого настоящего программиста. Она имеет два различных и слегка несовместимых пользовательских интерфейса, аркан и сложный драйвер терминала, и виртуальную память. Если пренебречь тем, что он структурный, то даже программирование на языке "C" может быть по достоинству оценено настоящим программистом. В конце концов, в нем нет проверки типов, имена переменных имеют 7 (10 ?, 8 ?) символов в длину и введен полезный тип данных "указатель" (pointer). Получается, как будто соединены воедино лучшие части языка Фортран и Ассемблера, не говоря уже о более творческих применениях оператора #DEFINE.
Нет, будущее не так уж и мрачно. В последние несколько лет даже популярная пресса сообщала о новом урожае блестящих фанатиков, выпущенных из таких мест, как Стенфорд и Массачусетский Технологический Институт, в реальный мир. По всему видно, что дух настоящего программирования живет в этих молодых юношах и девушках. Пока существуют плохо поставленные задачи, странные ошибки и нереалистичиские расписания машинного времени, будут находится настоящие программисты, желающие взять на себя и решить проблему, оставив документацию на потом.
Да здравствует Фортран !