О настоящих программистах и не только...

Старинная сага о настоящих программёрах

Толкование некоторых терминов
согласно Новому словарю хакера

compiled by Eric S. Raymond
перевод с английского языка Е.В.Ашариной
Издательство ЦентрКом, 1996
141700, Московская обл., г.Долгопрудный, Институтский пер. 9

История Мела, Настоящего Программиста

Грустная притча Л. Г. Бунича

На мою страничку


Из русского перевода "Нового словаря хакера"

ABEND
BASIC
blinkenlights (мерцающие огоньки)
byte (байт)
cracker (взломщик)
documentation (документация)
fear and loathing (страх и отвращение)
green card (зеленая карта)
hexadecimal (шестнадцатиричный)
infant mortality (детская смертность)
management (мэнеджмент)
menuitis (менютина)
MicroDroid
paper-net (бумажная сеть)
pessimal (пессимальный)
PIP
program (программа)
quantum bogodynamics (квантовая дебилодинамика)
rat belt (крысиный ремень)
Real Programmer (настоящий программист)
salescritter (торговая тварь)
smoke test (проверка на дым)
suit (костюм)
time bomb (бомба с часовым механизмом)
Trojan horse (Троянский конь)
user-friendly (дружественный для пользователя)
Winchester (Винчестер)
worm (червь)

слова переместил Максим Петров


ABEND [ABnormal END]

ABEND / ah'bend / [ABnormal END], сущ. Аварийное завершение программы. Термин происходит от сообщения об ошибке на IBM 360; если хакерами используется с оттенком иронии, то кододробильщиками абсолютно серьезно. Обычно пишется заглавными буквами, но может встречаться и как 'abend'. Хакеры попытаются навязать вам собственную теорию о происхождении этого термина. По пятницам ближе к вечеру операторы норовят организовать крах системы, напоминая заработавшимся хакерам, что пора домой; система выводит на экран 'ABEND', следовательно, 'abend' - это вечер (от немецкого 'Abend' = 'вечер').


BASIC

BASIC, сущ. Разработанный в начале 60-х годов для Дартмутской экспериментальной системы с разделением времени язык программирования. С тех пор стал причиной головной боли не для одного поколения хакеров. Являет собой еще один пример Плохого Дела (Bad Thing) и вместе с Паскалем демонстрирует, что может произойти, если язык, задуманный как обучающая игра, начинает восприниматься всерьез. Новичок может, не напрягаясь, написать коротенькую (10 - 20 строк) программу на Бэйсике, но разработка более длинных программ на Бэйсике (а) занятие очень болезненное и (б) прививает дурные привычки, которые сослужат плохую службу в дальнейшем, когда программист перейдет на настоящие языки программирования. Все это не было бы так печально, если бы по исторической случайности Бэйсик не стал так широко использоваться на микроЭВМ, тем самым ежегодно губя тысячи потенциальных магов от программирования.


blinkenlights (мерцающие огоньки)

blinkenlights / blink'*n-li:tz / (искаж. 'перемигивающиеся огоньки'), сущ. Лампочки диагностики на передней панели компьютера, в основном на динозаврах. Своим происхождением термин обязан последнему слову известного объявления о правилах поведения в машинном зале, написанного на псевдонемецком языке (одно время плакат с этим объявлением украшал чуть ли не все машинные залы англоязычного мира). Одна из версий этих правил выглядит так:

ACHTUNG! ALLES LOOKENSPEEPERS!

Das computermachine ist nicht fuer gefingerpoken und mittengrabben. Ist easy schnappen der springenwerk, blowenfusen und poppencorken mit spitzensparken. Ist nicht fuer gewerken bei das dumpkopfen. Das rubbernecken sichtseeren keepen das cotten-pickenen hans in das pockets muss; relaxen und watchen das blinkenlichten.

Впервые этот образец народной мудрости появился в 1959 году в Стэнфордском университете. После того, как в начале 60-х годов о нем пришло сообщение с узла ATLAS Лондонского университета, можно считать, что он стал достоянием международной общественности. Существует великое множество вариантов этих правил, и некоторые из них действительно кончаются словом 'blinkenlights'.

Спустя некоторое время немецкие программисты отыгрались, предложив собственный вариант этого объявления. На этот раз оно было написано на ломаном английском с немецким акцентом. Один из вариантов этого произведения предложен ниже:

ATTENTION

This room is fullfilled mit special electronische equippment. Fingergrabbing and pressing the cnoeppkes from the computers is allowed for die experts only! So all the "lefthanders" stay away and do not disturben the brainstorming von here working intelligencies. Otherwise you will be out thrown and kicked anderswhere! Also: please keep still and only watchen astaunished the blinkenlights.

В переводе на русский с немецким акцентом это звучит примерно так:


byte (байт)

byte / bi:t / (байт) [технояз.], сущ. Объем памяти или количество информации, необходимое для представления одного символа (литеры); на современных компьютерах равняется как правило, 8 битам, но бывают и 9-битные байты на ЭВМ с длиной машинного слова 36 бит. На некоторых старых моделях байтом называлась последовательность из 6 или 7 битов, а на PDP-10 байтом могла называться любая последовательность длиной от 1 до 36 битов! В наше время в таком значении термин почти не встречается, и даже 9-битную последовательность практически никогда уже не называют байтом.

Историческая справка. Впервые этот термин появился в 1956 году на ранних стадиях проектирования компьютера Stretch фирмы IBM. Обозначал последовательность битов длиной от 1 до 6 (стандартное оборудование ввода-вывода работало в те времена с 6-битными 'кусками' информации). Переход на 8-битные байты произошел в конце 1956 года, а после операционной системы System/360 вообще был взят за стандарт. Само слово 'byte' является искажением от 'bite' (кусок, откусывать), чтобы не путать его с 'bit', пришлось заменить одну букву.


cracker (взломщик)

cracker (взломщик), сущ. Человек, который взламывает систему безопасности. Термин ввели сами хакеры в 1985 году в знак протеста против журналистов, неправильно употребляющих слово 'хакер'. Между прочим, все попытки 'прогрызть ход' в USENET в 1981-82 годах оканчивались неудачей.


documentation (документация)

