Из жизни первобытных программистов

С Робертом Кролем мы живем в одном доме. Но общаемся в основном через электронную почту. Так получается надежнее: люди занятые. К тому же посылаем мы друг другу именно файлы - с приколами, полезными программами и пр. Но иногда все же договариваемся (по электронной же почте) и встречаемся "живьем". И текут разговоры на кухне. На программистской кухне. До самой ночи. Под пиво или кофе. И кое-что из этих разговоров будет интересно не только нам с Робертом. Вот, например, этот разговор .

-Роберт, ты, главное, сначала ешь. А я порассказываю. Потому что это единственная возможность для меня вставить слово. Когда у тебя рот освободится, это уже будет затруднительно...

-Давай-давай. Только учти - я ем быстро!

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

-Как говорят в английском парламенте: "Слушайте! Слушайте!" Полина, ты слушаешь?

(Полина, дочь Роберта): Слушаю, слушаю!

-Несмотря на то, что мы люди не шибко старые...

-Слушайте, слушайте!

-А вы - кушайте! Так вот, практически вся история компьютеров прошла на наших глазах.

-Ну ты, Леша, и загнул! Она далеко еще не прошла! Она будет еще долго продолжаться! Я проверял!

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

-Так ты видел ламповые ЭВМ? Как я понимаю, саблезубые тигры к тому времени уже повывелись...

-Но динозавры еще были...

(Полина):А кстати, к какому поколению относится БК-0010?

-Ни к какому. Это вообще не компьютер.

-Хотя первая машина, которую я видел, Урал-1, по мощности, была, однако, послабее БК... Но это была такая монстряга! Я тогда еще учился в школе и жил в тайге, в Кошурниково. Зачем-то приехал в Красноярск, шел по проспекту Мира, жевал беляш и вдруг увидел ее в большом окне на Мира, 49. Лампы, черные шкафы под потолок. Здоровенная, на всю комнату. Кстати, Роберт, у нее хоть с килобайт памяти было?

-Было. Два. Два кило там было.

-А ты помнишь, какие там были устройства ввода-вывода?

-Еще бы! Засвеченная кинопленка!

(Полина):???????????????

-Берется засвеченная кинопленка...

-Фотопленка не подходит - она короткая, на нее мало битов влезает.

-В кинопленке колупаются дырочки. Дырка есть - единица. Дырки нет - ноль... Это называется бит.

-(Полина): Ужас!

-А чем, кстати, колупали? Что, уже перфораторы были?

-Я думаю, шилом... Но дело в том, Леша, что Урал-1 побывал у меня в руках...

-Прямо в руках?

-Да. Я не боюсь этого слова, именно в руках. Я его выкидывал. Когда я был первокурсником в Харьковском университете... а ты знаешь, что первокурсник - это прислуга за все. Круглое катать, плоское таскать, пока летит - отдыхать. Так нас отправили в ВЦ, выкинуть УРАЛ и освободить место для гораздо более современной М-220... М-220 - это было чудо в перьях! Шутка ли, проблем с отводом тепла не было! Так что я оказался могильщиком устаревшей техники... А тебе подфартило застать ее вообще живой.

-Да. Но только издали. И довольно драматично это кончилось. Я обалдел и стоял, не донеся беляша до разинутого рта. А там как раз была тогда остановка пятьдесят пятого автобуса, и вывалила из него толпа, и смяла меня и бросила вместе с беляшом на лед.

-Ты не чувствуешь замыкания спирали между тем беляшом и выхинскими пирожками?

-Еще как! Я тогда и свихнулся на компьютерах. До того они были чем-то вроде фотонных звездолетов - не шибко-то верилось, что они существуют на самом деле. А оказалось - существуют!

-А что у тебя дальше было в карьере? Если обозначить этапы большого пути?

-Дальше у меня была М-220, которую, я, правда, ни разу не видел живьем. Но программировал на ней.

(Полина): Это как же?

-Они общались путем взаимной переписки!

perfokarta.jpg (28957 bytes)

-Да, через перфораторщиц. Которых я тоже ни разу не видел. Я писал программы на языке АЛГОЛ, на бланках и куда-то там их сдавал. А так как почерк у меня был плохой...

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

-Да. Я давно уже не пишу рукой. Только на клавиатуре. Каллиграфически. Но речь не об этом. Я писал "примечание для перфораторов": этот значок понимать как букву "а" и так далее...

-И что, примечания были написаны более понятным почерком? Где ты его брал?

-В тумбочке, конечно. Потом был "Проминь".Это же был первый персональный компьютер. Он был размером с этот кухонный стол...

