К 40-летию ЛВТА-ЛИТ
Анатолий Корнейчук
История одной задачи
В NN26 нашего еженедельника мы начали публиковать материалы об истории создания и развития Лаборатории информационных технологий. Сегодня мы предлагаем вашему вниманию материал из архивов стенной газеты ЛВТА "Импульс" (середины 60-х годов) с современным послесловием автора.
В понедельник меня пригласил к себе начальник. Он был необыкновенно приветлив, просто счастлив меня видеть:
- Есть для тебя небольшое задание, - обрадовал он меня. - Это даже не задание, а так, пустяк, пара незначительных формул.
И, ласково улыбаясь, он протянул мне лист, мелко исписанный с обеих сторон. Внизу осталось немного свободного места, и оно было использовано под автографы.
"Посчитать срочно!" - красными чернилами, горизонтально.
"Сделать быстро!" - зелеными чернилами, под углом 30 градусов.
"Выдать результаты тотчас же!" - синими чернилами, под углом 60 градусов.
Была еще подпись под углом 90 градусов, но чернилами ультрафиолетового цвета, невидимыми невооруженным глазом. Подписи были неразборчивы.
- Я напишу здесь срок две недели, - говорил начальник, потирая руки, - но уверен, что за два-три дня ты все сделаешь.
Когда я уносил лист с автографами, дверь за мной закрылась с поцелуйным звуком.
У моего нового задания были отдельные недостатки. Некоторые из формул заканчивались знаком равенства - заказчик затруднялся указать, как вычислять некоторые величины. Не хватало нескольких констант, которые я для простоты положил равными единице. И кое-где были опущены индексы.
К концу недели я стал обладателем недостающих формул. Оказалось, что я правильно поступил, положив неизвестные константы единицами: в вычислениях они не участвовали, на результат не влияли и были выписаны по ошибке. Мое задание теперь свободно умещалось на одиннадцати листах.
К началу второй недели мы с заказчиком легко договорились об индексах, и я стал писать программу. Я очень торопился. Чтобы не отвлекаться, я решил не бриться и не здороваться по утрам со знакомыми. Я перестал ходить на собрания и семинары, за что был избран делегатом на городскую конференцию Красного Креста и докладчиком по теме "Загнивание капитализма".
И вот моя программа готова. Вид у нее был плачевный. То и дело на месте адресов мелькали еще буквы, кавычки, хвостики. Я наскоро заменял эти, с позволения сказать, условные адреса на истинные и носил в перфораторную готовые листы, а там мне тотчас же пробивали карты. Некоторые цифры были неразборчивы: какую пробивать - решалось открытым голосованием.
Все началось с останова, всем известного: в третьей ячейке по семидесятой команде. Сдерживая благородное негодование, я попросил проверить машину. Но ошибка была хитрая и не улавливалась тестами. Я рассеянно перебирал листы своей программы, все еще негодуя... и вдруг весь похолодел. Я прочел:
0107 016 КАППА 0110 2001 2077
Так и написано, коротко и ясно: КАППА. Так в точности и пробито! (Шутка. Пробить можно было только цифры.)
Это было только началом моих неудач. После полудня разнеслась скорбная весть - остановилась машина. Инженеры собрались у пульта на летучий траурный митинг. Они были потрясены, никто не произносил ни слова, точно не веря случившемуся. То один, то другой нажимали на "Пуск", а машина все равно останавливалась и останавливалась на 35-ой команде. Поодаль, уступив пульт родным и близким, тихо шептались математики, а в коридоре причитали и убивались те, чье гибло время; время проходило, и их сменяли другие. Вопли сменялись стоном, но не было в них еще отчаяния, была лишь тихая покорность судьбе.
На другой день у машины отнялись барабаны. Безжизненно зияла разинутая пасть ЧУ (читающего устройства), не тараторила печать и не пробивали неверных контрольных сумм выходные перфораторы. Там и сям торчали молчаливые математики, грозно ощетинившись перфокартами срочных задач. И когда их терпение было на исходе, эта самая машина вздохнула, открыла глаза и с видимым безразличием стала считать тесты - все, какие ей только ни предлагали! Заработала...
И даже теперь мне не везло. Едва я поставил свои карты и нажал кнопку, как ЧУ затявкало на меня. На голос сбежались инженеры, кто-то щелкнул черным тумблером. Я уходил, бережно унося обрывки того, что было моей программой.
И вот наступил день, когда машина по моей программе отпечатала первые нули. К тому времени я перестал обедать. Было уже найдено одиннадцать ошибок в программе: четыре во сне и семь наяву. От частых исправлений на бланках, сделанных из добротной туалетной бумаги, появились дырки. Каждая такая дырка была аккуратно пронумерована, а ее содержимое отмечено в специальном списке. Я научился клянчить минутку, и многие меня понимали уже без слов, по одному только кислому выражению лица.
Первые результаты несколько отличались от ожидаемых, что мой заказчик объяснил влиянием мало изученной области высоких энергий. После того, как я вынул из программы случайно попавшую туда раскрашенную трафаретку и пересчитал все заново, заказчик заявил, что результаты ему нравятся. К тому времени в машине нашли и устранили устойчивую ошибку, и мои результаты стали еще ближе к ожидаемым. Я побрился и стал опять здороваться со знакомыми. А еще через день меня вызвал начальник и, ласково улыбаясь, объявил:
- Есть для тебя небольшое задание. Даже не задание, а так, пустяк, пара незначительных формул.
Дело было в начале 1960-х. Машина - М-20, ламповая: то, что сейчас - на уголке стола, тогда занимало просторный машинный зал, а что сейчас - с ладонь, тогда - стойка в человеческий рост. Экрана, мыши, дискет, винчестеров, клавиатуры не было, буквы машина вообще не понимала, только цифирь, при поиске ошибок - двоичную, то есть либо 0, либо 1. Память - "куб", 24 килобайта (позже - 48), на миллиметровых ферритовых колечках (одно колечко - один бит). Юра Тутышкин и Борис Федосов сами, не на заводе, а с топором и долотом сделали этот самый второй "куб".
Программы писали на машинном языке. Например, 001 0100 0200 0300 означало: число из ячейки номер 0100 сложить с числом из ячейки 0200, а результат положить в ячейку 0300.
Это потом у полупроводниковой БЭСМ-4, преемницы старушки М-20, появились буквы, Игорь Силин изобрел автокод, и стали писать 001 А В С.
Каждая такая команда кодировалась (пробивалась) на перфокарте - листке тонкого картона 82 на 187 миллиметров. Программа - стопка таких перфокарт. Была такая профессия - перфораторщица, была их группа, была их начальница Елена Алексеевна Логинова, которая хорошо пела и враждовала с Силиным за то, что тому посреди ночи приходилось взламывать дверь запертой перфораторной комнаты.
Для М-20 мы с Сашей Марковым и Нелей Шириковой усовершенствовали миниатюрные, в полтора десятка команд, подпрограммы вычисления экспоненты, логарифма и тригонометрических функций: где-то функции стали считаться точнее, где-то - быстрее.