documentation (документация), сущ. Многие килограммы вымоченной, размолоченной, высушенной, отбеленной и спрессованной древесины, которые прилагаются к математическому и аппаратному обеспечению компьютеров. Хакеры редко пользуются бумажной документацией и сопротивляются до последнего, если их заставляют ее писать; предельно краткая документация в виде файла более предпочтительна. Многие аргументируют свое нежелание возиться с бумагой лозунгами 'зеленых': "Я не могу заставить себя листать убитые деревья".

fear and loathing


fear and loathing (страх и отвращение)

fear and loathing (страх и отвращение) [Охотник Томпсон]. Состояние души хакера в те моменты, когда ему предстоит работа с системами или стандартами, которые можно назвать издевкой над здравым смыслом, но которые по непонятной иронии судьбы стали общепринятыми. К ним относятся процессоры Intel 80x86, язык COBOL, код EBCDIC, а также любая техника фирмы IBM за исключением Rios (RS/6000). "Они хотят, чтобы IBM PC могли общаться с машинами искусственного интелекта. Времена страха и отвращения!"


green card (зеленая карта)

green card (зеленая карта) [по цвету шпаргалки о машинных инструкциях в документации System/360 IBM], сущ. Обобщенное название краткого справочника по командам ассемблера. В наши дни используется гораздо реже, т.к. на ассемблере почти никто не пишет. "Надо посмотреть мою зеленую карту, хочу проверить режим адресации в этой инструкции." Некоторые зеленые карты представляют собой сложенную гармошкой книжечку или брошюру.

После появления System/370 все зеленые карты стали желтыми. В IBM любят рассказывать историю, действие которой проходило в 1978 году, когда один лузер невольно стал свидетелем разговора между программистами. Один спросил: "У тебя есть зеленая карта?", на что второй буркнул утвердительно и протянул первому увесистую желтую брошюру. Лузер недоумевающе посмотрел на них, подошел к окну, отдернул штору нежно-оливкового цвета и быстро вышел из комнаты, чтобы никогда больше не вернуться.

fear and loathing


hexadecimal (шестнадцатиричный)

hexadecimal (шестнадцатиричный), сущ. Число в системе счисления с основанием 16. До начала 60-х годов это слово произносили 'сексадесимал' и слышать его от замшелых и чопорных манагеров IBM было очень весело.

На самом деле в английском языке ни один из терминов, используемых для названия систем счисления, нельзя назвать корректным с точки зрения этимологии. Если возьмем в качестве парадигмы 'binary' (для двоичной системы), то по правилам грамматики десятичная система должна будет называться 'denary' (от латинского 'deni' - десятый), а соответствующим названием шестнадцатиричной системы счисления будет 'sendenary'. 'Decimal' означает порядковое числительное, поэтому соответствующим префиксом для 6 будет что-то типа 'sextidecimal'. Префикс 'sexa-' латинского происхождения, в данном контексте он не подходит, а 'hexa-' имеет греческое происхождение. Слово 'octal' (восьмеричный) тоже построено неправильно, корректной формой могло бы быть 'octaval' (по аналогии с decimal) либо 'octonary' (по аналогии с binary). Если когда-нибудь будет придумана машина с тройкой в качестве основания системы счисления, ученым придется поломать головы над тем, какой вариант из двух выбрать: 'ternary' или 'trinary' (с точки зрения грамматики оба совершенно правильные).


infant mortality (детская смертность)

infant mortality (детская смертность), сущ. Для хакеров непреложным считается закон, по которому вероятность возникновения неожиданных отказов и неисправностей в новом компьютере падает по экспоненте в зависимости от продолжительности эксплуатации (конечно, этот закон работает только до тех пор, пока механический износ устройств ввода/вывода и температурно-циклическое напряжение электронных компонентов не накопятся до такой степени, что приходится уже говорить об одряхлении машины). Более половины всех плат и перемычек в новой системе летят в первые несколько недель, что позволяет говорить о проблеме детской смертности или даже о синдроме неожиданной детской смертности.


management (мэнеджмент)

management (мэнеджмент), сущ.

  1. Элита многочисленной армии чиновников; к характерным чертам относятся отстраненность от продуктивной деятельности и хроническая неспособность руководить работой других людей.
  2. В мистическом контексте, огромная армия чиновников-бюрократов, причина всего зла на Земле.

Иногда хакеры под явным влиянием романа Иллюминаты помечают шутливые объявления и предупреждения 'The Mgt'.


menuitis (менютина)

menuitis / men`yoo-i:'tis / (менютина), сущ. Болезнь программного обеспечения, разработчик которого был одержим идеей 'менютизации' интерфейса с пользователем и не предусмотрел никаких управлящих символов. По мнению хакеров, ничего кроме раздражения такие интерфейсы не вызывают, поэтому хакеры предпочитают более гибкие интерфейсы, реализованные в виде командной строки или в виде специального языка управления (обычно их делают в виде макросов).


MicroDroid

MicroDroid [USENET], сущ. Служащий Microsoft, который посылает сообщения в различные newsgroups, специализирующиеся по защите операционных систем от нападок пользователей. MicroDroid также пишет комментарии ко всем жалобам, поступающим в Microsoft. К концу своей карьеры он становится похожим на приходящих на дом мормонов-миссионеров.


paper-net (бумажная сеть)

paper-net (бумажная сеть), сущ. Хакеровское название обычной почтовой связи. Любые аналогии с настоящей сетью возможны только в том случае, если последняя работает ненадежно и очень медленно. В USENET нередко перед почтовым адресом отправителя в именном блоке (sig block) ставится заголовок 'Paper-Net'; возможны варианты 'Paper-net' и 'P-Net'.


pessimal (пессимальный)

pessimal (пессимальный), [антоним 'оптимальный', образованный сходным образом от латинского корня], прил. Максимально скверный. 'Пессимальная ситуация.' Глагольная форма 'пессимизировать' означает делать самым плохим способом из всех возможных. Оба эти слова являются очевидными антонимами слов 'оптимальный' и 'оптимизировать', но почему-то ни в одном словаре английского языка их нет, хотя в Оксфордском словаре слово 'пессимизировать' упоминается.


PIP (программа обмена между периферийными устройствами)

PIP / pip / [Peripheral Interchange Program (программа обмена между периферийными устройствами)], гл.; устар. Копировать. По названию программы PIP в операционных системах CP/M, RSX-11, RSTS/E и OS/8 (сначала это было название утилиты для PDP-6), которая использовалась для копирования файлов, а в системах OS/8 и RT-11 с ее помощью выполнялись все файловые операции. Говорят, что когда эта программа только появилась (1963 год), она называлась ATLATL, что расшифровывалось как "Все, что угодно, Господи, ко всему, что угодно, Господи".


program (программа)

program (программа), сущ.

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


quantum bogodynamics (квантовая дебилодинамика)

quantum bogodynamics / kwon'tm bo`goh-di:nam'iks / (квантовая дебилодинамика), сущ. Теория, описывающая Вселенную в терминах дебилонов, их источников [а это прежде всего политики, продавцы подержанных автомобилей, телевизионные евангелисты и все функционеры (см. suit) вообще], поглотителей дебилонов (компьютеры, налогоплательщики и т.п.) и потенциально дебильных полей. Процесс поглощения дебилонов сопровождается всеобщим одебиливанием: компьютеры начинают ломаться, а люди - совершать бессмысленные поступки. В отдельных случаях одебиленные объекты могут сами выступать как источники дебилонов, позволяя говорить о вторичном излучении. К настоящему моменту все еще не существует строгой математической модели этих процессов, и механика взаимодействия дебилон - компьютрон остается чисто описательной, но с позиций квантовой дебилодинамики легко объясняется резкое увеличение отказов аппаратных и программных модулей в присутствии функционеров: функционеры в огромном количестве излучают дебилоны, компьютеры вынуждены их поглощать.