-Узкий, длинный...

-У него был даже дисплей... На лампочках накаливания. Десять или двенадцать цифр.

-Ну, это ты маханул. Пять. Числа были десятичные пятизначные.

-Пять? Ах да, остальные показывали адрес, еще что-то...

-И у нее было целых сто ячеек памяти.

-Или даже двести. Но самый кайф был в том, как там набиралась программа.

-Она именно НАБИРАЛАСЬ. Было такое поле с дырочками, и ты достаешь из мешка штырек, на котором написано ЗП...

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

-Все это сильно напоминало собирание детской мозаики. Причем на это уходила куча времени.

-Тебе дают машину на два часа, и ты час пятьдесят втыкаешь штырьки, а оставшиеся десять минут - вытаскиваешь их и складываешь обратно в мешок. Такая вот отладка...

-Пользуясь Жванецким, можно сказать: ты набирал по долгу, но не по долгу службы, а подолгу времени.

-Ты ощущал текст программы прямо пальцами!

-Да, особенно, если нужно было ВСТАВИТЬ команду... А значит, передвинуть все штырьки после нее.

-И не просто переставить, но и изменить адреса в командах перехода! Но обычно делалась висюлька, фестончик: переход в конец программы, на пустое поле. Там выполнялась одна команда и - переход обратно.

-До структурного программирования было еще - шагать и шагать!

-В то время мы были такими темными...

-Или, вернее, зелеными...

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

(Полина): Определение не знаю, но знаю, что это такое.

(Мы оба, обалдев): Интересно, интересно, расскажи-ка, что это такое? Ты ее видела? Где? Только не врать! Только не врать!

(Полина): Нет, я ее не видела...

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

-И такая программа есть.

-Есть такие и только такие программы. Других не бывает.

-Следствие из этого: всякая найденная в программе ошибка есть предпоследняя.

-Одним словом, когда тебе казалось, что ты все это отладил, тебя постигало великое счастье. Появилась возможность перевести это на алюминиевые перфокарты. Они был размером...

-В половину "Проминя"...

-Ну, скажем, так: с подошву ботинка 58-го размера. В машину входило тридцать перфокарт. Мы их нарубали из тонкого алюминия, а потом ковыряли в них дырки...

-И все это называлось software...

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

-И все это называлось корректировкой исходного текста.

-Какого исходного? Набивали-то прямо в машинных кодах, двоично-десятичных.. И что ты думаешь? Мы охамели до того, что брали на ней эллиптические интегралы.!

-На этой табуретке?

-Да, а что? Кстати, у меня как-то была деградация... Ну, если есть Upgrade, почему бы не быть DownGrade? Я укатился на программируемый калькулятор. На Б3-21. Ты знаешь, что я для него написал? И даже отладил! Дискретное преобразование Фурье!

-Роберт, ну ты ваще...

-Да. А за одним моим знакомым числится преобразование Лапласа на Суперкалке!

-Ну, это еще правдоподобно...

-А что, еще как преобразовывался! Лаплас в гробу перевертывался по три раза на дню! А потом была НАИРИ. Это тоже было чудо в перьях. Застать ее работающей - это можно было сразу идти и ставить Богу свечку.

-Врешь. Я видел работающую НАИРИ. Правда, один раз. У нее даже лампочки мигали. К ней даже подключались магнитофоны и АЦПУ.

(Полина): АЦПУ?

-Алфавитно-цифровое печатающее устройство.

(Полина): Принтер, что ли?

-Ну, если курица - тоже птица...

-Меня поразило другое: что не было сделано даже попытки приделать к этой машине (в общем-то персоналке, несмотря на внушительные размеры в полкомнаты) - какой-никакой дисплей. Там стоял КОНСУЛ - пишущая машинка. Когда КОНСУЛ стоит в качестве консоли на ЕС-ке - противно, но терпеть можно...

-Заложив уши ватой...

-Да, но тут это - главное и единственное устройство! И сделано это было не из-за технической невозможности (уже вовсю работали дисплейные комплексы на БЭСМ), а исключительно по недомыслию. Кому-то закатила идея, что можно иметь сразу и терминал, и печатающее устройство, и устройство ввода.

-А ты знаешь, Роберт, я первую свою игровую программу реализовал на КОНСУЛе - это была игра в рэндзю (типа крестиков-ноликов). Человек указывает координаты своего хода, а КОНСУЛ с грохотом распечатывает игровое поле девятнадцать на девятнадцать. Сколько ленты извели!

