Когда компьютеры были большими
Когда я был студентом механико-математического факультета МГУ, а именно в конце 50-х — начале 60-х годов, на нем только-только появилось отделение вычислительной математики. Впоследствии оно дало жизнь нынешнему факультету вычислительной математики и кибернетики (ВМК), но в то время компьютерные науки в МГУ были в ведении мехмата. Все будущие математики и механики изучали обязательный курс методов вычислений. На нашей кафедре теории функций и функционального анализа большинство студентов относились несколько высокомерно и к самой вычислительной математике, и к тем, кто решил перейти на вновь созданное отделение. Профессора, среди которых были выдающиеся математики, в этом нисколько не повинны. Многие из них успешно занимались и теоретической, и прикладной математикой, внося вклад в развитие отечественной школы математических вычислений, которая в докомпьютерную эпоху была самой передовой в мире. Они говорили нам, что конечный смысл самых тонких математических построений так или иначе связан с возможностью применить их в практических целях. Однако та практика, с которой имели дело мы, никак нас не воодушевляла. Практикум по методам вычислений заключался в расчетах по готовым формулам, которые надо было выполнять на раздолбанных за долгие годы «Рейнметаллах» — электрических арифмометрах, производивших при работе невероятный лязг. В лаборатории матпрактикума, помнится, стояло десятка два таких чудовищ, внешне напоминавших старые кассовые аппараты (да и фирма та же!). Два-три часа в неделю, поневоле проведенных за ними, постепенно развили в нас стойкое отвращение к этому предмету — насквозь эмпирическому (так нам казалось), подчеркнуто приземленному и к тому же создающему столько дискомфорта… Перечитайте описание шарашки у Солженицына («В круге первом»). Мы еще застали те методы и ту технику, что очень достоверно описаны в романе.
Еще незадолго до этого кибернетику принято было называть буржуазной лженаукой. К счастью, идеология не привела к полному запрету ведения работ в этой области: математики сумели убедить партию и правительство в необходимости механизировать научно-конструкторские расчеты. Разработка ядерного оружия, полеты в космос, проблемы шифрования и раскодирования информации были в центре внимания властей. Здесь трудились тысячи расчетчиков, задыхающихся от невероятной нагрузки. Поэтому в стране было налажено кое-какое конструирование и производство вычислительных машин. Отставание от США носило хронический характер, но не выглядело на первых порах непреодолимым: технологии, наше вечно слабое место, тогда только зарождались, а по уровню научной мысли и целеустремленности в работе мы не были слабее. Плохо было то, что все работы в КБ и в вычислительных центрах велись в обстановке повышенной секретности, а это означало, что затруднен был информационный обмен. Многие группы создавали себе один и тот же инструментарий — совершенно аналогичные библиотеки стандартных программ для математических расчетов. Такое разбазаривание ресурсов могло привести только к одному результату — поспевать за Америкой становилось все труднее.
В МГУ был создан свой вычислительный центр, на котором я впервые притронулся к ЭВМ. Машина «Стрела» была трехадресной (это значит, что ее типичная операция выглядела так: «выполни действия над числами, находящимися по адресам 1 и 2, и помести результат по адресу 3») и работала со скоростью 2 тыс. операций в секунду. Все адреса и команды программы записывались как числа, в восьмеричном виде, и набивались на перфокарты для считывания в машину наравне с данными. Никаких языков программирования и операционных систем не было. После 4-го курса я был направлен на практику в ВЦ МГУ, где полным ходом шло создание библиотеки стандартных программ. После «Рейнметаллов» ЭВМ произвела на меня неизгладимое впечатление. Пульт с тумблерами для набора команд и адресов, мигающие лампочки, шорох перфокарт, треск печатающего устройства, и в середине — Человек, весь в белом (халате), которому эта сложная техника служит… В общем, в 1962 году после окончания МГУ я пошел работать на ВЦ. Только не на большой и шибко секретный (туда меня не брали, да мне и не хотелось), а маленький, где занимались тепловыми расчетами для проектирования металлургических печей.
Там была скромная даже по тем временам ЭВМ «Урал-1» — одноадресная со скоростью 100 операций в секунду. Одноадресная машина могла в одной команде выбрать операнд только по одному адресу, а второй операнд должен был быть заранее помещен в специальный регистр — сумматор. Чтобы сложить два числа, требовалось выполнить три действия: 1) прочитать число по адресу 1 в сумматор; 2) сложить прочитанное число с числом по адресу 2; 3) записать результат по адресу 3. Выглядело это примерно так:
30 0205
01 0207
16 0205
Кроме четырех действий арифметики, условного перехода и операций ввода-вывода, в системе команд «Урала» почти ничего не было. И, как нетрудно догадаться, начал я с участия в создании библиотеки программ для вычислений…
Ввод программ и данных в «Урале» производился с обычной киноленты, хранившейся в холодильнике в круглых коробках. В ней на специальном станочке пробивались квадратные отверстия. В ходе отладки программы куски ленты с ошибочными командами вырезались и на их место вклеивались исправления. Если требовалось пробить одну дырочку, применяли ручной дырокол (впрочем, почти все виртуозно выполняли эту операцию при помощи обычного лезвия). А если требовалось, наоборот, законопатить дырочку? Тогда из перфорационного станка извлекался квадратик, ушедший ранее в отходы, и вклеивался в ленту. Такие квадратики-конфетти я носил в кармане, используя спичечный коробок. Конечно, каждый умел читать ленту на просвет и находить места, куда требовалось вносить исправления. Постепенно лента обрастала склейками, начинала стучать при вводе и плохо читаться. Тогда ее дублировали.
У «Урала» была еще внешняя память на широкой магнитной ленте (несменяемой) и узкое печатающее устройство вроде тех, что сегодня можно встретить в калькуляторах с печатью. В нем была дюжина колесиков, по одному на знакоместо в строке, на которых имелись цифры и три-четыре служебных значка. Вот и вся периферия.
Конечно, ради одного исправления в ленте никто с машины не слезал. Программист получал машину в свое распоряжение на полчаса или час. За это время он находил несколько ошибок, которые исправлял прямо в памяти при помощи тумблеров на пульте, чтобы продвинуться в отладке программы как можно дальше. А счет по готовым программам велся преимущественно в вечернее и ночное время. Операторов тогда не было, счет вели программисты или инженеры из обслуживающего персонала ЭВМ.
Иногда мне доводилось работать на первой отечественной машине М-2 в одном из институтов Академии наук, куда нас пускали «по блату» в знак уважения к нашему шефу Е.Г.Двейрину. Это был довольно мощный по тем временам компьютер с памятью на восьми электронно-лучевых трубках по 512 слов в каждой. Прелесть программирования на нем заключалась в том, что одномоментно можно было включить только две трубки из восьми. Это заставляло продумывать стратегию размещения команд и данных еще на стадии разработки алгоритма. В остальном М-2 мало чем отличалась от «Урала» по технике работы, но была гораздо более производительной.
Машинное время было главной ценностью. Его всегда не хватало. Поэтому поехать куда-то в другую организацию на всю ночь, чтобы получить под утро два-три часа «машины», считалось великим благом, и отказывались от этого счастья только мамы малолетних детей. Когда нас крепко прижало со временем, одна из сотрудниц сказала, что в военном НИИ, где работает ее муж-полковник, почти каждую ночь машина бывает несколько часов свободна. Шеф повязал галстук и поехал к генералу — начальнику НИИ. В результате был подписан договор на два месяца, по которому мы могли два-три раза в неделю ходить на их «Урал-2» в вечернее и ночное время по оперативно уточняемому графику. Ах, каким чудом был «Урал-2»! Он работал в 10 раз быстрее нашего, принимал бумажную перфоленту (мы на нее тоже перешли) и так весело мигал лампочками, что казался живым. Приятна была и обстановка. НИИ помещался в переулочке вблизи стадиона «Динамо». Теплым осенним вечером идешь под густыми деревьями от Ленинградского проспекта к проходной. Часовой в будке, хороший вежливый парень, читает книгу. Не поднимая глаз от страницы, он спокойно говорит: «Проходите!» Пересекаешь благоустроенный двор, поднимаешься по лестнице, тебя встречает дежурный майор и спрашивает, нужна ли помощь с его стороны. Нет? Очень хорошо, он тоже садится за стол в уголке и читает. Очень милый и начитанный народ служил в наших ВВС!
Однажды мне потребовалась помощь: кнопка «Запись» на пульте вышла из строя. Майор убедился, что я не шучу, извинился несколько раз и куда-то убежал. Вскоре он вернулся с подполковником, торжественно несшим в вытянутых руках отвертку и паяльник. Тот священнодействовал недолго, от силы минут пять. Потом они хором извинились еще несколько раз и предложили списать время простоя на них. Я подумал, что их могут наказать, и не стал изображать из себя формалиста. После этого мне при каждом приходе стали задавать еще один вопрос: «Чаю хотите?»
Мы раз или два продлили договор с НИИ, настала зима. Иду холодным переулком к проходной, деревья стоят голые, время к полуночи, часовой из будки метров с 15 кричит: «Стой! Пропуск!» Ага, думаю, что-то не так. Достаю пропуск (хорошо, что захватил), он его долго вертит, потом мрачно бурчит: «Проходите». Зимой даже благоустроенный двор почему-то похож на строевой плац. Вот и машзал, и майор на месте. Он говорит: «Пусть ваш шеф позвонит нашему». Чаю не предлагает. Я начинаю работать. Он сидит за своим столиком, уставившись в сменный журнал. Что ему, читать больше нечего? У меня процесс пошел, минут 15-20 вмешательства не требуется — только наблюдение. Любопытство распирает, я иду к майору и спрашиваю: «Что случилось?»
Постепенно выясняется следующее. На ученом совете была назначена защита диссертации одним из сотрудников института. Тема заинтересовала Главного маршала авиации, который решил посетить защиту и заодно посмотреть, как поживает его головной НИИ. Маршал оставил свой лимузин на Ленинградском проспекте и, в шапке и зимнем штатском пальто поверх формы, направился к проходной. Часовой, не поднимая глаз от книги, спокойно сказал ему: «Проходите…» Маршал появился в актовом зале в момент, когда там оглашали повестку дня, снял пальто и бросил его на стул в президиуме. Тут произошло нечто вроде финальной сцены из «Ревизора», только гораздо многолюднее. Поскольку в армии свои законы жанра, было и продолжение: маршал произнес речь, не предусмотренную повесткой дня. Самый деликатный фрагмент его выступления мне воспроизвели дословно: «Это не воинская часть, а Ноев ковчег!» Поэтому пока никаких защит. Весь личный состав ежедневно изучает уставы и занимается строевой подготовкой. «И так будет до тех пор, пока я не решу, что хватит!»
«Вот такие дела, — сказал майор. — У нас с вами договор еще на две недели. Нет-нет, до этого срока вас никто и не думает тревожить. Но наш генерал хочет сказать вашему шефу, что больше продлевать договор мы не будем. Найдите себе за оставшееся время что-нибудь взамен!»
КомпьюАрт 12'2000