rat belt (крысиный ремень)

rat belt (крысиный ремень), сущ. Если открыть крышку монитора и посмотреть внимательно, то можно увидеть, что в качестве зажима для пучка проводов иногда используется самоблокирующийся пластиковый ремешок с зубчиками, который невозможно снять, не разрезая - он и называется крысиным ремнем. Встречаются другие разновидности зажимов - свитые из проволоки или крошечные однородные металлические клипы. Маленький ремешок для связывания кабелей называется мышиным ремнем.


НАСТОЯЩИЕ ПРОГРАММИСТЫ НЕ ИСПОЛЬЗУЮТ ПАСКАЛЬ

Datamation

В прошлом, во времена золотой эры ЭВМ было легко отличить мальчика от мужа (иногда их называют "сосунки" и "настоящие мужчины", соответственно). Тогда настоящие мужчины были те, кто понимал в программировании, а сосунки те, кто не понимал. Настоящий программист легко произносил такие фразы, как "DO 10 I=1,10" и "АВОСТ", а все остальные нечто вроде "ЭВМ слишком сложны для меня" и "Я не могу полагаться на ЭВМ - они слишком безличны". Предыдущая работа (B. Feirstein) "Настоящие мужчины не употребляют фруктовый пирог", публикация Pocket Book, 1982, отмечает, что настоящие мужчины ни на что не "полагаются" и не боятся быть обезличенными.

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

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

Самый простой способ определить, кто является настоящим программистом - по используемому языку программирования. Настоящие программисты используют Фортран, сосунки используют Паскаль. Никлауса Ворта, разработчика Паскаля, однажды спросили: "Как Вы произносите свою фамилию?" "Вы можете обращаться ко мне по фамилии, произнося ее Вирт, или обращаться ко мне по значению, произнос Ворт" - ответил он. (игра слов: Niklaus Wirht произносится так же, как английское слово "Worth" - стоящий, ценный - прим. пер. - здесь и далее Алекс Пяткин)

Исходя из этой ремарки любой сразу скажет, что Никлаус Ворт - сосунок. Единственный механизм передачи параметров, принимаемый настоящим программистом - это передача параметров по значению, как это реализовано в компиляторах Фортрана G и H ЭВМ IBM/370. Настоящим программистам для выполнения работы не нужны абстракные концепции; для счастья им достаточно перфоратора, компилятора Фортрана IV и пива. Настоящие программисты пишут программы работы со списками, обработки строк, учета ресурсов и искуственного интеллекта на Фортране. Если Вы не можете выполнить эти работы на Фортране, выполните их на ассемблере. Если же их нельзя выполнить на ассемблере, их не стоит делать вообще.

В последние несколько лет академиков от вычислительной техники вовлекли на стезю структурного программирования. Они утверждают, что программы становятся более понятны, если используются специальные языковые методы и конструкции. Они, конечно, не могут договориться между собой, какие точно конструкции следует использовать, а примеры, иллюстрирующие их точку зрения, всегда помещаются на одной страничке неизвестных журналов. Когда я окончил школу, считал себя самым лучшим программистом в мире. Я мог написать непобедимую программу игры в крестики-нолики в трехмерном пространстве на пяти различных языках программирования, а так же написать программу из 1000 строк, которая бы работала. Затем я попал в реальный мир. Моей первой задачей было прочитать и понять фортрановскую программу емкостью в 200 000 строк, а затем увеличить скорость ее работы в 2 раза. Любой настоящий программист скажет вам, что все структурное программирование мира не поможет вам рещить проблему вроде этой - решений этой задачи требует настоящего таланта.

Несколько наблюдений о настоящих программистах и структурном программировании:

  • настоящие программисты не боятся использовать GOTO;
  • настоящие программисты могут без смущения написать цикл DO на пяти страницах;
  • настоящие программисты любят арифметические операторы IF, т.к. их использование делает программу более интересной;
  • настоящие программисты используют самомодифицирующий код, особенно в тех случаях, когда это экономит 20 наносекунд в середине очень короткого цикла;
  • настоящие программисты не нуждаются в комментариях; текст программы все объяснит;
  • поскольку в Фортране отсутствуют структурные операторы IF, REPEAT ... UNTIL, или CASE, настоящим программистам не надо беспокоиться о том, что они их не используют. Кроме того, эти операторы можно при необходимости симулировать с помощью присваиваемых GOTO.

В последнее время в прессе муссируются структуры данных. Абстрактные типы данных, структуры, указатели, списки и строки стали популярны в определенных кругах. Ворт, сосунок, даже написал целую книгу (Алгоритмы + структуры данных = программы, Prentice Hall, 1976) в которой утверждает, что можно написать программу на базе структур данных, не используя другие способы. Как все настоящие программисты знают, единственной полезной структурой данных является массив.

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