-И все-таки, первый настоящий компьютер, на котором я работал - это была ЕС-ка. Это была настоящая машина, уже хотя бы потому, что у нее была операционная система. До сих пор я удивлен, каким образом в 1963 году, фактически через 10 лет после начала более-менее пристойного программирования (первый компилятор появился в 1955 году), были сформированы концепции OS/360 группой во главе с Амдалом, издана книга "Принципы работы системы/360" (в народе эта книга известна как "книга, не содержащая ошибок и опечаток"). Это умопомрачительная книга не только потому, что в ней нет ошибок, но еще и потому, что она была издана ДО ТОГО, как вышла сама операционная система и вообще аппаратура машины, И БОЛЕЕ НЕ МЕНЯЛАСЬ НИ В ОДНОМ СЛОВЕ! Это была просто Библия! Во-вторых, замечательно было то, что концепции, заложенные во всем жизненном цикле этой системы, остались неизменными. А цикл этот продолжается уже более тридцати лет. В третьих: эти люди с самого начала замахнулись на нечто совершенно грандиозное: на многозадачную систему. Между прочим, в персоналках до сих пор только подбираются к этому. Даже OS/2 или Windows 95 нельзя считать по-настоящему многозадачной системой. Я уже не говорю о системных службах, которые были заложены в OS/360. Конечно, у нее был ужасающий интерфейс, этот самый JCL... Мы умудрялись делать в нем ошибки после многих лет ежедневной и непрерывной работы.

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

-А тот, кто овладел, тут же преисполнялся мании величия

-Машины ряда 1 работали из рук вон плохо.

-Среднее время наработки на сбой на нашей ЕС-1022 было 24 минуты. То есть каждые полчаса она вываливалась. Чтобы у нее посыпалась память, достаточно было пройти рядом, даже на цыпочках. Я до сих пор закомплексован настолько, что сохраняю файлы на диске каждые пять минут.

-Когда много лет спустя мне довелось поработать на IBM 4381, электронщик мне сказал: "Как только мы ее купили, по привычке завели гроссбух, который назывался ДИСКОВЫЕ СБОИ. Книга до сих пор осталась чистой. В ней не было ни одной записи." При том это была БУ, секонд хэнд. Уму непостижимо: у нее была дисковая память три гигабайта. Непосредственно перед этим мы работали на 1052 с ШЕСТНАДЦАТЬЮ 29-мегабайтными дисководами. Это был конец света!

-Для тех, кто не знает: 29 мегабайт помещались в этакой кастрюле диаметром почти в полметра и весом килограммов десять...

-И бедные девочки-операторы ворочали эти кастрюли туда-сюда...

-А ты видел, как приходилось тормозить эти диски? Тормоза в дисководах, как правило, были сломаны...

-А как же! Открываешь крышку, поплюешь на пальцы, и ...

-У нас это называлось тормозить лаптей...

(Полина): а плевать зачем?

-Так ведь диск крутится черт знает со сколькими оборотами в минуту... Пальцы дымятся!

-И вот знаешь, Леша, я до сих пор не могу найти объяснения - не то, что дефицит ресурсов порождает изобретательность, но мне кажется, что мы работали более осмысленно, на более высоком уровне. Профессионализм определяется по качеству работы. Почему я до сих пор убежден в том, что Билл худо кончит. Он пренебрегает культурой программирования. Он пренебрегает теорией. И это очень плохо. Мне могут сказать: этот парень умеет делать деньги. Именно он сумел собрать сотни молодых гениев в Рэдмонде. Да, он сумел их собрать, но кем они станут, когда перестанут быть вундеркиндами? И с чем останемся мы? Умирает культура многозадачного программирования. Ее просто нужно возрождать заново. Порождена генерация программистов, которые считают, что любую задачу можно пробить, если подольше сидеть у машины. Просто в силу общего высокого логического уровня.

-Таких программистов я видел сколько угодно за последние двадцать лет...

-Да, но я что-то не вижу в последнее время программистов, которые стремились бы решать задачи профессионально, то есть не любой ценой, а минимальной. Не мегабайтами! Один мой приятель пишет из Америки, что он неплохо прирабатывает на том, что ставит скази-диски на 1,3 гигабайта. Это здорово. Что в этом плохого? Но извини меня, монстры, которые порождаются, они что, хорошо работают?

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

-(с иронией): а человеческие дорожают?

-Да, человеческие дорожают.

-И ты при этом честно смотришь мне в глаза?

-Они дорожают относительно машинных ресурсов...

-Очень важная поправка!

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

-Ну, раз ты настаиваешь, получай! У меня как раз есть свободный грузовик камней, и я намерен все их перекидать через забор и все в твой огород

-Поехали!

