Читать «Я нашел смысл жизни: Автореферат мировоззрения с эпизодами автобиографии» онлайн - страница 138

Владимир Александрович Цай

На пятом курсе у нас появился новый предмет – программирование для ЭВМ (если бы это было на первом, как теперь, я провел бы пять лет с гораздо большей пользой). Машина была «Урал-2», ламповая, занимала огромный зал, а чтобы ввести в нее программу, надо было замкнутую фотоленту установить на сложное устройство, напоминавшее стиральную машину. Система команд была примитивная, например, для модификации адреса данных внутри цикла приходилось изменять адрес ячейки памяти непосредственно в команде – программа изменяла себя по мере выполнения (какая свобода для творчества!).

Тем не менее, принципы работы компьютера не изменились с тех пор и, соответственно, программирование, несмотря на все современные парадигмы, требует от человека тех же качеств, что и в те далекие годы. Суперпрограммист 60—70-х был бы суперпрограммистом и сегодня.

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

В 1970 году мне пришлось программировать для ЭВМ «Минск-22» в машинных кодах, и я до сих пор помню систему команд «Минск-22». Например, программа вычисления факториала целого числа N! = N * (N-1) * … * 3 * 2 * 1 выглядит приблизительно следующим образом (аргумент N передается в ячейке 0040, результат N! возвращается в ячейке 0041):

7000) – 10 00 7005 0041 переслать 1 в ячейку 0041 (Здесь будет N!)

7001) – 32 00 0040 0041 умножить 0041 на N (Далее в 0040 будет N–1)

7002) – 22 00 7005 0040 вычесть 1 из 0040 (Получить в 0040 N–1)

7003) – 34 00 7001 0000 если после вычитания не ноль, то повторить с 7001

7004) – 30 00 0017 0000 возврат в вызывающую программу

7005) – 00 00 0000 0001 константа – целая 1.

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

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