В какой операционной системе работает настоящий программист? CP/M? Боже сохрани! Помимо всего прочего, это в основном игрушка, а не операционная система. Даже маленькие старые дамы и абитуриенты могут работать в CP/M и понять ее. Unix, конечно, более сложная операционная система - типичный последователь Unix'а никогда не может запомнить, как на этой неделе вызываетс программа print - но когда он доберется до нее, Unix становится восхитительной видеоигрой. Люди не делают серьезных работ на Unix'е; они рассылают шутки по всему миру по UseNet или пишут приключенческие игры и исследовательские работы.

Нет, настоящий программист использует OS/370, хороший программист может найти и понять описание только что полученного сообщения об ошибке IJK3051 в руководстве по JCL. Великий программист может написать задание на JCL без заглядывания в руководство. По настоящему знаменитый программист может найти ошибки в распечатке шестимегабайтной области памяти, не используя калькулятор шестнадцатиричной системы счисления.

OS/370 по настоящему удивительная система. В ней возможно уничтожить работы стоимостью несколько человеко-дней с помощью одного неправильно помещенного пробела, так что штат программистов всегда должен быть начеку. Наилучший способ общения с системой - через перфоратор. Некоторые утверждают, что в OS/370 существует система разделения времени, но после внимательного изучения я пришел к выводу, что они ошибаются.

Какие инструменты использует настоящий программист в своей работе? Теоретически, настоящий программист может запускать свои программы, набирая их на передней панели ЭВМ. В добрые, старые времена, когда ЭВМ имели передние панели, этот метод использовался время от времени. Типичный настоящий программист знал наизусть начальный загрузчик в шестнадцатиричной системе и восстанавливал его с пульта, когда он разрушался его программой. Более того, память была памятью - ее содержимое не пропадало при выключении питания. В настоящее время память либо забывает факты, когда вы этого не хотите, либо помнит о вещах, которые давно следовало бы забыть. Ходит легенда, что Seymour Cray, изобретатель суперЭВМ Cray 1 и большинства ЭВМ фирмы Control Data, ввел с пульта наизусть первую операционную систему ЭВМ CDC 7600 при первом включении этой ЭВМ. Конечно, Cray - настоящий программист.

Одним из моих любимых настоящих программистов был системный программист фирмы Texas Instruments. Однажды ему по междугородке позвонил пользователь, чья система разрушилась в процессе выполнения очень важной работы. Джим (так звали системного программиста из фирмы Texas Instruments - прим. переводчика) исправил систему по телефону, заставив пользователя набирать на передней панели ЭВМ команды обращения к диску, исправлять системные таблицы в шестнадцатиричной системе и считывать ему по телефону содержимое регистров. Мораль этой истории: хотя настоящий программист обычно включает в набор своих инструментов перфоратор и АЦПУ, он может в экстренных случаях обойтись передней панелью и телефоном.

В некоторых фирмах редактирование текстов программ не представляет собой очередь из 10 инженеров, ожидающих освобождения перфоратора 029. Более того, здание, где я работаю, не содержит вообще ни одного перфоратора. Настоящий программист в таких условиях должен выполнять работу с текстового редактора. Большинство систем предлагают на выбор несколько текстовых редакторов, но настоящий программист должен быть очень осторожным в выборе редактора, отражающего его индивидуальность. Многие думают, что наилучшие текстовые редакторы в мире были написаны в исследовательском центре фирмы Xerox в Palo Alto для работы с ЭВМ марок Alto и Dorado.

К сожалению, ни один настоящий программист не будет работать на ЭВМ с операционной системой SmallTalk ("Краткая беседа") и, конечно же, не будет общаться с ЭВМ с помощью мышки. ("мышка" - это устройство ввода в ЭВМ, по форме напоминающее мышь, с помощью которого можно вводить координаты экрана дисплея - прим. переводчика)

Некоторые из концепций этих редакторов фирмы Xerox реализованы в редакторах, работающих в операционных системах с более солидным названием, таких как Emacs и Vi. Беда с этими редакторами заключается в том, что настоящий программист считает плохим следующий принцип редактора: "То, что вы видете, это то, что вы получите". Настоящий программист желает редактор с принципом: "Вы это просили, вот вам"; т.е. редактор, который был бы сложным, шифрованным, мощным, непрощающим и опасным. Редактор TECO - чтобы быть точным.

Было замечено, что последовательность команд к TECO больше напоминает помехи в линии передач, чем читабельный текст. Одна из самых развлекательных игр с TECO: напечатать в качестве командной строки свою фамилию и попытатьс догадаться, что он сделает. Точно так же, любая возможная опечатка при работе с TECO может разрушить вашу программу, или хуже того, внести неуловимые и мистические ошибки в уже работающую подпрограмму.

Из-за этого настоящие программисты неохотно редактируют почти работающие программы. Они считают более простым непосредственно латать двоичный объектный код, используя прекрасную программы под названием SuperZap (или ее эквивалент на не IBM мащинах). Этот метод настолько хорош, что многие программы, работающие на ЭВМ фирмы IBM не имеют ничего общего с символьным текстом на Фортране. В большом количестве случаев первоначальный символьный текст программы вообще не существует. Когда наступает время подправить такого рода программу, никакой администратор даже не подумает послать на эту работу кого-либо, кроме настоящиго программиста - никакой сосунок - структурный программист не будет даже знать с чего начать. Это называется защита от несанкционированного доступа.

Некоторые, не используемые настоящим программистом средства программирования:

  • Препроцессоры Фортрана, такие, как MORTRAN и RATFOR. Эти кулинарные рецепты в программировании хороши для выпечки фруктового пирога.
  • Отладчики для работы с текстом программы. Настоящие программисты могут свободно читать распечатку оперативной памяти.
  • Компиляторы с проверкой границ массивов. Эти компиляторы душат творчество, запрещая использовать наиболее интересные варианты оператора EQUIVALENCE и препятствуют модификации операционной системы с помощью отрицательных индексов массивов. Кроме всего прочего, контроль границ массивов неэффективен.
  • Системы сопровождения и архивизации символьных текстов программ. Настоящий программист хранит тексты своих программ в закрытом на замок ящике (на перфокартах), т.к. владелец не может оставить свои важные программы без охраны.

Где же работает типичный настоящий программист? Какие программы достойны таких талантливых индивидуумов? Вы можете быть уверены, что настоящий программист не умрет за написанием программы "Зарплата" на Коболе или сортируя список почтовых отправлений для журнала People. Настоящий программист желает задачи с важностью землетрясения.