-Как нас учат авторитеты, надо завсегда отделять котлеты от мух. Если мы говорим о программах базовых, о программах, лежащих в основе, то их надо вылизывать до зеркального блеска. Если же мы говорим о пользовательских программах, и если мы отдаем себе отчет в том, что легенда об одноразовых программах - это не более, чем легенда... Я прекрасно понимаю, что времена ручного программирования, так же как времена ручного изготовления ружей, проходят. Американцы невероятно чтут некоего Эйли Уитни, изобретшего хлопкоочистительную машину и задержавшего отмену рабства на 60 лет, ибо сделал производство хлопка снова рентабельным. Но чтут они его не за это. Они считают, что Уитни изобрел американский способ производства, когда изготавливаются стандартные детали с взаимозаменяемостью. Именно это позволило ему выполнить заказ на изготовление 10000 мушкетов, у которых затворы подходили друг к другу, а не подгонялись индивидуально, как в старые добрые времена. Но тем не менее растет ценность сделанного руками. Мы хотим, чтобы профессия программиста осталась (а я абсолютно уверен, что она останется ныне, присно и во веки веков, как не умирает профессия врача). Надежду мне дает то, что программирование знает свое место - это инженерное ремесло. Именно ремесло, поскольку оно делается руками, и именно инженерное, по определению инженер - человек, целью деятельности которого является перевод материи из одного состояния в другое. Если эту витиеватую мысль привести к общему знаменателю, то вот: если мы хотим, чтобы наша профессия осталась жить, она должна быть ПРОФЕССИЕЙ, то есть в ее основе должны лежать те же три кита: теория, практика и фольклор. Обрати внимание: фирма Microsoft не обогатила мир ничем из теории. Почему IBM, которой мы тоже не кидаемся на шею...

-Трудно любить такого монстра. Оно такое большое-большое

-Большое и голубое. Но IBM не гнушается содержать редакционный совет, который издает в год от шести до восьми больших и солидных книг и платит стипендии авторам, чтобы те могли их написать. Я мог бы с ходу назвать полтора десятка книг этой серии, которые сформировали мое мировоззрение как программиста. Чем осчастливила программистскую профессию Microsoft, кроме не своих компиляторов, кроме не своей СУБД FoxPro? У меня мышление не черно-белое, и я готов сказать хорошо о таких могучих вещах, как Word или Excel, да вообще MS OFFICE. Мне очень нравится то, что делает Word, но мне не нравится, что он периодически падает. У меня машина не с такими уж худыми ресурсами! 486 DX2/50 с 8 мегабайтами, но он ведь падает!

-OS/360 тоже падала...

-Она падала из-за отказов в аппаратуре. Нам так и не удалось увидеть выведенную из себя СВМ. Это была невыбиваемая вещь! Меня смущает то, что сырые продукты создаются на интуиции и на гениальности их создателей. Но ведь за ними остается выжженная земля! Если OS/360 оставила за собой шлейф идей, людей, что оставляет за собой Windows?

-Ха! А вообще за последние десять лет что-нибудь крутое из теории, было? Ну, положим, ООП, а что еще? Вообще в мире, не только у Microsoft, которая как раз лет пятнадцать и существует? Тебе не кажется, что программирование и использование компьютеров просто стало чем-то другим? Открытия в области паровых машин следовали одно за другим, а потом там все устаканилось... Так может быть, Роберт, у нас просто все устаканивается, и открытий больше не будет?

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

-На профессионалов высокого класса, способных разрабатывать большие сложные системы, спрос как раз и не растет.

-В итоге мы имеем то, что имеем.

-Если раньше, чтобы склепать АСУ завода, нужна была орда специалистов, теперь же требования к квалификации понизились, а сами задачи, вообще говоря упростились. Они упростились опять-таки не абсолютно, а относительно. Сводные таблицы, которые мы программировали пятером полгода, обычный пользователь делает тремя движениями мышки. Формы и отчеты в каком-нибудь Paradox можно сделать "на раз", вместо того, чтобы корябать их на PL/1.

-Это здорово, но меня все время мучает вот что: с чем и как пойдет в бой новое поколение программистов? Оно растет...

-Из хакерья

-Именно из хакерья. Мне нравится это слово. Они программируют, не отходя от экрана. Сеансовая работа, при всех ее неудобствах, заставляла ДУМАТЬ.

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

-Так вот, кому мы сдаем свои программистские окопы? Те окопы, в которых мы отстреливаемся от энтропии?

(продолжение следует)


Опубликовано частично:Красноярский комсомолец 4 ноября 1995
© Алексей Бабий 1995