История программирования в СССР. Часть II.
В этой части
007. Быт программиста. Призвание
010. Восьмидесятые. Мини-ЭВМ
011. Unix & C. Гамбургский счет
012. Unix и Искра. Начало
013. Легенды и мифы древних компьютеров
014. Программисты-профессионалы и программирующие инженеры
007. Быт программиста. Призвание
Однако, вернемся к быту, к житейским мелочам. А то стал было рассказывать о перфокартах и... понесло меня из Тирасполя в Тверь, а оттуда – в подсчеты евреев на душу населения. Да что же это я никак не закончу о простейшей вещице, о кусочке желтого картона, на котором были размечены 80 колонок и десять рядов, да сверху два неразмеченных ряда – итого двенадцать… Два важных умения должны быть у советского программиста по части карт: читать их и «фиксать». Читать, это понятно что такое: взять карту и на просвет по дырочкам прочитать, что на ней пробито.
Я помню две системы перфорации. Одна применялась на БЭСМ-6: перфокарта заполнялась построчно, слева-направо и сверху-вниз; символ кодировался комбинацией пробивок в семи соседних позициях; каждая восьмая колонка была разделительной – в ней пробивок не было. Такая система частенько называлась «сидисишной», поскольку была позаимствована у фирмы Control Data Corp. С другой стороны, старики говаривали, что она использовалась еще на совсем древних машинах и была чисто советской разработкой. Поди сейчас разбери, кто прав... Для удобства чтения применялись «читалки» – это такие карты, у которых были пробиты все дырочки во всех колонках, кроме восьмой, шестнадцатой и т.д. И еще эти разделительные колонки для пущего разделения графились карандашом. Читалка накладывалась на карту, зоны символов четко выделялись и читались так же легко, как если бы текст был напечатан... Другая система применялась в ЕС ЭВМ и пришла, понятное дело, из IBM, которая разработала ее еще в двадцатых годах прошлого века. Там символ кодировался одной или несколькими пробивками в колонке, так что номер колонки точно соответствовал позиции символа в строке...
Бытует легенда, что при строительстве первых железных дорог в Европе их прокладывали по трассам старых еще римских дорог, вписывая в существующие габариты мостов и туннелей. Дескать, поэтому железнодорожная колея равна колее римской колестницы (и соответственно – ширине римской дороги), которая была законодательно стандартизирована еще Юлием Цезарем. А поскольку габариты всех перевозимых по железной дороге грузов (контейнеров, танков, ракет) определяются размером колеи, то и выходит, что определяются они артефактом двухтысячелетней давности (злые языки добавляют, что размером лошадиной задницы они определяются, ибо впрягаемая в колесницу пара гнедых аккурат вписывалась в колею)...
Вот так и в современных компьютерах продолжает жить артефакт XIX века – перфокарта. Все виденные мной текстовые дисплеи вмещали в строке ровно 80 символов – размер перфокарты. Сейчас, на громадном графическом дисплее видишь окно какой-нибудь программы: и сколько же символов можно ввести в поле? Кто бы сомневался – 80... Но вернемся перфокартам, точнее к кодировкам символов на них, которые определялись стандартом с малоприличным названием «ебздиц» (EBCDIC). Цифры там кодировались одной пробивкой в колонке, буквы латинского алфавита – двумя, прочие символы – тремя и более. Запомнить коды было легко, но... тяжело отслеживать саму колонку на карте, глаз легко мог перескочить на соседнюю. Читалки с вертикальной разграфкой мало помогали и их редко использовали. Короче, читать такие карты было занятием утомительным. Вы спросите, а на кой ляд их вообще читать? Правильный вопрос. У изнеженных американцев перфораторы вместе с дырочками еще и надпечатывали текст по верхней кромке карты. Но величие нашего народа в том и заключается, чтоб с изумляющей иноземца сметкой победно преодолевать собственноручное рукосуйство. Печатающий механизм в перфораторе, конструкция которого была цельнодранная с иноземного образца, сочли баловством, барской забавой и упразднили стараниями какого-то безвестного рационализатора (думаю, все шпионы, считая со штабс-капитана Рыбникова, все вредители, враги народа, включая «шакалящих у посольств» литераторов, все они вместе взятые не нанесли великой державе и тысячной доли того вреда, что учинили рационализаторы-изобретатели)...
У каждого программиста были в запасе заботливо подготовленные, проверенные и тщательно подписанные «управляющие карты», с помощью которых он запускал на выполнение те или иные программы. Но беда в том, что мы постоянно писали тексты новых программы и готовили пакеты тестовых данных. Дальше их перфорировали барышни-операторы или мы сами, это неважно. Невозможно подготовить сотню карт и не сделать опечатки. Поэтому, колода скармливалась компьютеру и специальная программа обнаруживала ошибочные карты. Теперь надо было найти их в колоде и «пофиксать», т.е. исправить опечатки – закрыть ненужные дырочки и продырявить нужные. О, это было высокое искусство, ныне безвозвратно утраченное...
Тут (в который уже раз) надобно пояснить несведущему читателю, а зачем вообще перфокарты надобно фиксать. Ведь дырочки в них пробиваются на клавишном перфораторе. Ну и чего бы оным не воспользоваться, не заменить всю карту? Эге, как это у вас, нонешних, все просто... Перфораторы, они где стоят? Правильно, в группе подготовки данных. А кодекс законов о труде (КЗОТ), он что гласит? Правильно, работа во вторую-третью смену разрешается только на предприятиях непрерывного цикла и на особо важных производствах. Ну, полная комната барышень, в ожидании женихов колотящих по клавишам, это что, особо важное производство? То-то же! И чего отсюда следует? А того, что ровно в 17:00 барышни идут домой, а все перфораторы – под замок. А ЭВМ, между прочим, работает круглосуточно, как особо ценный ресурс, и ты – программер – выходишь «на время», например, с 22-х до 6-ти утра. А перфораторы... вон там они, за запертой дверью. Конечно, если начальник ВЦ – человек, он один аппарат в машинный зал для нас поставит. А если он – советский человек, тогда... фиксай, программер, свои перфокарты.
Так вот, высокое искусство заключалось в том, что умелец читал карту, находил место, где надобно исправить, ловко вырезал недостающие дырочки (тут необходим был остро заточенный скальпель) и залеплял лишние, для чего использовался продукт жизнедеятельности перфоратора – маленькие, как опилки, картонные прямоугольнички, которые перфоратор «выбивал» из карты, делая в ней отверстия. У запасливого программера с собой была коробочка с этим добром. А нет, так подойди к «бармалею» – компьютерному перфоратору, нажми кнопку – он мигом тебе навалит пригорошню этих опилок. Так что, вперед, лепи. Но... только всухую! Использовать клей, слюнить палец – это безнадежное ламерство. Ловко прихватить на кончик пальца крохотный прямоугольничек (он приставал к пальцу, цепляясь к коже ворсинками картона), точно встромить его в отверстие и, повернув палец, загладить ногтем (при этом ворсинки по периметру стыка надежно переплетутся). На всю операцию – секунда. Кстати, иной раз попадали в руки импортные перфокарты – гладкие, твердые, глянцевые, точь как игральные карты. Так вот, в них дырочки не фиксались, хоть плачь. Видно материал был таков, что ворсинки по краям перфорации не образовывались. Как, думаете, американские программисты обходили это ужасное неудобство. Не поверите, они еще в 60-е все пересели за экраны дисплеев. Ну, и что эта расслабуха им дала? Как начали отваливать на Запад наши закаленные бойцы, так все преотлично там устроились, потеснив аборигенов. А почему? А потому, что все умели (спасибо родной Советской власти!), даже перфокарты фиксать голыми руками...
Заканчивая с картами, расскажу историю, приключившуюся со мной в Харькове. Это было одно из последних моих рандеву с ЕС ЭВМ. Приехали мы с напарником вечером, уже затемно – дело было поздней осенью. Дождище льет, не переставая. Дали нам адрес (инструкцию как добраться) какой-то металлобазы, где нас ждал компьютер и где мы могли за ночь все подготовить, а утром явиться уже на официальную приемку. На вокзале сели в автобус и долго-долго куда-то ехали. За окном, за сплошной пеленой дождя только огни витрин можно было различить. И по тому, как этих огней становилось все меньше и меньше, как все реже и тусклее светили уличные фонари, мы догадывались, что едем на какую-то окраину, за город, к черту на рога. А потом и вовсе чернильная мгла за окном; автобус остановился — «конечная» — мы вылезли под дождь. Ни души, промзона, сверху льет, под ногами хлюпает и мрак вокруг. Куда мы попали? Спросить не у кого. Оставалось точно следовать указаниям: триста метров вперед, свернуть направо... «Блин! Куда сворачивать, забор... А-а-а, вон туда»... Наконец, чуть ли не на ощупь, добрались вроде куда нужно – ворота, проходная. Стали тарабанить в дверь... К нашему изумлению дверь открылась. Стоит паренек: «Вы киевляне, конечно? Вот хорошо, я вас заждался... пойдемте скорей... машину я включил, она вообще-то рабочая, но немножко... с АЦПУ только осторожней, ладно?» — пока он без умолка тараторит, ведет нас вдоль бесконечных черных пакгаузов — «осторожно, тут рельсы... и тут» — наконец, подводит к какой-то двери, внутри свет — «ну все, заходите и я вас запру, а то тут скоро собачек на ночь выпустят... за вами утром шеф заедет, а мне надо бежать уже, последний автобус в город» — и был таков... Хорошее начало, а? Собачек, значит, выпустят. Куда же мы попали?
Такого машинного зала я в жизни не видывал – выгородка в пакгаузе, лишь кое-как, с большой натяжкой, смахивающая на помещение. Из худой кровли, сквозь фальш-потолок не капает, льет. Льет прямо на компьютер! На шкафах тазы стоят, на полу – тряпки брошены, воду собирать. А ведь это фальш-пол, под ним – наверняка в лужах грязной воды – кабельная разводка. Силовая, в том числе. Кругом мокро. И один стул за пультом. Один! .....! .. .... ....! Один стул на двоих и тазы с мокрыми тряпками. А мы-то, дураки, еще думали покемарить по очереди в гермозоне. М-да-а-а! Деваться некуда, начинаем работать – последние правки вносим, прогоняем тесты. Время от времени возимся с этими тазами, тряпками – куда денешься. Печатаем отчеты. Кончается пачка бумаги, надо вставить новую. Что там паренек говорил об АЦПУ? Осторожней? Ну ладно. Осторожно открываю дверцу, кладу новую пачку. Теперь надо бумагу пропустить под печатающий барабан, для чего следует нажать на рычажок, чтоб он слегка отодвинулся. OK, осторожно нажи... Бабах! Тяжеленная рама с приводом и барабаном (килограмм сорок, не меньше) обрушивается мне на ноги...
Слава Богу, не на ноги, а с ужасным грохотом на пол (как я успел отпрыгнуть, ума не приложу). Козлы! Козлы (другого слова нет) что-то делали и отложили на завтра, суки, не удосужившись накинуть крепежные гайки. Трех минут не хватило – на автобус спешили... Так, остались без принтера. Ну что ж, выводим на магнитную ленту – завтра перед сдачей попросим где-нибудь печатануть на бумагу. Работаем... По-прежнему льет, опорожняем тазы, тряпки выкручиваем. Во как, попутно в уборщицы записались... Тут накопившая на фальш-потолке вода вдруг низвергается водопадом прямо на системную консоль – в ней что-то шипит, искрит, она дергается в агонии и замирает. Это уже почти кранты: если машина сбойнет, перезапустить без консоли не сможем. Мало того, мы лишились последнего, пусть медленного, печатающего устройства и средства ввода – с клавиатуры консоли можно было править и запускать программы, не заморачиваясь с перфокартами. Теперь на них последняя надежда. Перфоратора нет (ну еще чего захотели!), однако ввод и бармалей рабочие. И началось: в четыре руки не фиксаем – режем карты целиком, вводим, типа как «печатаем» на бармалее, читаем эти карты, режем новые... Египетский труд! И все время молим машинку: «ну давай, милая, держись... не сдавайся... ну, еще полчасика» И она держится. Как умирающее животное – уже не видит, не слышит, только, что реагирует на прикосновения. Она от этих тварей, от персонала этого козлиного, ни заботы, ни ласки не видала – довели до руины... Однако, выдержала. Все сделали, закончили, обесточили страдалицу и... стали ждать рассвета, попеременно присаживаясь на единственный стул...
Под утро дождь перестал. Наконец, загрохотала дверь нашего узилища (собачек, видать, снова посадили на привязь) и появился лощеный хмырь – начальник. Мы бросились к нему – так и так, барабан отвалился, чуть ноги не покалечил, консоль вон сдохла, вода кругом, тряпки эти... Тут... вижу по глазам: ему это все... глубоко по барабану... и еще глубже. Цедит: «А-а-а, эту рухлядь списываем, в управлении новая смонтирована». Мы переглянулись – так-так, значит, есть новая машина, а нас сюда загнали. Не нашли, значит, никого, кто б с нами ночь посидел – лучше запереть подрядчика в мокром сарае под собачьим конвоем. Ладно, запомним, учтем... Меж тем хмырь подводит нас к новенькой «семерке» и... остановился, любуясь своей любимицей. Машина блестит, аж сияет чистотой, а ведь вчера лило весь день и всю ночь и грязи на дорогах... Это, значит, была охота вставать спозаранку и выдраивать, чтоб через час снова была в грязи. Ну-ну... Поехали. Разговор, точнее – монолог, об авто: эта «семерка» у него не «жигуль», а экспортная «лада», литраж увеличенный, какой-то моновспрыск на ней, еще навороты... «А вы на киевском авторынке на днях не бывали, почем там ...?» — «Да мы, признаться, не знаем, где этот рынок находится» — «А-а-а» — заметно поскучнел, потерял интерес. Приехали в офис. Вчерашний паренек там. «Ну вот, вы тут с Петей, покажите ему как и что. У меня, извините, дел сегодня... К обеду подскочу». Честно признаться, мы шокированы. Приемка – это и экзамен тебе придирчивый, но и ритуал торжественный. Чтоб начальник АСУ, кому это все эксплуатировать, вот так «на Петю» сбросил... А мы-то дурни старались – навернули им такую оптимизацию, язык запросов, генератор отчетов... Ну ладно, обучаем Петю. Время тикает. Когда же приемка? Наконец, к обеду появился: «Ну вот, акты – все подписано. Петя в курсе?» — «Да, Марк Семенович, я все посмотрел» — «Ну и славно. Я извиняюсь, столько дел сегодня, надо бежать. Счастливо, привет Киеву»... И это все? И это приемо-сдаточные испытания? Однако... Слышу за спиной: «Иван Иваныча машину в покраску повез»... И неудобно им при посторонних, и так же хочется шефу косточки помыть. В общем, вскоре диспозиция стала нам ясна: у мужика золотые руки – перебирает двигатели, рихтует кузова; покупает битые (после аварии) авто, восстанавливает, продает. Целая мастерская в гараже. Ну, и чего еще надо? Ремесло в руках надежное, деньги – какие инженеру не снились. Статус социальный не тот: быть «гаражным Мариком» (с годами – «Семенычем») – не комильфо. Поэтому – начальник отдела АСУ. Понятно, красит-рихтует не только местному начальству, но самому «Иван Иванычу» (кто это – не ведаю, но имя произносилось с придыханием). Так что, на работу ему глубоко начхать, а за место свое – не тревожится... Забрали мы акты и пошли. Вторые сутки на ногах. Как до поезда гуляли по Сумской – в упор не помню. В вагоне залез на верхнюю полку и... проснулся в Киеве.
Поразмыслили мы бригадой и решили: больше по этому объекту не делаем ничего. То есть, отчеты туфтовые, какие надо, пишем, но саму работу – а ни на йоту. Что вы думаете, потом уже Марк Семенович к нам приезжал (я больше в Харькове не был). Привозил заранее подписанные акты. Мы на его ленту раз за разом записывали те же самые файлы, без единого изменения. И ни одна собака не заметила (а если и заметила, то не гавкнула). Так года полтора прошло. Он всегда, как отдает ленту на запись, сам на часы смотрит, нервничает – на авторынок торопится. И вот в последний раз, при завершении проекта, разыграли мы комедию: он ленту отдал, час проходит – ленты нет. Он уже извелся весь. Я с понтом звоню: «Ну что так долго?.. А-а-а... И когда исправят?.. Поторопите их там, человек ждет». Он: «Ладно, я побегу, пожалуй. Вы же почтой вышлете?» — «Ну, непременно». Фиг мы ему выслали («это тебе за собачек на базе»)... Прошло много лет. Как-то приятель говорит: «Ты Марика харьковского помнишь?» — «Еще бы!» — «Так вот, харьковчанин знакомый рассказал, автосалон у него. Процветает». Ну и славно, нашел человек свое призвание – стало комильфо...
Описанный случай – это из ряда вон. Обычно же, эксплуатационники – работники отделов АСУ на заводах, персонал ВЦ – были настоящие профи. И коль уж я определил профессию программиста как еврейскую, то электронщик, особенно начальник машины – без сомнения, украинец: хозяин основательный, неспешный, себе на уме, прижимистый, запасливый, пестующий свою машину, как вуйко – свой огород. Уж у него и чистота, и порядок, и ЗИПа тройной комплект. Дай ему волю, он бы программистов отстреливал на подступах к машинному залу – «ходят тут всякие – машину трогают». Но приходится ему с нами мириться, как с неизбежным злом. А нам надо налаживать с ним добрые отношения. И если наладил, то живется тебе на машине комфортно.
Я вот упомянул раньше насчет гермозоны. Это такая выгородка в машзале, комната без окон, где стоят диски и должна быть особая чистота. Видевшим только современные диски-винчестеры (коробочки в ладонь величиной), трудно вообразить тогдашний дисковод: здоровенный комод с крышкой сверху (похожий на стиральную машину), куда вставлялся пакет 14-дюймовых дисков. Механизм очень капризный – пылинка, попавшая на поверхность диска, могла вызвать сбой. Поэтому гермозону не герметично, конечно, но изолировали, нагнетали избыточное давление кондиционированного воздуха и влажную уборку делали особо тщательно. Там наш брат мог поспать часок: относительно тихо (сильно шумят АЦПУ, консольная машинка и перфокарточные устройства – но они за стенкой), темно (только лампочки на дисководах мигают) и чисто (хоть на пол ложись) . Ну, конечно, на полу жестковато. Но если начальник машины твой друг, то у тебя есть ключик от тайного шкафчика, что укромно схоронен тут же, в гермозоне. В шкафчике упрятаны вещи нужные, но запрещенные: электрочайник и матрас-тюфячок... Комедию с чайниками помнят все, кто работал в советских учреждениях. Естественно, они были в каждой комнате. Но поскольку считались главными источниками пожаров, то официально их не было. Периодически организацию приходили проверять пожарные инспекторы – тогда все чайники (а также кипятильники, щипцы для завивки, фены, электробигуди – чего только не было в столах сотрудников и, особенно, сотрудниц) лихорадочно прятали в сейфы, куда проверяльщики доступа не имели... Ну, а против тюфячков восставало советское «облико-морале», которому все рисовались сладострастные сцены и никак было невдомек, что электронщики значительную часть времени проводят на полу, на карачках, согнувшись в три погибели: кабельные разводки – под фальш-полом, все разъемы в шкафах, все механизмы – внизу. Не удивительно, что хотели люди примостить «пятую точку» на что-то мягкое... А наш брат-программист, внедряя на объекте серьезный проект, сутками пропадал на машине. Хоть были мы тогда молоды, но у всякой выносливости есть предел, и поспать часок в гермозоне за дисководами, на мягком тюфячке друзей-электронщиков, укрывшись старой доброй рабочей кофтой – это был кайф...
Вот тут можно и закончить рассказ о мире больших компьютеров, машинных залов, перфокарт и лентоводов. Я пришел туда мальчишкой, в шестидесятые и этот мир был весомой частью моей жизни целых пятнадцать лет. Наступили восьмидесятые и он стал медленно уходить в небытие, в память. Кто-то в нем подзадержался дольше меня, кто-то ушел раньше, но на круг, для большинства программистов десятилетие началось как эпоха мини-ЭВМ, а завершилось миром, где безраздельно властвовали «писишки». Но это уже совсем другая история...
010. Восьмидесятые. Мини-ЭВМ
Что такое мэйнфрейм на первый взгляд? Это большой зал, заставленный шкафами гудящего и стрекочущего оборудования. Это множество людей, снующих туда-сюда с распечатками, перфокартами, магнитными лентами и паяльниками. Большая ЭВМ, она – большая. А что такое мини-ЭВМ? То же, но в миниатюре: комнатка, стойка в две-три секции, рядом дисплей, иногда поодаль еще парочка экранов, принтер – чаще медленный матричный, но если даже быстрый барабанный, то не громадный, похожий на сервант, а небольшой такой, с постельную тумбу. И никаких тебе фальш-полов с кабельной разводкой и стационарных систем вентиляции-охлаждения – провода проброшены прямо по полу (да и много ли их – сетевые, к дисплеям да к принтеру), а в окно врезан комнатный кондиционер бакинского завода (впрочем, ясно что бакинского, других в Союзе просто не было). Большая ЭВМ впечатляет. Ее любили показывать в кинохронике – линейку лентоводов с бешено вращающимися магнитными лентами (кстати, в реальной работе такого дружного скоростного вращения достичь невозможно, поэтому в кино ленты вращаются в обратную сторону, т.е. перематываются к началу автономно, без взаимодействия с компьютером). А в сюжетах об умной машине обязательно трое-четверо очкариков в белых халатах напряженно пялятся в перфоленту, словно надеются вызнать из нее что-то сокровенное; под торжественное восклицание диктора «Задача пошла на счет!» кто-то нажимает на кнопку Reset, т.е. сбрасывает, вырубает компьютер, после чего аппаратный тест заставляет бойко мигать лампочки на инженерной панели (что как раз и нужно киношникам)... На мини-ЭВМ такую веселую лабуду не снимешь: лентопротяжек две (а то и одна) и это – миниатюрные устройства в стойке, крутят ленты они невыносимо медленно; диски тоже вставляются в выдвижные (прямо из стойки) ящики. Все по сравнению с мэйнфреймом беднее, меньше и видно, что дешевле. Последнее обстоятельство «еэски» и погубило: настоящими мэйнфреймами, одновременно обслуживающими сотни или хотя бы десятки пользователей, они стать не смогли, а обслужить двоих-троих с успехом могла относительно дешевая «эсэмка» или «электроника»…
Существенно полегчало снаряжение программиста. Когда приходилось тащить на себе диски, то это были не тяжеленные еэсовские, а куда более легкие и компактные дисковые кассеты. Из сумки исчезли перфокарты. Навсегда! Все мини-машины были оснащены дисплеями и бумажно-картонажные средства общения с компьютером ушли из нашей жизни. В стойке имелось для проформы устройство чтения перфоленты, но его практически не использовали. Конечно, запасы карт были немалые и они еще много лет применялись в быту – для записей, как закладки для книг, но на работе – наконец-то! – стали ненужны. Как и навыки чтения и «фиксания» лент и карт. Каким это стало облегчением, оценить может только тот, кто всласть намаялся с ними...
Правда, на несколько лет раньше появились дисплеи ЕС-7920. Но, во-первых, далеко не на всех машинах. А во-вторых, они не были полноценными системными консолями (я касаюсь этого в главе «ЕС ЭВМ – pro et contra»). Отечественные умельцы быстро разработали программы, позволявшие на нескольких экранах одновременно выполнять ограниченный набор операций, в основном – редактирование текстов, компиляцию и просмотр сообщений об ошибках. Помню две такие программы: Primus и DProcessor. Разработчики явно конкурировали друг с другом и каждый новый релиз включал все функции программы-соперника плюс еще что нибудь. И все-таки, возможности этих программ были ограниченны, они не могли заменить собой операционную систему разделения времени. Кроме того, постоянно приходилось мигрировать с одной машины на другую: только привыкнешь к сладкой жизни с дисплеями, как – бац оземь! – возвращаешься к перфокартам. Только мини-ЭВМ, где дисплеи были обязательным и единственным средством «ручного» ввода-вывода, как-то психологически зафиксировали переход в новый мир, где компьютер стал ассоциироваться с клавиатурой и экраном. Этот переход стал революцией! Производительность нашего труда выросла невероятно: за один день (или ночь) сидения за экраном можно было сделать больше работы, чем раньше за неделю. Лично для меня, правда, этот новый стиль работы был возвращением к хорошо забытому старому: десять лет назад я именно так работал на БЭСМ-6. Однако, мой случай не просто нетипичен, он крайне редок – я случайно попал в элитарный мир суперкомпьютеров и после того, как неслучайно из него выпал, больше никогда не видал живую БЭСМ...
С массовым внедрением мини-ЭВМ связано и явление, которое могло бы повлечь даже социальные последствия, если бы не случились аккурат в это время такие катаклизмы, что о компьютерных проблемках никто и не вспомнил. Я имею в виду «обезлюдивание» вычислительных центров. В машинном зале мэйнфрейма днем толклась уйма народу: операторы ЭВМ, немаленькая бригада электронщиков, программисты, работники эксплуатационных служб АСУ. Тут же цвел – щебетал и хихикал – целый цветник юных дев, операторов подготовки данных. А рядом сидели суровые тетки, ответственные за контроль информации, архивирование, системную поддержку. Вся эта армия была разбита на группы, сектора и отделы со своими начальниками, парторгами и профоргами... А теперь посмотрим, что делается на мини-машине. В машзале... пардон... в комнатушке уткнулись в экраны два программера да из-за стойки торчат ноги электронщика, который, как обычно, колдует там чего-то с паяльником. Все! А когда программеры написали наконец свои программы и их стали применять пользователи, то... ничего не изменилось: в комнатушке уткнулись в экраны два инженера-расчетчика или сметчика, а из-за стойки, по-прежнему, торчат ноги электронщика. И вся армия посредников между компьютером и конечным пользователем – не нужна! Не нужны милые девушки, что перфорируют исходные данные: пользователь собственноручно их вводит; не нужны суровые тетки контролеры-проверяльщики: интерактивная программа все проверит «на лету» и тут же – в процессе диалога – данные можно поправить. Архивирование сделает сам пользователь или тот же электронщик, его одного на одну машину – больше, чем нужно, вот и пусть еще ленты помотает, чай не перетрудится. С переходом на малые машины теряло смысл само понятие вычислительного центра как самостоятельной организационной структуры, как отдельного помещения (порой даже – отдельного здания), по напичканности всевозможным железом, по пожираемым киловаттам больше похожего на производственное, чем на конторское. Недаром мини-ЭВМ назывались средствами автоматизации уровня отделов, лабораторий, рабочих групп. Их можно было запросто поднять на нужный этаж, поставить в лаборатории, в закутке рядом с бухгалтерией. Можно было даже установить дисплей прямо на рабочее место, например, диспетчеру нефтебазы или сменному инженеру в цеху... Так что, с начала восьмидесятых над персоналом эксплуатационных служб АСУ стали сгущаться тучи...
В то время автоматизация держалась на триаде: программисты, электронщики, асушники. Первые крайне редко «принадлежали» предприятию, где внедрялась АСУ. Обычно они были работниками специализированных проектных или (когда проект особо сложен и/или престижен) научно-исследовательских институтов. Зато предприятию приходилось нанимать много электронщиков. Не от хорошей жизни – качество советских ЭВМ было таково, что требовался бесконечный, каждодневный ремонт... Профессия эксплуатационников восходит еще к докомпьютерной эре, к табуляторам, фактурным и счетно-перфорационным машинам. Мне приходилось в те годы встречать на вычислительных центрах ветеранов, начинавших в сороковые, когда кибернетику клеймили «продажной девкой империализма». (Естественно, к машиносчетным станциям ЦСУ и к расчетно-кассовым центрам Госбанка эти сексуально-философские претензии не относились). Но массовой профессия становится в семидесятые, по ходу массового внедрения ЕС ЭВМ и других компьютеров невоенного (не только военного) назначения. Именно тогда к ней приклеилось прозвище «асушник». А к восьмидесятым профессия достигает своего расцвета: успели выучиться и приобрести рабочий опыт выпускники факультетов автоматизации, сформировались организационно, сложились и устаканились коллективы на предприятиях, наконец, программисты успели понабивать себе шишек во всех местах, тоже понабраться опыта и сделать – запроектировать, отладить и внедрить эти самые АСУ. В начале десятилетия вся громадная (в масштабах страны) махина вертелась, наконец-то, почти без сбоев. И точно так, как всегда в жизни бывает, не успел наступить расцвет, как повеяло упадком. Не явно, разумеется. У программных систем довольно долгий жизненный цикл – лет десять; большинство проектов АСУ были как-раз развернуты к рубежу восьмидесятых и должны были экплуатироваться до начала девяностых. Так что, внешне почти ничего не менялось. Однако, самые прозорливые асушники чувствовали в мини-ЭВМ угрозу для себя. До саботажа дело не доходило, но по моему опыту, внедрение новых проектов на базе мини-машин на предприятиях, где уже были ЕС ЭВМ, проходило куда тяжелеее, чем «с чистого листа»... К концу десятилетия, к окончанию сроков эксплуатации и софта, и железа службы АСУ ждала структурная перестройка и незбежные сокращения. Но тем временем случилась «Перестройка», а вслед за нею сокращению подверглась вся советская экономика. Кто уж, когда останавливались заводы, вспоминал о каких-то АСУ... Однако, это будет еще нескоро, вернемся к началу десятилетия.
Бытует устойчивый миф, что до начала проекта ЕС в стране было де множество разных типов компьютеров, а после – унылое однообразие «еэсок», ну и еще может быть «эсэмок». Конечно, в действительности все не так. К восьмидесятым (а это, пожалуй, наивысшая точка развития советской компьютерной индустрии) разнообразие применяемых архитектур достигло апогея, намного обогнав «славные» шестидесятые. Просто упомянутые выше машины были «мэйнстримом» и многие из ностальгирующих не подозревали о существовании еще каких-то... Однако и я начну обзор мини-машин, с которыми пришлось иметь дело, с мэйнстрима, с так называемых «эсэмок»... Почему так называемых? Судите сами. Семейство СМ ЭВМ имело в своем составе машины пяти (!) абсолютно разных архитектур. С другой стороны то, что принято называть «эсэмкой», выпускалось только в Союзе под четырьмя (!) различными наименованиями: СМ-4 (1420 и ряд других моделей), Электроника-79 (и ряд других моделей), М-400, Наири-4. Добавьте еще польские Mera, венгерские TPA, болгарские ИЗОТ-1016. Все эти машины были совместимы между собой, поскольку являлись клонами PDP-11 компании Digital Equipment Corp. Тут не удержусь, чтоб не воскликнуть: легендарной архитектуры PDP-11 и легендарной компании DEC!
Менее всего программистам свойственны сентиментальность или восторженность. Уж не знаю почему, но типичный программер – это довольно-таки неприятный тип, иронично-насмешливый, язвительный до глумливости. Чтоб что-то похвалить, да еще в превосходных степенях... лучше удавиться. Но заведите с ним разговор о PDP-11 и вы услышите, как голос его теплеет. А ведь работал он даже не на самих PDP, а на кондовых советских клонах. В чем же дело? Эти машины были красивы! Не внешне, конечно. Красива, изящна, элегантна была их архитектура... хм... как объяснить красоту инженерного решения, не вдаваясь в технические детали? Оно было минимально, ортогонально и гомогенно. Главным инструментом дизайнеров была бритва Оккама: при богатстве возможностей – ничего сверх необходимого. Машины получились мощные, надежные, простые в изготовлении (даже советским монтажникам не удавалось их испортить), были на редкость неприхотливы и дуракоустойчивы. Первая модель была выпущена еще в 1970 году. К началу восьмидесятых, когда в Союзе развернули, наконец, их клонирование (да-да, опять десятилетнее отставание) семейство PDP-11 было признано хитом десятилетия, пользовалось заслуженной любовью программистов и имело колоссальный фонд программного обеспечения. Операционные системы производства DEC (а их на наше счастье не пытались «улучшить», а просто переименовали и перевели на русский документацию) отличались простотой использования, надежностью и элегантностью – все логично, ничего лишнего. Были компиляторы двух главных языков – ФОРТРАНа и КОБОЛа... И все-таки, для меня (как и для многих советских программистов) эти машины остались навсегда связаны с другой операционной системой и другим языком, оказавшими в последующие тридцать лет огромное влияние как (глобально) на IT-индустрию, так и (персонально) на мою профессиональную судьбу. Вместе с «эсэмками» появились в Союзе магнитные ленты с дистрибутивами операционной системы Unix и первыми компиляторами языка C. Однако, эта тема заслуживает, пожалуй, отдельного разговора...
Другим семейством машин, на которых пришлось изрядно потрудиться, были СМ-2 и ее многочисленные, также по-всякому именуемые родственницы (СМ-1, СМ-1210, М-7000, ТВСО). Прототипом их послужило почтенное семейство HP-2100 компании Hewlett-Packard, выпускавшееся 30 лет, с 1966 по 1996 годы. Где-то к середине семидесятых (опять это десятилетнее отставание!) в Союзе выпустили первый клон – М-6000. Эти машины были основой промышленной (т.е. на заводе, в цеху) автоматизации. В архитектуре машин не было особых красот и изысков, она была честно заточена под задачи управления технологическими процессами. Системная математика от HP (естественно, переименованная и с документацией по-русски) была такая, как нужно на заводе (или в танке): кондовая, простая, без «бубенчиков и свистулек», но – все работало. Из языков использовался ФОРТРАН и ассемблер. Машины эти были посложнее микроконтроллеров, но попроще тех микропроцессоров, что встраиваются сегодня в микроволновые печи. Никого особо не очаровывая красотой и элегантностью, эти неприхотливые скромные трудяги достойны искреннего уважения. Я где-то читал, что их более десяти тысяч было внедрено непосредственно в промышленности и в «оборонке», на честном автоматизированном управлении техпроцессами. Цифра для Союза – офонаренная! Однако, хотя эти машины и задействовались на самых «престижных» объектах (Олимпиада-80, Байконур), они не были «на слуху». Может дело в том, что разработчики сидели в Северодонецке – в провинции, на отшибе – и в столичной тусовке не засвечивались...
И eще одна провинциальная разработка – вильнюсские машины М-5000. Вот они, кажется, были оригинальной архитектуры. Во всяком случае, никогда не слышал об их прототипах. Выпускались они с начала семидесятых и шли на замену старому счетно-перфорационному оборудованию. Соответственно, машины были заточены под задачи статистики и бухгалтерские расчеты, а из языков (помимо ассемблера) имелся совершенно уместный для таких приложений КОБОЛ. Вот, кстати, пример естественной, нормальной судьбы инженерного решения – без великих взлетов, но и без провалов. Десятилетие спустя, когда пришел срок эти машины списывать, литовцы наладили выпуск двухпроцессорных комплексов СМ-1600. Это был клон PDP-11, но содержащий дополнительный блок – процессор, реализующий систему команд М-5000. Понятно, что в компании DEC понятия не имели о таком монстре: всю работу по программному сопряжению в единый комплекс двух разнородных архитектур сделали в Вильнюсе, и сделали очень грамотно. Процессор М-5000 был ведомым и активировался из основного процессора; дальше обе «машины» работали, разделяя общие ресурсы. Так по задумке разработчиков можно было безболезненно перебазировать на новую технику старые приложения «в двоичном виде», вообще их не меняя. А потом потихоньку, в процессе модернизации программ, переносить их на собственно «эсэмку», благо компилятор КОБОЛа там имелся... В конце концов, ставший ненужным блок М-5000 выключался, а то и выбрасывался из стойки, а СМ-1600 продолжала работать в однопроцессорном режиме... С этой машиной у меня связаны воспоминания о необычном, неожиданном комфорте – на грани сибаритства. Сколько себя помню (за вычетом службы оператором на «Минск-22»), всегда мотался по вычислительным центрам, приходя на арендуемое машинное время. Контора, где я работал, хоть и занималась автоматизацией с 50-х годов, но собственной ЭВМ никогда не имела. А тут вдруг подвернулся заказчик, который за плевый в общем-то проект – помощь в миграции с М-5000 на СМ-1600 – обещал выделить для работы одну «эсэмку» и потом она у нас останется. Проект слепили мигом (как я описал выше, все было уже сделано литовцами – знай, следуй их инструкциям), а потом блок сопроцессора вынули из стойки, докупили память и... стали наслаждаться оседлой жизнью: пришел на работу и никуда дальше не надо тебе бежать с лентами-дисками в рюкзаке, спустился на машинку – по кнопкам постучал, поднялся в офис – чаю попил. Красота!
Напоследок о машинах, на которых, правда, не работал, но имел, как говориться, «самые серьезные намерения»... Немногие знают, что были такие «еэски», которые совсем даже не «еэски», в смысле – ничего общего с архитектурой IBM/360. Это – ЕС-1010 и 1012. О том, как оказались в «едином семестве» ЕС ЭВМ эти «приемные дети», ходили легенды. Ну вот, как запомнилось, так и передам – за правдивость не отвечаю... Было в Союзе нехилое такое Министерство нефтегазовой промышленности, то самое, что стало впоследствии ОАО Газпром – тоже немаленькой такой компанией. Поскольку и в давние уже семидесятые годы нефть и газ так же кормили Советский Союз (в прямом смысле – канадской пшеничкой), как кормят сейчас Россию (в лице ее некоторых, особо достойных граждан), то Миннефтегаз мог позволить себе всякие прихоти, которые не сошли бы с рук какому иному министерству... И вот как-то так получилось, что применялись на предприятиях министерства французские мини-компьютеры Mitra компании CII, которая вскоре была поглощена знаменитой Honeywell-Bull. Почему именно эти машины (а были они не хуже, но и не лучше других) – история умалчивает. Скорее всего, получили их вместе с технологическим оборудованием, освоили, привыкли, а дальше... «от добра добра не ищут». Вскоре стали выпускать клоны французских машин на заводе Videoton в Венгрии, причем, не какие-то ворованные контрафактные копии, а все честнo, по лицензии. А происходило это в самый разгар «еэсовской» пиар-компании и, чтобы все были довольны, присвоили машинкам маркировку ЕС. Ну, хоть горшком назови – не убудет...
Теперь, каким боком тут наша контора. Не получая от родного министерства достаточно проектов и не имея гарантированного бюджетного финансирования, наше начальство хваталось за любую работу – платили бы гроши. Поэтому, мы могли вести проекты на громадных предприятиях, вроде Ингалинской АЭС или Николаевского НГЗ, и одновременно «окучивать» какую-нибудь нефтебазу в Жмеринке... Так вот, наш главный инженер вдруг ненароком задружился с важными перцами из Миннефтегаза и те обещали подкинуть проектики. Командировки в Западную Сибирь никого у нас не смущали – наоборот, прельщали северными надбавками (людей, побывавших в разных Эльбанах и Солнечных, не испугаешь Уренгоем). Нам была дана команда изучать машины и готовиться. Я честно поизучал – понравилось. Сходил в местный Институт газа, где они водились, попробовал по кнопкам поклацать – все вроде нормально. Обычный комплект языков – ФОРТРАН и КОБОЛ – в наличии имелся. И кроме того, очень воодушевляло, что в МГУ делали C-компилятор и портировали Unix, причем, должны были вот-вот закончить... Ну, что дальше? Дальше обычная история: слишком уж радостно предвкушали сладкие, жирные проекты от богатеньких буратин-газовщиков – по «закону зловредности» не могло не сорваться. Много, видать, было желающих откусить от газового пирога и наших не шибко пробивных и влиятельных командиров, как водится, оттерли. Ну что ж, не сложилось. Бывает...
011. Unix & C. Гамбургский счет
Любопытно, что вполне подцензурное советское искусство запечатлело в семидесятые-восьмидесятые годы довольно реалистичный образ советского учреждения. Если героические «Сталевары» варили сталь прямо на мхатовской сцене, а бригадиры-бетонщики горели на работе вместе с пламенными секретарями парткомов, то показать героическое трудовое горение счетовода в нарукавниках было слабó даже гениальным Ефремову и Товстоногову. Так что, неспешная, расслабленная, полусонная жизнь многочисленных НИИ, КБ, ПKTИ, всевозможных учетно-расчетных, контролирующе-регистрирующих, планирующе-администрирующих и совсем уж непонятно чем занимающихся контор была вроде бы как в порядке вещей. Конечно, когда имелся личный интерес, люди работали. В тех же НИИ очень даже упирались, делая диссертацию. Но после защиты можно было «выпасть в осадок». А на заводах и в «пусконаладках» вкалывали из-за хороших (сравнительно) денег – премий и прогрессивок. Но в том же заводоуправлении вполне можно было «припухать» десятилетиями. В целом же система не стимулировала труд: «как вы нам, якобы, платите – так мы вам, якобы, работаем». Впрочем, с оплатой-работой не все так просто...
Пожив достаточно долго на Западе, повидав повседневную жизнь в офисах больших корпораций и государственных ведомств, я уже не «качу бочку» на «самый передовой строй». Вероятно, оплачиваемое беловоротничковое безделье есть непременный и чем-то необходимый атрибут цивилизации... Но оставлю теоретизирование интеллектуалам. По моему скромному разумению, в разумно устроенном обществе у человека есть выбор: гужеваться ли ему на привязи в уютном офисе клерком (с перспективой выбиться в столоначальники) или идти в неуютный, даже жестокий мир бизнеса, где у него будет полная свобода совершать свои собственные ошибки под свою собственною ответственность. В Союзе последняя альтернатива отсутствовала, а взамен ее были три возможности, три дороги. Первая и самая исхоженная, столбовая – водка. Недаром по-русски говорится «уйти в запой». Сколько вот так ушло коллег, знакомых, соучеников, начиная еще со студенческих лет, причем, как назло – талантливых, умных, честных... Не сосчитать. Когда-то читал оправдывающее русское пьянство научное изыскание о генетической, дескать, предрасположенности северных народов к алкоголю. Будучи народом южным, я по этой дороге не пошел. А припустил по кривой и ухабистой тропке «заколачивания бабок». Естественное, обыкновенное вроде желание заработать (не украсть), настолько оно было противно естеству и обыкновению советского жизнеустройства, что носитель оного автоматически превращался если не в преступника, то в субъекта асоциального, уж точно. Сколько лет я работал на двух работах по двум трудовым книжкам, столько ходил, что называется, «по лезвию ножа». В конце концов, когда запахло серьезными неприятностями (и за что?) – бросил. Пошел в промавтоматику. И опять не ладно. Опять приходилось изворачиваться, хитрить, химичить с липовыми нарядами и фальшивыми командировками. И все это, чтобы просто получить свои честно заработанные (да и не ахти какие) деньги. Противно. К тому же, очень уж тяжело эти деньги давались – в ущерб семье, отдыху, чтению, в ущерб профессиональному росту. Поэтому, нет-нет, да и поглядывал я не без зависти на избравших третий путь – «удовлетворение личного любопытства за казенный счет»...
Все-таки забавная была в Союзе система. Зряплата почти не коррелировала с работой. Но за зряшные эти деньги можно было либо дурака валять, либо находить себе занятие по вкусу. Сейчас кажется невероятным, что инженер в ранге главспеца или главного конструктора проекта (не бог весть что – беспартийных евреев на эти должности пускали), при вполне умеренной ловкости мог выбить финансирование себе и своей маленькой группе под тему, какую только его левая пятка желала. Действительно, в какой институт, в какую лабораторию не зайдешь – обязательно там кто-то пишет свою базу данных, компилятор или систему документирования. Сколько оригинальных разработок сделано было в непрофильных НИИ и КБ, а то и вообще – в вычислительном центре при каком-нибудь строительно-монтажном тресте. Разумеется, до рынка ни одна из этих поделок не дошла, ввиду отсутствия оного (рынка то есть). Но красивых, оригинальных, интересных идей, порой даже предвосхищавших западные решения, было предостаточно. А поскольку самого понятия «коммерческий успех» не существовало, определяющим фактором «успеха» советского научного работника, инженера и программиста был «гамбургский счет» – его репутация в кругу коллег.
У меня еще в те годы закрадывалось подозрение, что Совья Властьевна все это прекрасно понимала и сознательно давала возможность технической интеллигенции резвиться на рабочем месте как заблагорассудится – лишь бы в политику, в диссидентство не лезли. Разумеется, я говорю о вегетерианском периоде советской истории, об относительно сытых семидесятых и восьмидесятых, когда вся страна сидела на халявной нефтегазовой игле и – по большому счету – ни хрена не делала. Народ пьянствовал, подворовывал тихонько. Ну, так чего бы не дать интеллигентикам безобидной ученой дурью помаяться?.. Вот так же помаяться увлекательной дурью, но чтоб не бесплатно, а в рабочее время – и мне хотелось. Но как? Кафедры и НИИ были надежно для меня закрыты. Надо было устраиваться на месте, благо возможность такая имелась: контора отчаянно нуждалась в проектах; добудь хоть-какой для своей бригады – тебя не просто одобрят, на руках будут носить. Так-так, а я регулярно ездил в Госплан – сопровождал (в качестве свиты) нашего главного инженера. Ну и завязывал там полезные знакомства, искал удобного случая. И он представился, случай под названием Unix... Но, по порядку...
Впервые о языке C, о системе Unix я прочитал еще в семидесятые... Пользуясь семейным блатом в ГРНТБ (республиканской научно-технической библиотеке), я имел доступ к журналам, которые переводились на русский или реферировались, т.е. считались благонадежными и были всего лишь «для служебного пользования». Каковое пользование заключалось в том, что они в пятницу вечером уносились в сумке из библиотеки, а в понедельник утром благополучно туда возвращались. Так я лет пятнадцать читал Electronics Weekly и Acta Informatica... Но то были рассказы о чем-то далеком и недоступном. Как вдруг, году эдак в 81-м, сразу во многих местах появились магнитные ленты с дистрибутивами Unix v6 и v7. Откуда? Переписали у знакомых, те – у своих знакомых... далее – везде... Система преспокойно запускалась на СМ-4 (игнорируя, естественно, русский язык), а дистрибутивы содержали исходные тексты ядра, компиляторов, утилит, а также полную документацию. Конечно, требовалась русификация драйверов дисплеев и принтеров и «обучение русскому языку» многочисленных программ обработки текстов. Но это все были вполне посильные задачи, главное же – система изначально была вполне работоспособной...
Удивительного в самом факте появления лент мало: в Союз попадала математика от IBM, DEC и HP, теперь вот попали разработки Bell Labs – большое дело! Удивительна была дальнейшая судьба этих лент в Союзе. Не передача (под большим секретом) в пару-тройку институтов, чтобы там на их основе с понтом якобы разрабатывать якобы советскую математику, но бесконтрольное и явно несанкционированное распространение по разным ВЦ в разных городах страны. Похоже, что ленты привезены были в Союз не доблестными героями из «конторы глубинного бурения», а аспирантами-докторантами, выезжавшими по обмену на стажировку в западные университеты (где дистрибутивы Unix распространялись свободно и бесплатно). Конечно, людям вроде меня, бывшим долгие годы невыездными, в это верится с трудом. Когда мне разрешили, наконец, навестить родственников в Польше, я всерьез трясся, что на границе не пропустят купленные там книжки Лема. К счастью, пропустили. Однако помню, как в том же вагоне погранцы повязали старика-поляка. Они когда шли по вагону, то громкой скороговоркой возглашали: «оружие-наркотики-религиозные атрибуты». Это что запрещено, дескать, ко ввозу. Именно так, через тире: оружие – иконки – наркотики... И вот старика обшмонали и обнаружили дешевенькую литографическую бумажную иконку. Старик – явно сельский житель из галицийской глубинки – путая от волнения украинские и польские слова, сбивчиво пытался объяснить, что его старуха больная, он ей везет освященный образок Матки Боски Ченстоховой, только ей, больше никому даже показывать не будет. А когда иконку забрали – заплакал, попытался бухнуться на колени, лопотал, что у старухи рак, она умирает, он только за этим образком в Польшу и ездил... Погранцы увели его и никто в битком набитом вагоне за старика не заступился. И я молчал – такой же трусливый раб, как все, только что с фигой в кармане... Так вот, тогда у меня и в мыслях не могло возникнуть тащить через границу магнитную ленту. Но... это пуганый воробей стреляную ворону боится. А вот знакомый поляк, учившийся в заочной аспирантуре в Киеве, постоянно мотался туда-сюда и именно с лентами. Вряд ли на границе проверяли, где материалы его личной диссертации, а где что-то другое. Да и люди, выезжавшие на Запад на стажировку – хоть и мало таких, но были (даже среди авторов «Заметок» есть) – с хорошими анкетами, непуганые... Так что, по здравому размышлению, версия о привозе в Союз этих лент в порядке частной инициативы выглядит вполне реалистичной.
Другая версия – еще (сюр)реалистичней: через знаменитый рыболовецкий колхоз имени В. И. Ленина, что на острове Сааремаа (вот написал и засомневался: Ленина ли или какого другого краснопузого ублюдка калибром помельче?.. но, не суть важно). Сведущие люди не удивятся и не спросят, а какое это отношение имели эстонские рыбаки к операционным системам и вообще – к компьютерам. Те же, кто не в курсе, могут погуглить "Datasaab affair" – это будет предыстория. Что до самой истории, то позднее мне довелось познакомиться с этими славными колхозниками, о чем расскажу в свое время. На прямой вопрос об их причастности к "Unix affair" я получил довольно уклончивый ответ. Что, как говориться, наводит на...
Ну ладно, так или иначе ленты в страну попали, а дальше... А дальше сработала та Unix-магия, которая очаровывала всякого, кто начинал знакомиться с системой. И которая за считанные годы принесла сугубо исследовательскому, любопытства ради затеянному, некоммерческому проекту феноменальную популярность по всему свету... Хм... тут, чувствую, необходимо сделать некое предуведомление. До сих пор я рассказывал о делах давно минувших, о компьютерах, сохранившихся разве что в музеях, о программах и языках, если и доживших до наших дней, то доживающих где-то в укромных уголках, вдали от столбовых дорог. Unix же сегодня – это даже не одна конкретная система, а целый континент, целая техническая цивилизация со своей сорокалетней историей, что и по меркам человеческой жизни много, а в масштабе спрессованного времени IT-мира соответствует столетиям, эпохам. Это определенная философия, стиль, комплеск идей, определивших облик современной IT-индустрии. Наконец, это весомый сегмент рынка, многомиллиардные активы. Что же до языка C, то он и его потомки (C++, Objective-C, Java, C#) составляют мэйнстрим, доминанту современного программирования... и трудно сыскать язык, созданный в последнюю четверть века и не испытавший его влияния. А для большинства активно работающих программистов (тридцати- и сорокалетних) нынешний мир – единственный, другой они не застали. Я же пытаюсь рассказать о том другом, исчезнувшем мире. О далеких предках могущественных фамилий Unix и C, передавших потомкам свои имена и родовые черты, но отличавшихся от них, нынешних, поведением и мотивацией, привычками и идеалами – очень, очень многим... Тогда в начале восьмидесятых в Союзе мы имели технику семидесятых годов (неизбывное технологическое отставание) и версии Unix нам были доступны из предыдущего десятилетия (не потому даже, что более современные не удалось спереть на Западе, а попросту не было машин, где б они могли работать). Итак, если вдруг кто-то из молодых коллег будет читать этот текст, пусть примет во внимание временнóй фактор: речь идет о первом десятилетии сорокалетней истории. Это все равно как первое столетие четырехвековой истории Нью-Йорка – безлюдные лесные чащобы Манхэттэна, крошечное поселение на побережье и... все еще впереди...
Так чем очаровывал Unix? Прежде всего, языком C, на котором был написан. Долгожданным языком программирования для программистов. Стоп! А другие языки, тот же ФОРТРАН или КОБОЛ, они для кого? Да, для нас, конечно, для кого ж еще. Но только эти языки были заточены под решение тех или иных прикладных задач – инженерно-расчетных или бухгалтерско-учетных, а вот как быть с задачами неприкладными? Они как невидимая часть айсберга – неприметная громадина, с которой пользователь напрямую не соприкасается: операционные системы и базы данных, компиляторы тех же языков программирование, утилиты, драйверы устройств и и еще тысячи всяких разных программ, сервисов, библиотек функций и т.д. и т.п. И все это нам надо программировать. На чем? Нынче и вопроса такого не возникает, но ведь было время, когда в ответ звучало: «на ассемблере» – на низкоуревневом машинном языке. Или же на языках вроде ФОРТРАНа или ПЛ/1 – чересчур высокоуревневых. Гений дизайнера (Денниса Ритчи) как раз и проявился в безошибочном выборе уровня языка, уровня абстракции – достаточно близкого к «железу», чтоб обеспечить эффективность и достаточно далекого от него, чтоб не утратить мобильность... А еще язык был как-то очень ладно скроен, явственно ощущалось, что запроектировал его человек, знаюший ремесло программера не понаслышке. Короче говоря, прочитав с восторгом описание языка (тут еще сыграла свою роль изумительная книга Кернигана и Ритчи, недаром называемая «the White Bible» и по праву считающаяся шедевром технической прозы) и написав пару-тройку программок я уже ни на каких других языках работать не хотел. (Но всему свое время: уже лет пятнадцать, как я на нем не работаю и... не хочу – на C++ или C# куда как удобней)...
Сама же система Unix привлекала своей компактностью, обозримостью, концептуальной стройностью, легкостью. Она изначально задумывалась и создавалась как антитеза тяжеловесным, многофункциональным, переусложненным, труднопостижимым, внушающим почтительный ужас разработкам огромных коллективов, что было характерно для эпохи мэйнфреймов. Квинтэссенция, яркий зримый образ этих чудищ нарисован в замечательной книге руководителя разработки системы OS/360 Фредерика Брукса «Мифический человеко-месяц» (“The Mythical Man-Month” by Frederick Brooks) – асфальтовая топь, зыбучая смоляная трясина, неумолимо затягивающая попавших в нее динозавров. В книге убедительно показано, каких чудовищных усилий и денег стоит разработка больших систем, достижение должного уровня качества и надежности. Создатели Unix участвовали в разработке операционной системы Multics, само название которой (Multiplexed Information and Computing Service) недвусмысленно указывало на сложность, множественность исполняемых функций. Устав барахтаться в смоляной яме «отцы-основатели» Кен Томпсон и Деннис Ритчи принялись делать простую и понятную систему, которую они с явным вызовом поначалу назвали Unics, т.е. “uniplexed” по контрасту с “multiplexed”. (Забавно, что пресловутый монстр Multics выглядит предельно компактным и простым до примитивности на фоне современных операционных систем, потомков Unix).
В своей книге Брукс вспоминает излюбленные журналистами сказания о том, как дескать пара энтузиастов склепала на коленке в гараже замечательную программу, оказавшуюся лучше корпоративных разработок с многомиллионными бюджетами. Многоопытный менеджер проекта с понятным сарказмом вопрошает, почему же дуэты одержимых парней из гаражей не заменили собой софтверные компании? А ведь правда – не заменили. Но и пресловутые гаражные дуэты – не выдумка: Билл Хьюлетт и Дэйв Паккард, Билл Гейтс и Пол Аллен, Стив Джобс и Стив Возняк, из совсем недавних – Ларри Пейдж и Сергей Брин. Они – больше, чем правда: «двое в гараже» – архетип современного мифа. А разгадка кажущегося противоречия в том, что в гаражах начинают, но успешное начинание успешно продолжаться может только в офисе... Unix, созданный хоть и не в гараже, но небольшой группой исследователей, тоже стал мифом, а точнее – жертвой на алтаре собственного культа.
К концу семидесятых Unix являл собой идеальную систему для университетов и исследовательских лабораторий, т.е. для групп энтузиастов. Он был ясен и прозрачен, поскольку реализовывал только «самые вкусные», концептуально важные идеи. По сути, это был замечательный набор инструментов и заготовок для творческого применения при самостоятельном построении операционной среды. Дополнительным плюсом было то, что помимо великолепно написанных программ имелась не менее великолепно написанная документация. Впрочем, тексты эти грех называть казенным словом «документация». Чего стоила только «Книга Джона Лайонса» (“Lions' Commentary on Unix” by John Lions), которая объясняла функционирование ядра системы «в лицах», комментируя работу его модулей и служб – совершенно уникальное, бесценное пособие... Так, а чего же в системе не было? Не было ничего даже отдаленно напоминающего интуитивно-понятный «дружественный» интерфейс. Система предназначалась искушенным профи, а никак не лопуховатым ламерам, и принципиально не «обихаживала» пользователя. Что еще? Вот я упомянул раньше, что не было поддержки русского языка. Так никакого языка, ничегошеньки, кроме базовой (английской) латиницы и неявной локализации для Соединенных Штатов. Предполагалось, что если понадобится французу, японцу или русскому поддержать родной язык, то он изучит исходный код, да и наточит систему соответствующим образом. А если у кого-то на машине стоит устройство, которого не стояло у разработчиков в Bell Labs (и посему нет в поставке), то пускай возьмет и сам напишет драйвер устройства. Ну, а если захочется перенести систему на другую машинную архитектуру, то... все открыто, изучай, пиши C-компилятор (даже не весь, а только кодогенератор – модуль, где сконцентрирована машинная специфика), потом меняй машинно-зависимые модули ядра системы и... вперед. Непростая, но страшно интересная задача.
Итак, Unix был по сути типичным удачным исследовательским проектом. Только – очень удачным. Настолько удачным, что распространение его напоминало пандемию (чему изрядно поспоспешествовали дешевизна и либерализм лицензий). Естественно, не могло не возникнуть желание подзаработать на столь популярной штуковине и... дальше, в восьмидесятые годы, начинается уже другая история: выпуск множества коммерческих версий, череда покупок и перекупок лицензионных прав, бесконечные судебные тяжбы, появление альтернативных ядер (Minix, Linux), в девяностые – дурацкая быдловатая «юниксомания», круто замешанная на завистливой «гейтсофобии»... Все это общеизвестно и совсем неинтересно. На авансцену вышли торговцы, юристы и пиарщики, а симпатичные бородачи – создатели системы – тихонько отошли в тень и, поскольку слово “Unix” стало товаром, продолжили свои исследования под другой вывеской – Plan 9...
Ход событий в Союзе соответствует общему тренду: сначала хаотичное увлеченное «освоение» новой игрушки; потом постепенно выкристализовываются центры, где адаптацией и локализацией начинают заниматься всерьез – ИНЭУМ, Курчатовский институт, ИПК Минавтопрома – и выпускают, наконец, три конкурирующие локализованные версии для советских клонов PDP-11 – ИНМОС, ДЕМОС, МНОС, соответственно (расшифровка аббревиатур: «инструментальная мобильная», «диалоговая единая мобильная», «машинно-независимая» операционная система). Особняком, слегка на отшибе держались те, кто реализовывал Unix на машинах не самых массовых и популярных. Я упоминал уже команду из МГУ, сделавшую реализацию на ЕС-1010 и 1012, причем, написавшую с чистого листа C-компилятор и ядро ОС (насколько я знаю, на французские прототипы этих машин, Mitra-15 и 225, Unix так и не был портирован). В другой команде, ухитрившейся засунуть Unix в «советский Wang», легендарную «ядерно-бухгалтерскую» машину Искра-226 (о, это было не просто!), довелось участвовать автору этих строк. Но это отдельная история...
012. Unix и Искра. Начало
В начале восьмидесятых мне приходилось достаточно часто ездить в Госплан, сопровождая главного инженера. Причина, по которой незнатная провинциальная контора привлекалась к госплановским экспертизам крылась как раз в нашей репутации технически грамотных, но недалеких и неискушенных провинциалов – объективность отчета гарантировалась тем, что уж кто-кто, но мы точно не принадлежим ни к одному из могущественных московских кланов, отчаянная грызня которых замещала отсутствующую рыночную конкуренцию... Так вот, там я подружился... не подружился... ну, скажем – сошелся с одним чиновником отдела вычислительной техники. Александр Александрович был лишь чуть старше меня, но занимал позицию референта начальника отдела (каковой, если не ошибаюсь в советской табели о рангах, был в стране как-бы главный бугор по компьютерам). И вот, пока его босс слушал доклады моего босса, мы болтали о всяких интересных новинках, о «юниксе» в том числе. Александр Александрович еще не забурел на чиновничей должности, напротив, живо всем интересовался и несколько жеманно сокрушался, что злая судьбина забросила его в такое унылое, безотрадное место, как Госплан СССР... И вот как-то раз он поделился головной болью. В Госплане издавна использовались машины Wang 2200. В конце семидесятых при очередном приступе шпиономании (старая советская паранойя о «жучках» в импортных компьютерах) ЦК принял решение о замене их безопасными отечественными аналогами. Прошло несколько лет, машины сделали, но приступ к тому времени поутих и в Госплане эту «советскую гадость» — его аж передернуло от отвращения, — ставить не будут, но выпускать – таки да, будут. Уже вовсю клепают. — Ну, и в чем проблема? — А в том, что машину сделали полностью программно-совместимой с «вангом», т.е. из языков там наличествует только интерпретатор Бейсика. Для всяких расчетно-бухгалтерских задач другого и не надо, но есть пользователи, что требуют шустрой работы, Бейсик их сильно тормозит. И это влиятельные люди, их не «пошлешь». — Так «юникс» туда поставить! — Вот-вот, только никто не хочет браться. Разработчики машины свое дело сделали и уже вовсю дырочки в пиджаках буравят (Александр Александрович оказался пророком – невдолге получили мужики Госпремию), так что оно им не интересно, а в Москве никто не будет за питерскими подтирать, тем более перспектив ноль – за голую зарплату. — А мы бы взялись за зарплату — говорю. — Да? И почем? — Ну... группа из четырех разработчиков... это — обмирая от собственной наглости, — тысяч пятнадцать... — и бровью не повел! — плюс административные расходы... двадцать... и машину. — Короче, для круглого счета, тридцать тыщ в год, два-три года, — подытожил Александр Александрович, — это даром. В Москве за такие копейки разве что обзор литературы сделают. А справитесь? — Да кто ж его знает, — я совсем оборзел, — будем стараться изо всех сил. Вы сами говорите, что даром. А вдруг выгорит. Если нет, обзор литературы напишем. — А какой вам интерес? — Интерес простой. Вот мне светит на следующий год химкомбинат в Балаково или объединение «Азот» в Новомосковске – одна гадость гаже другой: сидеть там безвылазно в вонючем цеху. Или же дома в Киеве делать интересную работу и в Москву в командировки ездить, в театры ходить. — Хм... А что – хорошая мысль... Ну вот, скоро в заседании перерыв, давайте-ка своим боссам эту идею в головы вложим. А вдруг и впрямь выгорит.
Меня еще отец учил: хочешь чего-то добиться, преподнеси идею начальству так, чтоб оно считало ее своей. За обедом я главного обработал. Впрочем, много времени не понадобилось – мужик он был хваткий, на лету подметки рвал и уже за десертом вовсю мне растолковывал плюсы своей идеи, которую (если выгорит) мне предстоит реализовывать. Хитрый аппаратный лис Александр Александрович в советах как обрабатывать начальство, разумеется, не нуждался. Так что после обеда оба они были званы в высокий кабинет, откуда Александр Александрович вышел уже с одобренными цифрами (наш главный инженер – по всему видать – показал высокий класс выцыганивания денег и годовой бюджет проекта подрос до 50 тысяч). Я сел за пишмашинку и мы в четыре руки до конца заседания коллегии подготовили задание на разработку «унифицированного инструментального комплекса для персональной клавишной ЭВМ Искра-226», сокращенно «Уникс-226» (и никакой тебе подозрительной иностранщины, типа “Unix” и близко нет – все чисто), договор с календарным планом и всеми прочими бумагами, которые сразу же и подписали... В тот день из Госплана мы не вышли, а на крыльях вылетели. Дальше обязательная пробежка по магазинам (что бы ни было по работе, но каждый из нас, невзирая на должность, был обязан, возвращаясь из Москвы, закупить лимоны, апельсины и прочее по списку) и вот, наконец, мы в вагоне. Чем хороша поездка с начальством – в спальном вагоне (СВ). Сели и тут шеф достает из саквояжа бутылку армянского коньяка, икорку, другую вкусную закусь. Когда успел затариться, ведь по магазинам мы вместе гоняли, да и не купишь такое в магазине? Не иначе, как в госплановских закромах. Но, не важно откуда добыл, приятно (не скрою), что «проставился». Этот вечер мы славно провели, обсуждая будущий проект, «уговорили» коньячок под стук колес... А наутро, в Киеве начались трудовые будни.
Даже с госплановским нарядом на руках машину пришлось «выбивать» на заводе «Счетмаш» почти полгода. Но время не было потеряно: я смотался в Курск с грозным предписанием об оказании всяческого содействия и привез полный комплект документации на машину – еле допер. Съездил также на ЛЭМЗ, к разработчикам (кстати, не удивительно разве, что дизайн компьютера делали на Ленинградском электро-механическом заводе; и это при наличии ИНЭУМ, ИПИАН, ИТМиВТ, НИИУВМ, НИЦЭВТ, НИИЭВМ, НПО НЦ, ИПУ и прочих грандов советского комьютеризма). Питерцы, в отличие от курян, приняли меня радушно и госплановская пайцза не понадобилась: мужики они оказались доброжелательные (никакой угрозы в конкурентно-карьерном плане мы для них не представляли), дали полные архитектурные спецификации на машину, листинги «прошивок» микропрограмм и их собственный инструментальный стенд, с помощью которого был сделан интерпретатор Бэйсика – он включал ассемблер и отладчик. (Тут надо бы пояснить, что Искра-226 позиционировалась как высокоуровневый Бейсик-компьютер и никаких средств программирования на машинном языке, никаких сведений об архитектуре машины пользователю не предоставлялось. Этот вакуум информации породил совершенно дикие домыслы об ее устройстве).
Итак, не дожидаясь появления машины мы слепили пока программный эмулятор процессора и начали работу по компилятору... Впрочем, не буду нагружать читателя подробностями что, как и в какой последовательности делалось – сейчас это уже никому не интересно. Сразу подытожу: за два года мы справились с поставленной задачей и «выкатили» систему; еще год ушел на всякие доделки и оптимизацию, а также на поддержку телекоммуникации, машинной графики и высокоточной арифметики... Все эти три года жизнь у нас была просто райская. То есть, пахать приходилось ого-го как, но зато время в командировках скукожилось с шести-восьми месяцев в году до вполне приемлемых шести-восьми недель. А то ведь я в собственном доме появлялся как гость, командировочный рюкзак даже не распаковывался никогда. Полностью избавиться от других проектов и поездок на заводы не удалось, но то, что осталось, можно было терпеть. А поездки в Москву так были просто удовольствием. И не только из-за театров...
Совершенно вылетело из памяти как я впервые попал в Институт повышения квалификации Минавтопрома. Помню, что приехал туда докладывать о нашей работе – там регулярно проводились семинары по «юниксизации». Но ведь не с улицы я к ним зашел, на участие в семинаре надо было получить приглашение, тем более на доклад. Не помню – отшибло начисто. Не исключено, что все тот же Александр Александрович меня туда порекомендовал... Что помню, так это долгое, томительное сидение в жарко натопленной, душной аудитории (была зима) и отчаянную борьбу с дремотой. В научном мире, как я понимаю, свои правила игры – аспиранты и кандидаты должны были «набирать очки», участвуя в разных конференциях. Наверное поэтому программа семинара чего только не содержала, имеющего весьма отдаленное отношение к Unix: и какое-то оптимальное агрегирование многомашинных комплексов, и опыт реализации транслятора языка Алгол-68 на ЕС (это я как раз послушал), и совсем заоблачные доказательства чего-то там в реляционных алгебрах... Мое сообщение было самым последним и я измаялся, пока дождался. Посему, выйдя к доске, поступил крайне нестандартно: раздал заранее отпечатанные листки с координатами-телефонами и сказал, что тема выступления хорошо если интересна двоим-троим из всех присутствующих, а посему мучать вас не стану – идите себе с миром, а я отвечу на вопросы оставшихся, если таковые будут. Народ радостно ломанулся на выход и остались аккурат три человека. Один сказал: «А чего нам тут сидеть в духоте, пойдем на машину, там у нас и чайничек есть» — «В гермозоне?» — «Ну, а где ж ему еще быть?» Сразу стало легко и приятно: свои люди... Так я познакомился с заведующим кафедрой прикладной математики и вычислительной техники Михаилом Изгияевичем Давидовым и его замечательной командой – «птенцами гнезда Давидова», как они себя называли.
Если приложимо к еврею определение «крестный отец», то Михаил Давидов был крестным отцом советского «юниксизма». В ИПК, на его кафедре образовался своего рода неформальный клуб, где собирались люди, интересующиеся Unix и что-то делающие в этой области. Люди очень несхожие, весьма амбициозные и совсем не «стайные», к тому же – работавшие в разных, порой относящихся к враждующим кланам, организациях. Собрать вместе стаю котов – это мало кому удается, а если и удалось – долго не длится. Давидову удалось. Сказалось его великое терпение и мастерство медиатора. Также сыграло свою роль, что сам он недвусмысленно отказался от личных амбиций разработчика (их собственный проект МНОС вскорости влился в «курчатовский» ДЕМОС), продолжая при этом – единственный известный мне завкафедрой – активно помногу программировать и исподволь направлять своих талантливых мальчиков. Он позиционировал ИПК, как место подготовки специалистов по Unix, место проведения формальных конференций и неформальных встреч – не для обязывающей координации работ (все равны, никто никем не управляет), но для «сверки часов», оценки твоих достижений коллегами по строгому «гамбургскому счету»...
А вот что Давидов таки да координировал, так это совместную, общими усилиями подготовку Unix-документации на русском языке. Здесь и нам удалось положить свои пять копеек в общую копилку... С самого начала в наш проект была заложена денежка на перевод «зарубежных информационных материалов». Мне удалось втравить в это дело блистательного киевского переводчика – Леонида Бурштейна, который к тому же работал программистом (технические переводы были тогда чуть ли не единственным легальным способом дополнительно подзаработать) и в процессе перевода сам здорово увлекся «юниксом», т.е. переводил текст, не только великолепно владея языком (как английским, так и русским), но и понимая профессионально предмет изложения – идеальный случай! Мог бы сразу вносить текст в компьютер, но правила бюро переводов требовали печати на пишмашинке со вписыванием английских слов ручкой. Потом эти переводы в количестве одного экземпляра депонировались в ГРНТБ и никто б их никогда не увидел, если бы второй экземпляр я не привозил на время в ИПК. Там на курсах по «юниксу» курсанты (для получения зачета) вводили в машину энное количество страниц документации, вычитывали и проверяли введенное сокурсниками. Таким вот способом стали общедоступны на русском языке “UNIX Programmer's Manual” шестой и седьмой редакций (это три огромных фолианта) плюс дюжины три отдельных немаленьких книжек с описаниями программ и языков (lex, yacc, awk, sed, ratfor, и многих других). Тексты эти разошлись на магнитных лентах по всей стране, а с появлением рунета – появились на множестве сайтов, и нигде не фигурировало имя переводчика. Восстанавливая справедливость называю его: Леонид Бурштейн.
Разумеется, все тексты, подготовленные участниками клуба, были доступны всем участникам клуба. Так, через короткое время по-русски можно было прочесть и «Язык программирования Си» Кернигана и Ритчи, и «Руководство по операционной системе UNIX» Готье, и множество описаний как системы, так и всевозможного софта, на ней работающего. Появились и первые оригинальные (непереводные) учебники по C и Unix пера (точнее, клавиатуры) того же Давидова. Никогда ранее, при «официальной» адаптации западных систем, у программистов не было столь качественной и полной документации и сопутствующих книг (об авторском праве и роялти, конечно, никто тогда не думал)... Мы же для себя решили давнишнюю проблему: по согласованию с заказчиком вся наша официальная документация состояла из трех страничек, отпечатанных чин-чинарем на форматках с рамочками и штампиками в точном соответствии с ГОСТом, где рассказывалось о том, как запустить Unix-утилиту man (просмотр и печать документации). И завершала руководство сакраментальная фраза, что дескать вся остальная информация доступна в диалоговом режиме прямо на машине. Точка! Ах, нет... плюс еще пяток страниц для нормоконтроля с чертежами программ... Уже обещал раньше рассказать про это проклятие, мучившее несколько поколений советских программистов. Не буду дальше откладывать.
Давным давно, еще в докомпьютерную эру (с двадцатых годов) применялись для изображения последовательных процессов или алгоритмов блок-схемы (flowcharts). На них отдельные элементарные (на данном уровне абстракции) шаги изображались прямоугольничками, последовательность шагов – стрелочками, а ветвления (проверки условий) ромбиками. В самом-самом начале, когда языков программирования еще не было, а программы непосредственно кодировались числовыми кодами или, в лучшем случае, писались в «содержательных обозначениях», как рекомендовал патриарх нашего ремесла Александр Львович Брудно, блок-схемы были важным подспорьем. В таковом качестве во время оно их и застандартизировали.
Прошли десятилетия, то есть минули целые эпохи. А от программистов по-прежнему требовали чертить эти чертовы стрелочки и ромбики. Смысла в этом было аж никакого. Во-первых, теоретически доказано, что любой алгоритм, записанный на языке высокого уровня (на любом языке) имеет эквивалентное графическое представление в виде блок-схемы и почти наоборот, любая правильная блок-схема (фишка тут в слове «правильная») эквивалентна некоторому тексту на том или ином языке программирования. Но текст программы завсегда лучше блок-схемы, хотя бы потому, что последней можно только любоваться, а первый – это реальный кусок программы, который компилируется и выполняется на машине. Есть разница? Во-вторых, блок схема может показать только синхронный, строго последовательный процесс вычислений, а в жизни такое наблюдается разве что в небольших несложных программах. Реальные же системы – это не однопоточные алгоритмы, а целые искусственные миры, где множество населяющих их объектов-персонажей (как программных, так и аппаратных) взаимодействуют друг с другом, посылая в непредсказуемые моменты времени сигналы и возбуждая прерывания, и где множество потоков вычислений исполняются одновременно и ассинхронно, порой еще и на множестве процессоров и машин. Получается, что блок-схемами можно проиллюстрировать только маленькие кирпичики, но никак не всю систему, но зачем дополнительно иллюстрировать то, что и так внятно и понятно (с комментариями) записывается в текстовом виде?
Казалось бы, не нужны, так не пользуйтесь. А действительно не нужны – любой программист, хоть разработчик, хоть представитель заказчика предпочтет посмотреть исходный текст программы, а не эти картинки. Непрограммисту они – тем более до лампочки. И только ГОСТу, в лице его полномочного представителя – нормоконтролера, они нужны. Дороги как произведения изобразительного искусства. Он их проверяет на соответствие требованием оформления – такая-то ширина линий, столько-то миллиметров длина стрелочки, такой-то отступ квадратика от ромбика... Смысл схемы контролеру совершенно недоступен. Можете себе представить, какая халтура там процветала? В нашей конторе (как и в сотнях и тысячах таких же контор по всему Союзу) сидели тетки-чертежницы и тушью на кальках рисовали никому не нужные стрелочки и ромбики. Зато безработицы не было! Уже Союз загибался, но в девяностом году, если не ошибаюсь, успели под занавес выпустить новый ГОСТ все на ту же тему рисования блок-схем. Какая-то навязчивая, неотвратимая мания. Ну да ладно...
Загляну еще разок на гостеприимную кафедру Давидова. Всякий раз, бывая в Москве, я туда заглядывал – что-то привозил из переводов, записывал на магнитную ленту новинки. Никогда более я не выступал на конференциях и не посещал оные (признаться, говорильня меня утомляла), но неформальными беседами с Михаилом Изгияевичем и его зубастыми, нахальными мальчиками я дорожил. Понимаю, что наша возня с Искрой-226 – машиной, которую они никогда в глаза не видели – была им абсолютно не интересна, однако меня всегда доброжелательно слушали, вдумывались и по делу критиковали и хвалили. Было на ком «обкатать» идеи: не товарищи по бригаде (они внутри, в деле, слишком близко – «лица не увидать»), а именно, вот такие – посторонние и... не посторонние...
Так прошли три года. Проект благополучно завершился. Мой благодетель, Александр Александрович ушел с повышением в какое-то министерство. Экспертизы для Госплана как-то тоже сошли на нет и... я перестал ездить в Москву. Да так перестал, что вот уже лет 25 – четверть века – в Москве не был. Уж и не буду никогда. Московские контакты и связи постепенно ослабли, истончились, а там и вовсе прервались. Остались только воспоминания, которые вот для верности доверяю интернету...
013. Легенды и мифы древних компьютеров
Была такая книжка «Легенды и мифы Древней Греции» – зачитывался в детстве. Мое повествование – о трудах и днях вроде бы не столь отдаленных. Но по меркам компьютерного мира – вполне античных. А уж легенд и мифов тех давних дней – такой ворох накрутился, такая мешанина из обрывков сведений, полуправды и откровенного вранья, что чувствую необходимость хоть чуточку внести ясность...
Вернусь к началу нашего проекта по переносу Unix на Искру. Случайно, в один день, он организовался (я описал, как было дело, в предыдущей главе) и ввязались мы в эту авантюру, как в драку – не подумав нисколько. Впрочем, ничуть не жалею. Во-первых, все кончилось удачно. Во-вторых, даже если б и неудачно, что, расстреляли бы нас? А в-третьих, неудачно не могло кончиться – задача была вполне по плечу, работать мы умели, работа интересная, а альтернатива – черная пахота по внедрению заводской автоматизации была пострашней любого «юникса» на любой, самой кострубатой машине... Все так, но когда с этим компьютером только познакомился – оторопь взяла (потом свыкся, конечно). Это не значит, что был он какой-то совсем уж отстойный. Отнюдь. Исполнение курского завода, конечно, «оставляло желать», но мы люди привычные, да и кудесники-электронщики у нас для чего? Постепенно все наточилось-наладилось. Я о конструктивных решениях, которые... как бы поделикатней выразиться... были весьма своеобразными. Но... по порядку.
Начну с «тайны рождения». В интернете (что по-русски, что по-английски) сведения об Искре-226 – более чем лапидарны. Касаемо создания компьютера сказано так: «export of Wang 2200 to the Eastern block was prohibited by COMCON (Coordinating Committee on Multilateral Export Controls), and the computer design was apparently stolen by Soviet intelligence». Что в этом тексте самое замечательное – аббревиатура. Координационный комитет по экспортному контролю обозначался CoCom. Можно, конечно, и прописными буквами – COCOM. Расхождение в написании слишком велико для опечатки. Ладно, эмбарго комитет накладывал на экспорт в страны СЭВ – по-английски COMECON. Уже ближе но... не то. Что же такое COMCON? На этот вопрос легко ответит поклонник творчества братьев Стругацких – комитет по контактам с инопланетными цивилизациями. Но, думается, этот комитет к нашей истории отношения явно не имеет. В целом, приведенная легенда – редкостное нагромождение совершенно идиотских нелепостей. Советские шпионы воруют на Западе дизайн компьютера. На кой ляд, спрашивается, когда этими компьютерами битком набито здание в Охотном ряду, дом 1? Что, нельзя оттуда (из Госплана) взять пару-тройку машин, разобрать и реверсным инжинирингом восстановить дизайн? К тому же там и документация имеется, услужливо переведенная на русский самой же фирмой Wang Labs. К чему шпионские страсти, когда секрета никакого нету. А с какого бодуна КоКом будет запрещать экспорт персональных конторских машинок для обработки текстов и бухгалтерских расчетов, когда куда более серьезные мэйнфреймы IBM без проблем попадают в Союз. Ну и наконец, даты. Ужесточение торговых санкций против СССР (как и бойкот Московской Олимпиады) были реакцией на советское вторжение в Афганистан и датируются 1980 годом. Как раз в конце этого года (небось к «октябрьскому празднику» седьмого ноября приурочили) собрали первые машины на курском заводе «Счетмаш». Сделать за считанные месяцы дизайн компьютера и наладить его производство невозможно нигде, а уж в плановой советской системе – подавно. На самом деле проектирование началось еще в 78-м году и запуск в серию в 80-м был невероятным (по скорострельности) успехом. Но если работы развернулись в 78-м, то решения по ним принимались не позднее 77-го, иначе они не попали бы в план следующего года. Ну, а тогда у нас еще вовсю был «детант» и санкциями не пахло...
На самом деле (как я узнал от разработчиков машины и кураторов из Госплана), стимулом к ее созданию послужила параноидальная байка о «жучках в импортных компьютерах», которая издавна гуляла среди советской программистской общественности, равно как и промеж начальства. Что, дескать, в машины, закупаемые у «проклятых америкосов» между тысяч всяко-разных микросхем коварные ЦРУшники имплементируют хитрые жучки, которые собирают обсчитываемые данные и... на спутник-шпион. Более того, в машинах, что мы дураки у них скопировали, эти жучки заранее были предусмотрены, так что сами же их теперь и воспроизводим. «А с чего бы это так легко, думаешь, все спереть удалось? Да они их нам специально подсунули!» И теперь вот, подсчитываем, к примеру, сколько шаек оцинкованных двуручных выпущено предприятиями банно-прачечной промышленности в отчетном году... бац! – цифры полетели из вражины-компьютера прямиком в Лэнгли, а там уж через потребность в помывочно-гигиеническом инвентаре ихние аналитики советский мобресурс оценивают... Сколько таких вот страшилок мне «собственноушно» приходилось выслушивать. На полном серьезе!
И вот кто-то из хитрых руководителей ЛЭМЗ (а может, и кто повыше) воспользовался этим мифом в производственно-личных целях и в цековских верхах родилось постановление о выпуске полностью отечественной ЭВМ, безопасность которой гарантировалась (!) оригинальной архитектурой процессора и системой команд (специалисты юмор, как говорится, «заценят»), а также последовательным употреблением русского языка в программном обеспечении (вот где шпионские жучки-то скрывались — в иностранных словах и командах). А как же быть с миллиардами, уже вбуханными в «еэски» и «эсэмки»? А никак. Те нехай себе выпускаются как прежде, а курский «Счетмаш» будет делать «безопасную» машину для спецприменений. К каковым (к спец, то есть) отнесли: госстатистику и оборонку, т.е. в подразделения Госплана и ВЦ облстатуправлений должна была поступать «машина программируемая электронная клавишная вычислительная Искра-226» и она же в освинцованном радиационно-стойком исполнении – в гарнизоны и на боевые корабли. Конечно, умиляет сочетание требований – радиационно-стойкая бухгалтерская машина (так и просится к ней в пару бухгалтер в противогазе и комплекте ОЗК); представляю, в какой ступор впали бы инженеры из Wang Labs, DEC или IBM, получив такое задание, а наши умельцы – ничего, склепали на коленке, за что заслуженно удостоились Государственной премии.
До сих пор помню свое изумление при знакомстве с документацией на машину. Клавиатура, системный моноблок со встроенным дисплеем, даже графическим – ух ты! Матричный принтер – нормально. Накопитель на гибких дисках – интересно (это были самые первые, еще восьмидюймовые дискеты – мне в диковинку). Магнитные диски и ленты – замечательно. Телекоммуникационный интерфейс: последовательный порт RS-232 – очень хорошо. Даже несколько таких портов – ну, это перебор. Аналогово-цифровые и цифро-аналоговые преобразователи – хм, зачем? Приборный интерфейс IEEE-488 – а это на кой черт? Крейт CAMAC – что-что-что? Не может быть! В бухгалтерской машине? Перечитываю... М-да-а-а... После «камака» все стало ясно. Так вот кто те «влиятельные пользователи», о которых говорил Александр Александрович... Понимаете, я в молодости в армии на ровном месте «залетел» на первый допуск. Потом все годы был невыездным и вот только-только начал из этого дерьма выкарабкиваться – в Польшу недавно съездил – как «на тебе»! Машина-то явно военная. Или ВПКшная, но хрен редьки не слаще. Аж поплохело мне... Потом поразмыслил спокойно. Официально машина какая? Для планово-экономических расчетов. Заказчик кто? Госплан. Проект через первый отдел не идет – грифа нет. Ну, так чего я дергаюсь? Мало ли, какие там «камаки» предусмотрены и для чего. Многие знания – многие печали. Будем себе делать операционную систему с компилятором языка Си для бухгалтерских расчетов, как того желает заказчик. А больше знать ничего не знаю и отзыньте от меня...
Что Искра-226 не является клоном Wang 2200, утверждали еще в те годы разработчики машины. Не без гордости за свою работу, но и не без сожаления. Потому что, если б действительно ее «передрали» (как СМ-4 передрали с PDP-11), то вся «ванговская» математика на машине работала бы без проблем и не нужно было б самим корячиться – писать интерпретатор языка Wang Basic (который в народе звали «васик» или «ванин бейцик»). Но тогда, правда, не получилось бы столь любимой в Союзе техники двойного назначения («мирный советский свеклоуборочный комбайн набрал первую космическую скорость и вышел на орбиту»)... Ладно, сейчас я не поленился найти в сети и почитать «ванговские» спецификации. Подтверждаю: совершенно разные машины. Архитектура «ванга», проектировавшегося в начале семидесятых годов, куда архаичнее «искры». Единственное, можно сказать, что Искра-226 сделана «по мотивам» Wang 2200.
Есть такой феномен советского (российского) сознания: попеременно то надувать щеки, лопаясь от спесивой гордости неизвестно за что, то рвать на себе рубаху и посыпать голову пеплом в порыве самоуничижения. То мы родоначальники всего на свете – от паровоза, самолета, радио до персонального компьютера, то те же самые мы – сплошь бездари-неумехи, «все покрали», ни на что не способны. Этот подростковый комплекс проявлялся и проявляется (если судить по рунету) по сей день. Касательно компьютеров, что уж говорить о какой-то «искре», если «сама» БЭСМ-6 то воспевается, как самая мощная в мире супер-ЭВМ (вранье!), то столь же обоснованно называется клоном знаменитого детища великого Сеймура Крея, первого серийного транзисторного компьютера CDC-1604. Забавно, что основания у «обвинителей» что Искры, что БЭСМа одинаковы – программная совместимость с популярными машинами-предшественниками трактуется как улика. Буквально: знает иностранческий язык – шпион. В шестидесятые годы, когда создавалась БЭСМ-6, корпорация Control Data была несомненным лидером в мире суперкомпьютеров. Ее машины стояли в крупнейших научных центрах, включая как CERN, так и Объединенный институт ядерных исследований в Дубне. Какой вклад в разработку БЭСМ-6 внесли программисты из ОИЯИ, видно хотя бы из названия операционной системы – «Дубна». А «основной» компилятор звался CERN-FORTRAN и реализовывал версию языка, принятую в Control Data Corp. Ну что сказать, разработчики БЭСМа были бы идиотами, если б не обеспечили совместимость с компьютерами CDC на уровне исходных текстов программ и носителей информации. А поскольку они были умными людьми, то... помню, что кодировка перфокарт называлась «сидисишная». Очень даже может быть.
А еще приводят вот какие «улики» – совпадающие детали. Скажем, Wang 2200 и Искра-226 одинаково используют отдельно адресуемую память для программ и для данных. А у БЭСМ-6 и CDC-1604 одинаковый размер машинного слова – 48 бит. А у вас, уважаемый читатель, и у разыскиваемого преступника – одинаковый размер обуви. Резонное основание для вашего ареста, не так ли?.. К сожалению, очень многие люди (даже вроде бы как технические специалисты) совершенно не понимают азов проектирования. Когда создается новый... не важно что – самолет, компьютер, крейсер, пакет офисных программ, танк, соковыжималка... то прежде всего внимательнейшим образом изучаются аналогичные изделия, имеющиеся на рынке (в военном деле аналог рынка – вооружение потенциального противника). Всякое новое изделие проектируется с намерением сделать его лучшим в своем классе. Не всегда это удается, но намерение есть всегда. Обязано быть!.. Кстати, здесь хорошо виден стратегический изъян практики копирования: ее горизонт – сохранение status quo. Но ведь конкурент не дремлет, уже завтра он выпустит что-то лучшее. Конкурируя, напрягаясь изо всех сил – вполне можешь проиграть. Но есть какой-то (пусть крохотный) шанс на победу. Копируя, отказываясь от борьбы – проиграешь стопроцентно... Так вот, не «драть», но творчески использовать чужие удачные решения (улаживая патентные проблемы, естественно) – это совершенно нормальная, ничуть не зазорная практика. В семидесятые, к примеру, целая «свора» фирм (Amdahl, Fujitsu, Hitachi, ICL, Interdata, RCA, Siemens-Nixdorf, Univac, Wang Labs) принялись выпускать компьютеры, архитектурно совместимые с IBM/360. Но это не были тупые копии – каждый добавил какую-то свою «изюминку», постарался сделать или более мощную машину при той же цене, или более дешевую при тех же характеристиках и... отгрызли-таки кусок рынка у IBM.
От легенды так сказать негативной («ничего-то мы сами делать не умеем, а токмо драть у америкашек, да и то – косоруко») перейду к легенде горделивой, духоподъемной, патриотической: «Россия – родина... нет, не слонов, но персональных компьютеров». Какая именно советская железяка является тем самым первым «персональным», тут мнения «патриотов» расходятся – называются разные машины. Но «ход мысли», аргументация – всюду сходны и основаны на том, что у базовых понятий нет формальных определений через другие понятия. Всякий отличит персоналку от мэйнфрейма. А от мини-машины? А от офисной однопользовательской (сиречь, персональной) рабочей станции? Такой, как Искра-226, к примеру. А ежели характеристический признак – что одна персона с машиной работает, так и БЭСМ-6 тогда – персоналка, я вон с ней сколько ночей провел, так сказать, tête-a-tête... Ладно, потуги эти в большинстве своем не стоят внимания, кроме разве что одной легенды. Даже уже не легенды, а целого жития «первого в мире» и «лучшего в мире» советского компьютера, который сами американцы (!) купили (в количестве одной штуки), изучили (передрали, конечно) и от страха пред столь явным превосходством, через своих агентов влияния – загубили, добились прекращения производства. Ни в каких других советских компьютерных мифах нет такой концентрации портяночного патриотизма и густопсовой страсти к обожаемо-ненавидимому Западу, как в этой агиографии «невинно убиенной» и «злодеями умученной» машины. А жаль, машинка-то была на редкость удачная и симпатичная. И разработчики ее (кстати, земляки-киевляне, с некоторыми я был знаком) – достойные инженеры, сделавшие достойный (для своего времени и места) проект и совсем не заслужившие почти полвека спустя оскорбительных славословий от нынешних «патриотов»... Думаю, знающий читатель уже знает, о какой машине речь...
С начала шестидесятых в компьютерном дизайне образовалось направление «высокоуровневых» машин, реализующих «в железе» такие языки, как АЛГОЛ, ФОРТРАН или КОБОЛ. Идея в чем: уровень команд традиционных машин, он мелковат для человека – мышиная возня с числами и цепочками байтов, сравнения и перескоки из одной точки программного кода в другую. Именно поэтому, из-за чрезмерной дробности, программирование на машинном языке (ассемблере) такое занудливое и тормозное. Так вот, высокоуровневая машина потому так называется, что непосредственно оперирует объектами языков программирования высокого уровня. Она «знает» о массивах, списках, структурах, подпрограммах, операторах цикла и выбора – умеет непосредственно работать с этими, довольно сложными сущностями. Конечно, конструкция такой машины по сравнению с традиционной усложняется (стоимость изготовления возрастает), но зато работа человека, отладка программ упрощается (и совокупная стоимость автоматизированной системы, вроде бы, снижается). Какое из направлений «лучше» и «правильней» – решает рынок. Доминировала (и доминирует) традиционная архитектура, однако ее оппоненты тоже не бедствовали (и не бедствуют). Создание в 1961 году первой высокоуровневой машины B5000 связано с именем великого дизайнера Роберта Бартона, работавшего в старейшей компьютерной компании Burroughs (основана в 1886 года, на десять лет раньше IBM; начинала с производства арифмометров). С той поры и по сей день, без малого полвека выпускаются потомки B5000. Уже и компании нет (в год своего столетия Burroughs объединилась с другой знаменитой фирмой – Sperry Univac, образовав корпорацию Unisys), а машины по-прежнему производятся. Без особого шума, мало кто о них слышал, но всякий, кто хоть раз делал банковский перевод, неявно с ними дело имел. Всемирная межбанковская сеть SWIFT изначально построена на этих компьютерах и вот уже 35 лет они перелопачивают по два с половиной миллиарда платежных транзакций в год. Так успешным оказалось детище Боба Бартона, или нет?..
Высокоуровневые машины не один Burroughs делал. Здесь отметились – с разной степенью удачливости – многие. В Советском Союзе с конца шестидесятых разрабатывались суперкомпьютеры «Эльбрус», которые называли «Эльбарроуз». Но это шутка, конечно: проект и вправду основывался на «барроузовской» идее высокоуровней архитектуры, но был совершенно самостоятельным и куда более амбициозным – реализовывался очень высокий уровень языка, близкого к Algol-68. Не мне судить об успехе этого начинания, я «эльбрусы» в глаза не видел (вряд ли в Киеве был хоть один) – предназначались они для ядерных исследований, космоса и «оборонки». Судя по тому, что читал, теоретическая разработка очень солидная. С реализацией в железе, по слухам, возникали трудности. Ну, это обычное дело в «стране советов». Из программистских баек запомнилась такая: дескать, из-за водяного охлаждения процессоров главной фигурой в «приэльбрусье» – впереди всех докторов наук и генералов – был вечно пьяный слесарь-водопроводчик дядя Вася. Вот в это верится охотно: у нас в конторе хоть генералы с докторами и не водились, но все же публика была с высшим образованием – программисты, инженеры. Однако главной, незаменимой и прекрасно о своей незаменимости ведающей фигурой был вечно пьяненький Яша-переплетчик, без которого ни один проект не выпускался. Со всеми отсюда вытекающими (из бутылки в стакан) последствиями...
А вот пример сокрушительной неудачи, полного провала, постигшего не кого-нибудь – корпорацию Intel. Сейчас мало кто вспомнит, что с середины семидесятых Intel проектировал супер-микропроцессор iAPX 432, который призван был заменить их же исключительно удачные процессоры 8080 и 8086. Забыли, что лучшее – враг хорошего. В амбициозный проект вбухали огромные деньги. Процессор должен был аппаратно поддерживать ни много ни мало объектно-ориентированный язык Ada (невероятно модный в то время). Какие средства пошли только в пиар, в информационную поддержку проекта видно из того факта, что где-то году в 81-м в Союзе перевели и издали фундаментальный двухтомник с подробным описанием архитектуры процессора (который я старательно за каким-то лешим проштудировал – такой ажиотаж был). А надо отдать должное советским научным издательствам – там, где дело не касалось идеологии, переводились и печатались действительно лучшие, наиболее популярные и значимые книги (во всяком случае, по компьютерной тематике было так)... И вот, наконец, в начале восьмидесятых долгожданные «микромэйнфреймы» выпустили в свет и... пшик! Получились они слишком сложные, слишком медленные и вскоре их «прикончили» шустрые, простые и недорогие «интеловские» же процессоры семействе x86. Кажется, после этого громкого фиаско новые проекты высокоуровневых машин уже не начинали – идея была дискредитирована.
Но в шестидесятые-семидесятые, на гребне популярности, подобных проектов было немало. В том числе, особое направление – ориентированные на пользователя мини-компьютеры. Замысел такой: интерпретатор языка и программный редактор, простенькую операционную систему и набор утилит – все это «вшить» в машину, чтобы человек (не только и не столько программист, но грамотный инженер или ученый) включил ее и сразу начал работать – составлять несложную программу, тут же ее отлаживать, выполнять и анализировать результаты – все в диалоговом режиме. Популярной машиной этого класса был упоминавшийся раньше Wang 2200. Другая примечательная разработка семидесятых – IBM 5100 Portable Computer. Весил сей «портативный компьютер» 25 кило, но для того времени и с учетом его начинки (пользователю предоставлялись на выбор два языка – Бейсик и APL) это было выдающееся достижение. Машины серии 5100 не без оснований называют «персональными компьютерами» и прямыми предшественниками эпохального IBM PC.
Но значительно раньше, еще в 1965 году, в Киеве, замечательным дизайнером Соломоном Погребинским была создана «машина для инженерных расчетов» МИР-1 – одна из самых первых в этом классе. Машина без преувеличений удачнейшая. Я десять лет работал в проектных конторах и могу свидетельствовать: инженеры-расчетчики, которые ни до «миров», ни после них (вплоть до появления на «персоналках» расчетных систем вроде Matlab или Mathcad) не могли самостоятельно решать свои задачи на компьютере без помощи программистов, на «мирах» – решали. Неудивительно, что машину нежно любили в проектно-конструкторских институтах и бюро, впоследствии долгие годы ностальгически о ней вспоминали. Она стала легендой, а уже в новом веке у легенды явственно стал ощущаться конспирологический душок. Но об этом – в следующей главе.
014. Программисты-профессионалы и программирующие инженеры
Есть такой очевидный критерий «персональности» компьютера: если им можно оборудовать существующее рабочее место – поставить на стол экран и клавиатуру, разместить системный блок под столом или сбоку, принтер там куда-нибудь на тумбочку... если это удалось и теперь инженер (бухгалтер, банковский служащий, менеджер) может продолжить свою работу на своем же месте уже с помощью компьютера, то да, компьютер – персональный...
Правда, удаленные терминалы мэйнфреймов и мини-ЭВМ под это определение тоже подпадают, но не беда. Даже хорошо – отражаются этапы развития компьютерной техники. Сперва, с конца шестидесятых, на столах в офисах появляются видеотерминалы (только не в Союзе – эта затея, центральная в проекте ЕС ЭВМ, провалилась), затем приходит черед персональным рабочим станциям типа Wang 2200 (небольшие шкафчики, тумбы, приставные столики), и наконец, в восьмидесятые офисы заполоняют привычные персоналки... Главное же в «персональном компьютинге» – это даже не миниатюрные габариты машины. Главное – возможность обратиться к компьютеру ровно тогда, когда человеку это нужно. А в остальное время железяка (компьютер это или терминал – не суть важно) просто стоит себе на столе и ничего не делает. То есть, рабочее время человека дороже машинного времени. Вот тут-то принципиальное отличие от мэйнфреймов (да и мини), время работы которых планировалось и расписывалось (порой – на три рабочие смены) и человек к ним на свидание ходил не когда ему – человеку – удобно, а когда назначено...
Машины МИР были хоть и довольно миниатюрными, но детищами своего времени: занимали, обычно, отдельную комнату и время работы на них распределялось между пользователями. Но вот что впрямь замечательно: пользователи эти не были программистами. Я, к примеру, за многие годы ни одной программы для этих машин не написал. И вообще, не знал ни одного программера, кто б на них работал; с другой стороны, все, кто писал программы для «миров», программистами не были. Тут читатель наверняка спросит: «как же так, программы писали, а программистами не были?» Поверьте, и тени профессионального снобизма у меня нет – это, действительно, разные виды деятельности. Ну, вот пример: простейшая программа прочностного анализа, скажем, расчет балки по формулам сопромата. Что напишет умеющий программировать инженер-расчетчик: две-три строчки – ввод исходных данных, две-три строчки – собственно вычисления и четыре-пять строчек – печать результатов расчета. Всей программы – десяток строк кода. И написание ее займет от силы полчаса. Ну хорошо, если человек только осваивает компьютер, – два часа. А дальше инженер будет этой программой пользоваться всякий раз, когда ему надо посчитать балку.
Теперь представим, что задание написать программу расчета балки получил профессиональный программист. Первое, что он сделает... нет, не бросится к компьютеру программный код писать, он вооружится блокнотом и пойдет «пытать» инженера-расчетчика: итак, какие же у нас исходные данные? Геометрические размеры – пролет балки и ее сечение. Ну, допустим, простейший случай – брус, высота и ширина. OK. И что программа должна делать, если пролет нулевой? Выдать сообщение об ошибке и остановиться? Какое сообщение? OK, записываю. А если пролет отрицательный? Как это может быть? Да элементарно, рука дрогнула, случайно на кнопку «минус» нажала. Так чтó, выдать сообщение об ошибке и остановиться или напечатать предупреждение, поменять знак числа и продолжить? Теперь аналогичные вопросы касательно высоты и ширины. OK, записываю...
Обычно, к этому моменту «подследственный» начинает звереть и ерзать на стуле, а ведь мы, по-хорошему, еще даже не начинали. Проверка на допустимые значения параметров по отдельности, это так... даже не разминка. Переходим к проверке соотношений параметров. Формулы сопромата для расчета изгиба балки базируются на допущениях теории Эйлера-Бернулли, коими не буду морить читателя, но скажу лишь, что результаты расчета хорошо согласуются с экспериментом, когда балка – действительно балка, т.е. нечто такое удлиненное по сравнению с сечением (но не слишком). Скажем, книжная полка: пролет метровый, а доска дюймовая. В самый раз. Или брус перекрытия пролетом шесть метров, с высотой сечения 20 см. Тоже нормально. А если мы восьмидюймовым брусом перекроем пролет в в один фут, то это как? А это, извиняюсь, уже не балка будет и считать такую конструкцию (скорей похожую на стеновую панель) надо совсем по другим формулам. И если двухметровый пролет перекроем, к примеру, миллиметровым металлическим листом или затянем пленкой, как в теплицах, то это тоже не будет балкой и считать придется по формулам теории все того же вездесущего Леонарда Эйлера, только совсем другой теории – статики гибкой нити. Инженер все эти вещи «печенкой чует», он интуитивно классифицирует и выбирает метод расчета (а хороший инженер и считает-то «для очистки совести»; он заранее знает результат, моделируя работу конструкции – сопротивление материала – каким-то необъяснимым, помимо сознания, способом, но при этом – безошибочно и весьма точно; если он настоящий инженер, конечно).
Увы, компьютер начисто лишен интуиции и все «входные» ограничения требует формулировать явно и однозначно. Даже для нашего примитивнейшего случая это далеко не просто... А кстати, мы тут оперируем метрами, сантиметрами, дюймами. А ведь для расчета все размеры надо привести в одну единицу измерения. В какую? В сантиметры? OK. И для входных данные считать, что все задано в сантиметрах? Ах, пусть пролет в метрах, а сечение в сантиметрах? А дюймы-футы? Ага, значит прежде задания размеров из меню выбирается система измерений: метрическая или имперская. А если пользователь ввел в метрах-сантиметрах, а потом решил пересчитать в дюймы-футы? Ага, вводим специальный пункт меню «пересчет». А может пусть указывает единицу измерения при каждом числе? Неудобно? Тогда, значит, пусть будут «правила по умолчанию», возможность выбора системы измерений из меню, режим пересчета, а дополнительно еще чтоб можно было указать единицу измерения при любом индивидуальном размере. Уф! Теперь это все запрограммировать и будет... всего навсего будет ввод геометрических размеров. А еще у нас есть ввод физико-механических свойств материала. Для простейшего изотропного линейно-упругого материала это два числа – модуль Юнга и коэффициент Пуассона. Наше счастье, что второй – безразмерный. Зато первый... та же головная боль с единицами измерений: континентальные килограммы на квадратный сантиметр или может имперские килофунты на квадратный дюйм, а то и вовсе новомодные мегапаскали. И всякие пересчеты между ними. Плюс, конечно, проверки на допустимые диапазоны значений (для обоих параметров) и диагностические сообщения в случае нарушений... А еще у нас ввод нагрузки: проверки, игры с единицами измерений и пересчетами, диагностические сообщения... И это мы топчемся пока всего лишь на вводе данных. А потом еще будет сам расчет, где программист, помимо двух строчек расчетных формул, будет долго и нудно специфицировать все мыслимые и немыслимые ошибки вычислений, реакции на них и опять же диагностические сообщения. Посчитав, наконец, приступаем к печати результатов. Так, во-первых короткая распечатка для рабочих нужд: вывод на экран или консольную пишущую машинку только чисел и минимальных обозначений при них. Теперь дальше: печать в табличной форме для многократных прогонов – чтоб сравнивать варианты. Эх, еще бы графики-эпюры построить. Не беда, что не производятся пока графические принтеры и дисплеи – примитивные графики можно «рисовать» звездочками на текстовых принтерах. И еще не все. Нужна «официальная», полная распечатка, которая будет подшиваться в проект со всеми, кстати, реквизитами проекта (которые тоже надо вводить, как и параметры, задающие форматирование и управляющие процессом печати)...
Ну вот, вроде бы все. На собеседования с будущим пользователем программы ушел хорошо если один рабочий день, а то и два (это называется на нашем жаргоне «обследованием» или «постановкой задачи»). Думаете, теперь-то программист пошел программировать? Ха, как бы не так! Он пошел писать документ под названием «техническое задание» и хорошо, если сам наберет его на компьютере и там же отпечатает. Тогда за пару-тройку дней справится. А вот если он пишет от руки на бумаге, а потом печатают девицы из машбюро, тогда, считай, уйдет неделя. Затем документ читается и согласовывается пользователем (почти всегда при этом – уточняется, правится и переписывается). Наконец утверждается начальством и... всего лишь две-три недели спустя программист приступает собственно к программированию. Помните, что инженер уложился в десять строчек кода? Так вот, программисту со всеми этими проверками, диагностиками и пересчетами придется написать эдак строк двести-триста...
Понятно, что никто не затеет многонедельную бодягу ради одной программки, реализующей один частный вид расчета. Программисту если уж закажут, то какой-нибудь пакет прочностных расчетов, например, балок для доброй сотни разных типов сечений, нагрузок, краевых условий, характеристик материалов и т.д. Тогда техническое задание будет представлять собой увесистый том страниц под тыщу, а в программе будет строк эдак тысяч двадцать. Вообще, размеры профессиональных программ принято измерять в тысячах строк, как дороги – в километрах (тысячах метров). Уже из используемых единиц измерений можно судить как о протяженности дорог, так и о размерах программ... Вернемся к нашим «мирам». Не в том даже дело, что такую большую программу в эту маленькую машинку не всунешь – наш брат ухитрялся и бóльшие всовывать в мéньшие (есть всякие ухищрения в нашем арсенале). Дело в том, что не вяжется одно с другим, не предназначена машина МИР – помощник в инженерных расчетах, по сути – очень продвинутый калькулятор, быть компонентом автоматизированной системы. Не идет одно другому – как корове седло. А значит, программисту-профессионалу делать там нечего.
Этого программиста-профессионала уподоблю шоферу-дальнобойщику, везущему многотонный груз за сотни километров. Можно, конечно, нанять его громоздкий трак для доставки пиццы на дом – почему бы нет, платите только денежки. Но даже в идиотских советских условиях такого идиотизма на наблюдалось... Ну вот, вроде ясно, осталось только понять, почему это у непрограммиста программа в десять строчек, а у профессионала – раз в двадцать-тридцать больше. Если бы нам за число строк платили, тогда конечно, никаких вопросов... Так ведь не было у нас выгоды накручивать строки в программе, как советскому водиле – километраж на тахометре его грузовика. Никто за размер программы, как таковой, не платил. И какая там выгода, одна головная боль – чем программа больше, тем она сложнее. Почему же так получалось? А все просто: инженер составляет себе машинную программу как подсобное средство, облегчающее расчеты. Ну вот, на логарифмической линейке считать ведь удобнее, чем «в столбик» на бумажке. А на калькуляторе – удобнее, чем на линейке. А на программируемом калькуляторе «с памятью» – еще удобнее. А на компьютере – еще... Соль в том, что считает по-прежнему сам инженер, используя программу (линейку, калькулятор) просто как инструмент. А ежели так, то нужен ли ему в программе миллион проверок? Нет, он сам все проверяет и контролирует. Интуитивно. Ему нет нужды вникать в детали расчета, достаточно взглянуть на результат и... все сразу ясно: правильный он или лажовый. Так что, нужна ему только голая «считалка» для трудоемкого расчета, которую он и запрограммирует за полчаса... А вот наш брат программист делает программу для расчета автоматического (это когда вообще без участия человека) или же автоматизированного (при участии «безответственном», например, клерка, который проверить результаты не в состоянии, бо не знает сопромата; его самого контролировать надо, правильно ли исходные цифры ввел). У компьютера же, как известно, с интуицией напряг, он – очень быстрый и старательный идиот, тупо исполняющий команды. А мы – программисты – представляем интересы этого бедолаги в мире людей. Зная, что сам он не в состоянии предусмотреть аж ничего, решить «интуитивно» («по аналогии», «исходя из здравого смысла») аж никакой, самый крохотный вопросик, вынуждены мы с раздражающим педантизмом, со скурпулезностью нечеловеческой предусматривать самые нелепые, невозможные ситуации, искать ответы на самые дикие, кретинские вопросы. И все эти «а что если?» закладывать в программы, отчего те разбухают неимоверно – в десятки, в сотни раз...
Коль уж зашла речь о ремесле программистском, затрону еще одну его сторону. Внимательный читатель обратил внимание, что, учиняя допрос инженеру-расчетчику, я знал заранее какие ему вопросы задавать. Я знал про допущения теории Эйлера-Бернулли, про то, что расчет балки корректен при определенных соотношениях пролета и сечения. Предположим, что не знал, при каких именно (и спросил у об этом специалиста расчетчика), но знал, что надо спросить. Знал чтó надо спросить. Откуда знал – понятно: сам по образованию прочнист. Но ведь это — случайное совпадение. Вот приходилось мне потом работать в энергетике и полиграфии, на химических и металлургический заводах, в авиакосмической индустрии и торговле, здравоохранении и грузоперевозках. Но ведь невозможно перед каждым новым проектом проходить соответствующий университетский курс. Так как же знать чтó надо спрашивать? И встречный вопрос: а зачем знать что надо спрашивать? Не проще ли попросить специалистов, пусть они сами все расскажут, а ты старательно законспектируешь да и пойдешь себе программу писать... Не тут-то было...
«Немота специалистов». На эту тему написаны груды книг, подводящих под эту беду бездну психологических, эпистемологических и даже кибернетических обоснований невозможности автодескрипции. Но без ученого мудрствования горький факт таков: специалисты (замечательные, многоопытные, бесспорные специалисты) не могут сами составить вразумительные технические требования, т.е. детально описать собственную деятельность. Подавляющее большинство (за редчайшими исключениями) при искреннем желании сделать это — не могут. На вопросы отвечают охотно и подробно. Но... как неспециалисту знать, какие именно вопросы задавать? Замкнутый круг! Пример с инженерными расчетами (который я привел выше) и вообще все, что основано на строгих формализованных правилах и формулах – это как раз самое простое, человек с общематематической подготовкой как-нибудь да разберется (наша задача ведь не в отыскании новых методов расчета, а в том, чтобы растолковать себе и компьютеру существующие). Но вот технология работы, взаимосвязи между подразделениями, нюансы отношений с поставщиками и потребителями, неформальные, неписаные законы, приемы, обычаи (как мы их называем – «практики»). Вот их клещами не вытянешь. Не потому, что специалист боится разгласить свои секреты. Он знает, что ты ему не конкурент. Просто он эти секреты никогда не формулировал, они живут в его голове на невербальном уровне.
Что же делать? Не дергаться. Работать. Общаться с клиентами, стараться вникнуть в их проблемы, вжиться в их рабочую среду. Очень важен психологический настрой – ты служишь своим клиентам, стараешься сделать их труд продуктивнее и комфортнее. В начале проекта ты ничего не знаешь и смиренно учишься. Надутый высокомерный индюк, кичащийся своими учеными званиями (видывали и таких) не сделает ничего... Кто лучше знает работу стропальщика на складе, как ни стропальщик? Поэтому забудь (до поры) про свои два университетских диплома, надевай рукавицы и вперед... на склад на пару деньков, младшим помощником. Как обдерешь руки в кровь, как спину натрудишь, так сразу дотумкаешь, что такие красивые (в математической теории) схемы оптимальной нарезки кабеля упираются в ма-а-ахонькую проблемку – надобность ворочать с места на место тяжеленные барабаны, что без нужды никто делать не станет... и всей тут твоей оптимизации – карачун. Или садишься в отдел сбыта выписывать вместе с тамошними девчатами счет-фактуры и накладные. Как облает тебя покупатель разок-другой за нерасторопность, так поймешь, что нужно сделать для повышения расторопности бедняжек, которых ежедневно облаивают эти жлобы (а кто, ты думал, снабженцами работает – учтивые благородные джентльмены?)...
Бесконечные командировки, дни и недели в цеху, заводоуправлении, на складе, в офисе бок о бок с инженерами, бухгалтерами, работягами, клерками – все это нужно не для составления программ (они и дома неплохо пишутся – знать бы, что писать) но для вживания. Понемногу, день за днем вникаешь в дотоле неизвестную жизнь и потихоньку ее вербализируешь. Вот в этом (а отнюдь не в знании ФОРТРАНа) и заключается твоя профессия – укладывать живую жизнь в строгие параграфы бизнес-правил и спецификаций. И быть готовым терпеливо делать и переделывать, делать и переделывать, делать и переделывать... Никогда, ни разу за сорок лет моей карьеры не удавалось сделать проект с первой попытки. Делаешь и переделываешь. Не потому, что такой уж ты дурак. Отнюдь, и сам не дурак и коллеги твои – инженеры отменные. Просто, существует всегда эта пропасть непонимания – misunderstanding gap. Пока не покажешь клиенту работающий прототип, он и не знает, чего он не хочет. Показал – недолет! Прототип – в корзину, а ты работаешь дальше. Другой вариант – перелет! С третьего раза – в цель. Да только, пока ты идеально подгонял компьютерную систему под бизнес-процесс, сам бизнес-процесс и окружающий его мир изменились. Мочи мочало – начинаем все сначала. Зато не соскучишься...
Мой опыт ограничивается маленькими группами разработчиков – артелями в три-четыре, максимум – семь человек. В больших коллективах, конечно, все не так. Там правит бал специализация. Программисты клепают программы, а описанной выше деятельностью занимаются особые люди – постановщики задач. Откуда же они берутся? Порой это специалисты в своем деле, которые участвовали, например, в разработке проекта в качестве «подследственных» специалистов, увлеклись делами компьютерными, хорошо вникли (вжились) в нашу проблематику. Работа постановщика – интереснейшая, да и по части оплаты... такие специалисты не бедствуют. Однако, чаще в постановщики приходят все-таки из программистов. Занимается, к примеру, человек лет двадцать разработкой бухгалтерских программ и потихоньку становится классным бухгалтером, оставаясь при этом классным программером. Вот он – мостик через пропасть взаимонепонимания, драгоценный «междисциплинарный» опыт. В начале 90-х, когда в Украине софтверные проекты сошли на нет, а в услугах бухгалтеров, напротив, нуждались вновь создающиеся фирмы, многие мои коллеги были вынуждены сменить род занятий и оказались очень востребованы в «бухгалтерском» качестве. Ну, а в стабильной стране программист, доработав до благородных седин (сиятельной лысины), уходит в постановщики – оно и спокойней и денежней. Программер в пятьдесят, тем паче – в шестьдесят, это, как правило, недавний эмигрант... Так что, не случись известная заварушка, гужевался бы я сейчас все в той же своей конторе постановщиком задач, расписывал бы спецификации. А если б удалось мне свалить из Совка в семидесятые, был бы сейчас... постановщиком задач, специфицировал бы бизнес-объекты да процессы. Впрочем, если бы да кабы... спасибо на том, что есть.
Вернусь к «мирам». На моей первой работе в проектном институте машина МИР-2 появилась в самом начале семидесятых и я с ней лет семь сталкивался. Нет, не программировал (выше я объяснил, почему), но именно сталкивался. Всякий инженер, составлявший на «мире» свои программы, если дело не ладилось, не стеснялся «дергать» программиста, сиречь меня. Я конечно исправлять неполадки в железе не мог (тут приходилось звать электронщика), но диагностировать оные и уж конечно – выявлять всякие «кости» в программах... этим приходилось заниматься регулярно. Так что машину, ее язык и нехитрую операционную систему поневоле освоил досконально. А в 79-м чуть было не занялся переносом «мирового» программного обеспечения. К тому времени стало ясно, что жизнь этого семества клонится к закату. Возникало естественное желание сохранить наработанный за столько лет программный фонд (почти у каждого расчетчика была своя коллекция перфолент и магнитных карт с полезными «считалками») . Поскольку продолжения машинного ряда ожидать не приходилось, оставалось перенести эти программы на другие машины, например, на только появившиеся, куда более мощные «эсэмки». В конце концов, ценность ведь была именно в программах, а никак не в устаревшем, потихоньку разваливающемся железе... История о том, как и почему я не сделал эту безусловно нужную работу и никто нигде – не сделал, хотя всем было нужно... история эта довольно поучительная и заслуживает изложения в следующей главе.
Первоисточник:
Автор: Самуил Любицкий
Последние комментарии
7 лет 41 неделя назад
7 лет 44 недели назад
8 лет 25 недель назад
8 лет 28 недель назад
8 лет 28 недель назад
8 лет 30 недель назад
8 лет 31 неделя назад
8 лет 32 недели назад
8 лет 32 недели назад
8 лет 33 недели назад