Настоящие программисты работают на национальную лабораторию в Лос-Аламосе, создавая программы на суперЭВМ Cray I, моделирующие атомную бомбу. Они также работают на Агенство Национальной Безопасности, раскодируя передачи русских.

В большой степени из-за усилий тысяч настоящих программистов, работающих на NASA наши парни добрались до Луны и вернулись обратно, опередив космонавтов. ЭВМ в космическом корабле Shuttle были запрограммированы настоящими программистами, и эти же истинные профессионалы работают на фирму Боинг, создавая операционные системы для крылатых ракет.

Одна из приводящих в благоговейный трепет настоящих программистов работ выполнена в лаборатории реактивного движения, Калифорния. Многие из них знают операционную систему космических аппаратов "Пионер" и "Вояджер" наизусть. С помощью симбиоза больших наземных фортрановских программ и маленьких бортовых ассемблерных они могут совершать невероятные чудеса навигации - такие, как попасть в щель шириной 10 км в кольце Сатурна после 6-ти лет полета в космосе и починить или обойти неисправные сенсорные платформы, радиопередатчики и аккумуляторы. Утверждают, что один настоящий программист умудрился всунуть программу распознавания образов в несколько сот байт неиспользуемой памяти аппарата "Вояджер", которая осуществляла поиск, обнаружила и сфотографировала новый спутник Юпитера.

Одна из планируемых задач для космического аппарата "Галилей" - использовать притяжение Марса на траектории полета к Юпитеру. Эта траектория проходит в 80 +-3 км от поверхности Марса. Никто не собирается доверять паскалевской программе или программисту такую навигационную задачу.

Многие из настоящих программистов всего мира работают на правительство США, в основном в министерстве обороны. Так и должно быть. Однако, недавно на небосклоне настоящих программистов появилась черная туча. Кажется, что кто-то из высокопоставленных сосунков в министерстве обороны решил, что все оборонные программы должны быть написаны некоем великом унифицированном языке под названием Ада. Некоторое время казалось, что Ада была предназначена стать языком, который шел в разрез со всеми правилами настоящего программирования. Это язык со структурой, типами данных, строгим синтаксисом и точками с запятой. Короче, он был разработан для сдерживания творчества типичных настоящих программистов. К счастью, язык, одобренный министерством обороны, обладает достаточно интересными свойствами, которые делают приемлемым - он невероятно сложен, включает в себя способы порчи операционной системы и перераспределения памяти и Эдгар Дейкстра не любит его. Дейкстре, как вы должны знать, автору краеугольной работы по методологии программировани "GOTO считать вредным", аплодируют программисты на Паскале и другие им подобные сосунки. Да и потом, закоренелый настоящий программист может написать фортрановскую программу на любом языке. Настоящий программист может пойти на компромисс со своими принципами и работать над вещами немного более тривиальными, чем распад жизни, при условии, что при этом достаточно платят. Например, существует несколько настоящих программистов, разработавших видеоигры в Atari. Но они сами в игры не играют. Настоящий программист знает как выиграть у машины и в этом нет пряного удовольствия. Каждый работающий на Lucas Film является настоящим программистом, потому что надо быть сумасшедшим, чтобы отвергнуть 50 миллионов долларов поклонников "Звездных войн".

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

В общем случае, настоящий программист развлекается также, как и работает - с помощью ЭВМ. Он не перестает удивляться тому, что его работодатель платит ему за то, что он все равно бы делал бы для развлечения, хотя он достаточно осторожен, чтобы высказывать это мнение вслух. Иногда, настоящий программист выходит из здания конторы, чтобы глотнуть свежего воздуха и кружечку или пару пива. Существуют несколько признаков, по которым можно узнать настоящего программиста за пределами машинного зала:

  • на вечеринке настоящие программисты это те, кто сидит в углу, обсужда защиту операционных систем и как ее обойти;
  • на футбольном матче настоящий программист сравнивает ход игры с "проигровками", распечатанными на фальцованной 11 или 14-ти дюймовой бумаге;
  • настоящий программист ходит в диско-клуб, чтобы посмотреть на мигание лампочек;
  • на похоронах настоящий программист изрекает: "Бедный Джордж, а ведь он почти заставил работать программу сортировки, когда его хватил инсульт";
  • в бакалейном магазине настоящий программист настаивает на собственноручной проверке банок на лазерном кассовом аппарате, потому что не верит, что операторы могут правильно набить данные с первого раза.

В каких условиях лучше всего работается настоящему программисту? Это очень важный вопрос для начальников настоящих программистов. Учитывая высокую стоимость содержания одного такого в штате, лучше создать ему или ей оптимальные условия. Типичный настоящий программист живет перед дисплеем ЭВМ. Вокруг этого диспле расположены листинги программ, над которыми он когда-либо работал. Они складированы в кучи приблизительно в хронологическом порядке на каждой плоской поверхности конторы. Вы также обнаружите полдюжины, или около того, наполовину выпитых чашек с холодным кофе. Иногда в кофе можно обнаружить плавающие "хабарики" сигарет. В некоторых случаях в чашках содержится выжатый апельсин. И только в тех случаях, когда он (программист) не очень хорош, вы увидите экземпляры руководства по JCL и принципов работы, открытых на наиболее интересных страницах. Приклеенный клейкой лентой, на стене висит распечатанный на АЦПУ календарь с "девочками" за 1969 год. На полу разбросаны обертки от хлеба с сыром и земляными орехами (такого, который становится черствым уже в пекарне, так что он не может стать хуже в торговых аппаратах). И, наконец, в верхнем левом ящике стола, под коробкой oreos, линейка-шаблон для вычерчивани блок-схем, оставленная предыдущим владельцем стола. Настоящие программисты пишут программы, а не документацию, которую они оставляют штату сопровождения.

Настоящий программист может работать 30, 40 и даже 50 часов непрерывно, под интенсивным нажимом. На самом деле, он предпочитает так работать. Плохое врем отклика не беспокоит настоящего программиста; он получает возможность вздремнуть между трансляциями. Если график выполнения работы не очень жесткий, то настоящий программист предпочитает делать свою жизнь более захватывающей, работая в течении первых девяти недель над маленькой, но интересной частью проблемы. Затем он заканчивает выполнение остальной части за два или три пятидесятичасовых марафона. Это не только впечатляет начальника, но и создает удобное объяснение не делать документацию. В общем случае: ни один настоящий программист не работает с 9 до 5, за исключением тех, кто работает в ночную смену. Настоящие программисты не носят галстуки. Настоящие программисты не носят обувь на высоких каблуках. Настоящие программисты приходят на работу вовремя, к обеду. Настоящий программист может знать, а может и не знать имя своей супруги. Он, однако, знает наизусть таблицу ASCII (или EBCDIC) символов. Настоящие программисты не умеют готовить. Бакалейные магазины не часто открыты в три часа ночи, так что они должны уметь выживать на печенье и кофе.

Заглядывая в будущее, некоторые настоящие программисты считают, что новейшее поколение программистов имеет не такие же взгляды на жизнь, как их старшие товарищи. Некоторые из них никогда не видели передней панели ЭВМ. Едва ли кто-либо из выпускников в наши дни может производить вычисления в шестнадцатиричной системе без калькулятора. Сегодняшние выпускники колледжей слабые - защищенные от реальной жизни символьными отладчиками, редакторами текстов, которые подсчитывают скобки, и лояльными к пользователю операционными системами. Хуже того, некоторые из этих патентованных ученых вычислительной техники умудрились "защититься" без изучения Фортрана! Неужели нам предписано свыше стать отраслью фанатиков Unix'а и паскалеевских программистов?

Из своего собственного опыта, я думаю, можно смело сказать, что будущее прекрасно для настоящих программистов. Ни OS/370, ни Фортран не выказывают никаких признаков отмирания, несмотря на усилия программистов на Паскале. Даже такие изощренные уловки, как добавление конструкций структурного программирования в Фортран, провалились. Да, конечно, некоторые изготовители ЭВМ выпустили компиляторы Фортрана 77, но каждый из них оставил возможность перейти в режим компилятора Фортрана 66 с помощью удаления одной перфокарты - чтобы компилировать циклы DO как предписано Богом.

Даже Unix может быть не так уж плох для настоящих программистов, как в прошлом. Последний тираж Unix'а обладает потенциальными возможностями, ценными для любого настоящего программиста. В этом тираже имеются два различных и слегка несовместимых пользовательских интерфейса, Аркан и сложный драйвер терминала, и виртуальная память. Если пренебречь тем, что он структурный, то даже программирование на языке Си может быть оценено по достоинству настоящим программистом. В конце концов, в нем нет проверки типов, имена переменных имеют семь (десять? восемь?) символов в длину и введен полезный тип данных "указатель" (pointer). Получается, как будто соединены воедино лучшие части языка Фортран и ассемблера, не говоря уж о наиболее творческих применениях оператора #define.

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

Да здраствует Фортран!

Ed Post

Wilsonville, Oregon

перевел Пяткин А.С., Ленинград, 1.03.1984

новую реинкарнацию текста произвел Максим Петров


salescritter (торговая тварь)

salescritter (торговая тварь), сущ. Пренебрежительный хакеризм для продавцов компьютеров. Хакеры любят рассказывать такой анекдот:

Вопрос: В чем разница между продавцом подержанных автомобилей и продавцом компьютеров?
Ответ: Продавец подержанных автомобилей знает, что он обманывает покупателей.

Анекдот отражает глубинную убежденность хакеров в том, что непременным качеством продавцов компьютеров является тупость: если бы у них имелось в достаточном количестве серое вещество, а также желание им время от времени пользоваться, они обязательно стали бы программистами. Сюда относятся также понятия salesdroid и salesthing.


smoke test (проверка на дым)

smoke test (проверка на дым), сущ.

  1. Оставшийся с доисторических времен способ проверки электронного оборудования в процессе переконфигурации или ремонта, который сводится к элементарной подаче напряжения на данный модуль и визуальной проверке, нет ли искрения, дыма или других явных признаков неработоспособности.
  2. В более общем смысле первый прогон программы (после написания или после внесения существенных изменений).

Этой же терминологией пользуются работники типографий, когда нужно проверить новый шрифт: сначала отдельную букву коптят над пламенем свечи, а затем прижимают к бумаге.


suit (костюм)

suit (костюм), сущ.

  1. Жутко неудобная одежда 'деловых людей', которую носят многие, за исключением хакеров. В число обязательных аксессуаров костюма входит так называемый галстук - устройство, предназначенное исключительно для удушения и частично перекрывающее ток крови к головному мозгу. Возможно, именно этим объясняются некоторые особенности в поведении любителей ходить в костюмах.
  2. Всевозможные функционеры; люди, которые по привычке всегда носят костюмы.

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


time bomb (бомба с часовым механизмом)

time bomb (бомба с часовым механизмом), сущ. Разновидность logic bomb. Она срабатывает в определенное, заранее установленное время (один раз или периодически). Существует множество легенд о том, как программисты устанавливали time bombs на машинах своих начальников, при этом бомбы срабатывали в том случае, если программист переставал регулярно регистрировать свое присутствие (например, если его уволили или отстранили от работы на некоторое время).

Замечательно то, что всего один такой случай подтвержден документально и произошел он в Советском Союзе в 1986 году! Расстроенный чем-то программист, работавший на ВАЗе (завод, где выпускают нечто, напоминающее Fiat, и называют это Ладами), установил такую бомбу и уехал в отпуск, а через неделю она сработала и на целый день остановила основную линию сборки. Этот случай привлек большое внимание, поскольку это была первая хакеровская выходка, закончившаяся судом. Беднягу приговорили к трем годам лишения свободы.


Trojan horse (Троянский конь)

Trojan horse (Троянский конь) ['подкован' Дэном Эдвардсом, MIT-хакером, ставшим кошмаром для NSA], сущ. Программа, предназначенная для несанкционированного доступа к системе или разрушения всей системы безопасности, которая внешне 'подделывается' под вполне безобидную программу - игрушку, архиватор, программу чтения каталога или даже (как это произошло в 1990 году с Макинтошем) под программу поиска и уничтожения вирусов!


user-friendly (дружественный для пользователя)

user-friendly (дружественный для пользователя), прил. Враждебный для программиста. Обычно хакеры неодобрительно относятся к подобным системам, поскольку они провоцируют пользователя на достаточно рискованные и болезненные (для системы) эксперименты.


Winchester (Винчестер)

Winchester (Винчестер), сущ. Неформальное обобщенное название дисководов магнитных дисков с 'плавающей' головкой, в которых головка чтения-записи плавает над поверхностью диска на воздушной подушке. Первый дисковод такого типа был разработан в 1973 году (IBM 3340) для работы с двумя 30-мегабайтными дисками; поначалу разработчики называли его между собой "30-30", но потом кто-то из них заметил аналогию с параметрами известного карабина [первая цифра в "30-30" для карабина типа Винчестер означает калибр, вторая - вес в гранах (1 гран = 0.065 г) порохового заряда], поэтому дисковод тоже стали называть Винчестером.


worm (червь)

worm (червь) [от 'tapeworm' (ленточный червь) в романе Джона Бруннера Бешеный мотоциклист, XEROX PARC], сущ. Программа, распостраняющая копии самой себя по сети. Современное отношение к программам такого толка резко отрицательное, считается, что сегодня их пишут только взломщики (см. cracker). Возможно, самой известной программой-червем была написанная в 1988 году Робертом Т. Моррисом программа 'Internet Worm', которая вывела из строя сотни машин класса VAX и Sun по всей Америке. См. также Trojan horse.


История Мела, Hастоящего Программиста

Эта эпическая поэма была отправлена в USENET ее автором Эдом Hэсером (utastro!nather) 21 мая 1983 года.

В одной из недавних статей, посвященной мужеству профессии программиста, без всяких затей автор провозгласил:
Hастоящий Программист пишет только на ФОРТРАHе.

Возможно, кто-то еще занимается этим
в нашу декадентскую эпоху
осветленного пива, карманных калькуляторов и
"дружелюбных интерфейсов", но в старые добрые времена,
когда слово "софтвер" звучало как-то странно,
а Hастоящие Компьютеры делались из барабанов и вакуумных ламп,
Hастоящие Программисты работали в машинных кодах.
Hе на ФОРТРАHе. Hе на RATFORe. И даже не на ассемблере.
Просто машинные коды.
Hичем не прикрашенные, тупые сырые шестнадцатиричные числа.

Уже выросло целое поколение программистов,
которые ничего-то не знают о нашем славном прошлом.
И я понял, что должен заполнить эту брешь,
я должен рассказать молодым о том,
как писал свой код Hастоящий Программист.
Я буду называть его Мелом,
потому что так его звали на самом деле.

Я познакомился с Мелом, перейдя на работу
в Королевскую МисиБи Компьютер Корпорэйшн,
которая ныне уже не существует,
а в те времена была ого-го!
Фирма производила LGP-30,
очень маленький и очень дешевый компьютер
(конечно, по стандартам тех дней),
в котором использовалась барабанная организация памяти,
и только-только приступала к производству RPC-4000,
большого, продвинутого и более быстрого
компьютера и тоже с барабанной памятью.
Память на магнитных сердечниках в те времена стоила очень дорого, -
возможно, поэтому вы никогда ничего и не слышали
ни об этой компании, ни об этом компьютере.

Я должен был писать компилятор ФОРТРАHа
для этой супермашины,
а Мел стал моим руководителем.
Он никогда не одобрял компиляторы.
Он вопрошал меня: "Hу что хорошего может быть в программе,
которая не умеет даже изменить свой код?"

В шестнадцатиричных машинных кодах
Мел написал
самую популярную программу
из всех, что только имелись у компании.
Ее запускали на LGP-30 на разных компьютерных выставках,
и она начинала играть с потенциальными покупателями
в Блэк-Джека
и всегда производила фурор.
Hа каждой выставке вокруг павильона LGP-30
толпились продавцы из IBM,
но мы никогда не ломали себе головы над тем,
хорошо или нет продаются наши компьютеры.

Мел должен был переписать
свою игрушку для RPC-4000.
(Порт? А что это такое?)
В новой машине использовалась
адресация по схеме "один плюс один",
поэтому в каждую машинную инструкцию
кроме кода операции
и адреса нужного операнда
входил второй адрес, который указывал,
где на вращающемся барабане
записана следующая инструкция.

Говоря современным языком,
после каждой команды выполнялся оператор GO TO!
Засуньте все это в трубку Паскаля и выкурите.

Мел любил RPC-4000,
потому что он умел оптимизировать код для нее:
он записывал машинные инструкции на барабане таким образом,
что сразу после того, как завершалось выполнение
одной инструкции, под считывающей головкой
мгновенно оказывалась следующая,
и процессор мог сразу приниматься за выполнение этой команды.
Была специальная программа, которая все это делала,
и называлась она "оптимизирующий ассемблер",
но Мел отказывался пользоваться ею.

"Hикогда не знаешь, по какому адресу она записывает команду", -
объяснял он мне, - "поэтому пришлось бы использовать отдельные константы".

Прошло много времени, прежде чем я смог понять его слова.
Поскольку Мел знал наизусть численное значение
каждой команды
и всегда сам назначал адрес команды на барабане,
он мог каждую свою инструкцию
использовать как численную константу.
Hапример, он мог вытащить из памяти старую инструкцию "add"
и умножить на нее.
Hелегко пришлось бы человеку,
который бы вздумал что-то поменять в его программе!

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

Это происходило потому,
что в те далекие времена еще не был придуман метод
программирования "сверху-вниз",
и поэтому Мелу не нужно было им пользоваться.
Сначала он писал самые критические внутренние циклы,
благодаря чему в дальнейшем мог выбирать
наиболее оптимальные адреса на барабане.
Hикакой оптимизирующий ассемблер не смог бы так сделать.

Мел никогда не вставлял в свои программы
пустые циклы для задержки,
даже когда приходилось писать для допотопного Flexowriter,
который требовал, чтобы при выводе символов
всегда была пауза между двумя символами,
иначе он захлебывался.
Мел так расположил свои команды в памяти,
что каждый раз, как требовалась задержка,
следующая инструкция оказывалась позади считывающей головки
ровно на одну позицию,
поэтому барабану приходилось совершить полный круг,
чтобы найти нужный адрес.
Он даже придумал свой термин для этой процедуры.
Мы знаем, что есть универсальный термин "оптимальный";
для отрицания иногда говорят "неоптимальный"
или "не совсем оптимальный",
или даже "не очень оптимальный".
Мел назвал максимальную задержку по времени
для поиска нужного адреса на барабане
"самой пессимальной".

Вскоре после того как программа была сдана
("Даже инициализация оптимизирована", - гордо сказал он),
из отдела сбыта пришел Запрос на Изменение.
Для сдачи карт и выбора следующей карты из колоды
в программе использовался элегантный
(и тоже оптимизированный)
генератор случайных чисел,
и некоторые маркетоиды решили,
что это уж чересчур честно -
игроки и машина были уравнены в шансах,
поэтому потенциальные покупатели могли оказаться в проигрыше!
Они потребовали от Мела,
чтобы тот немного изменил свою программу,
чтобы можно было ее останавливать
и с помощью специального консольного переключателя
выбирать из колоды нужную карту.
Тогда покупатель сможет всегда выигрывать!

Мел заартачился.
Он чувствовал, что это будет явным мошенничеством
и скомпрометирует его как программиста,
поэтому он отказался это делать.
Сначала Мела уговаривал Главный Маркетоид,
затем за дело взялся Главный Босс,
и вслед за тем, как Мел не испугался и Хозяина,
заставил тот за дело взяться
тех программистов, кто ходил в друзьях у Мела.
И наконец Мел сдался.
Он переписал программу
и вставил в нее некий тест,
который проверял, включен ли переключатель,
и если приходило "да",
то в этом случае программа
умела мухлевать не хуже человека,
когда смонтирован был новый переключатель,
то оказалось, что теперь выигрывает только программа!
Мел, не скрывая восхищения,
провозгласил: "Теперь все честно"
и с гордым видом отказался
вносить любые исправленья.

Конечно, Мел уволился.
Спустя неделю Биг Босс призвал меня в свой кабинет
и повелел исследовать программу Мела
и попытаться обнаружить этот тест.
А в случае удачи нужно было мне выбросить его; что делать?
Поупиравшись сколько можно было, я согласился -
но в конце концов, одно лишь изучение
любой программы Мела
ничуть не хуже самых невероятных приключений!

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

Сначала я испытал шок, обнаружив,
что в главном цикле программы нет никакого теста.
Hет теста. Hикакого.
Здравый смысл подсказывал, что где-то должен быть цикл,
в котором крутится программа,
возможно, бесконечно.
Hо нигде управление не передавалось на этот цикл.
Две недели ушло у меня на то, чтобы понять, в чем дело.

Машина RPC-4000 имела прогрессивное по тем временам средство,
которое называлось индексным регистром.
Это позволяло программисту организовывать циклы
с помощью индексированных инструкций:
каждый раз содержимое индексного регистра
добавлялось к адресу операнда,
и это позволяло обращаться к следующему элементу данных в массиве.
Каждый раз нужно было всего лишь увеличивать на один
содержимое индексного регистра.
Hо Мел никогда этим не пользовался.

Вместо этого он заталкивал инструкцию в регистр,
добавлял единицу к ее адресу
и прятал назад, в память.
После этого он мог выполнять эту измененную инструкцию
прямо из регистра.
Цикл был организован таким образом,
что учитывалось дополнительное время,
которое тратилось на выполнение этой инструкции, -
как только она завершалась,
следующая оказывалась точно под считывающей
головкой барабана, готовая к тому,
чтобы ее прочитали и выполнили.
Hо и в этом цикле не было никакого теста.

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

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

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

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

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


Грустная притча Л.Г.Бунича

Л. Г. Бунич

Грустная притча о том, как хорошо работать с новыми операционными системами ЕС ЭВМ.

"Представьте себе, что вы покупаете мебель..."
М.А.Перегудов, "Системные программисты - откуда и зачем?"

Ред. 1.1 Москва, Киев 1985

24 февраля

Наконец-то! Обменял свое тесное помещение на новую, двухкомнатную квартиру улучшенного проекта: "SVC 6.1/M9". Она мне очень понравилась: красивая, удобна для жилья и работы.

1 марта

Начал переселяться. Несколько озадачен. Дверь слишком узка, часть нашей мебели не влезает. Выбросил шкаф, сервант, стол. Ничего, куплю новые. Диван протащить удалось, но выяснилось странное и необъяснимое обстоятельство: как только я на него сажусь, гаснет свет во всей квартире. Придется тоже заменить. Жалко, очень удобный был диван. Теперь таких не выпускают.

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

На кухне у плиты огромная ниша с плохо замазанной надписью: "For kitchen combine". Начинаю подозревать, что дом проектировали совсем не для нашей местности. У нас землетрясений не бывает.

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

14 марта

Долго мучился с розетками. Во избежание поражения током все они закреплены под самым потолком. Я просил штатного электрика подвести пока ток к розетке радиосети, которая мне совершенно не нужна, но он сказал, что дом устроен так: если отключить радиосеть, начинает выть пожарная сигнализация, так что лучше потерпеть, месяцев через семь-восемь они должны получить розетки исполнения 02, которые можно прикрепить к стене в любом месте специальным клеем. Правда клей пока плох, и держаться розетки все равно не будут.

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

Хожу по квартире с опаской. Все время натыкаюсь на острые углы. Время от времени со звоном вылетает паркетина. Диван выбросил, но свет все равно гаснет.

19 апреля

Слава Богу, хоть телефон теперь починили. Мастер сказал, что он был подсоединен к телевизионному кабелю. Но телевизор теперь вообще ничего не принимает, даже Индию.

Сосед сказал, что в моей квартире должна быть третья комната. На плане ее нет, потому что план старый, новый появиться года через полтора. Теперь понятно, для чего дверь в конце коридора. Где бы найти к ней ключ? Обращался в ЖЭК, но там, как обычно, ни черта не знают.

Смотрел объявления об обмене.

26 мая

Все-таки мне везет! Обменял эту паршивую квартиру. Завтра переезжаю. Замечательный дом, проект СВМ-2.0, современнейшие удобства, простор, автоматика. Планировка свободная, легко перестраивается. Например, на моем этаже располагаются индейский вигвам, бамбуковый шалаш и две курные избы.

Разрешается делать что угодно. Например, разводить костры прямо в коридоре. Звукоизоляция абсолютная.

29 мая

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

Курные избы возмутительно дымят, дышать совершенно нечем. Зато с мебелью проблем никаких, хотя комнаты пустые. Как только вам нужен стул или шкаф, дежурный оператор немедленно направляет вам требуемый предмет из числа наличных. Это называется "виртуальная мебель".

30 мая

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

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

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

16 июня

Скоро конец квартала. Храп в пещере стал беспокойным, время от времени перемежается неразборчивыми словами. Запасся продуктами на две недели.

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

Завтра пойду смотреть объявления об обмене.