Из набросков к книге Записки старого программиста

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

Моя первая встреча с компьютером произошла в 1983 году. Боже, как давно это было. С тех пор я не прекращал заниматься программированием. За это время было много интересного: разные люди, разные компьютеры, разные задачи. Об этом несколько небольших набросков, эссе, если хотите. Начал я их писать в середине 90-х. Книги, в конце концов, не получилось. Так, отрывки. Но вот, что меня теперь уже в 2022 году удивило. Мне тогда было сорок лет, а я назвал книгу «Записки старого программиста». С чего бы это «старого»?

Компьютер ДЗ-28

В 1983 году я после армии учился в аспирантуре на кафедре теоретической физики института им. А.И.Герцена в Ленинграде. Мне нужно было решить систему нелинейных дифференциальных уравнений. С частным, линейным случаем я справился аналитически, а вот в общем виде систему можно было решить только прибегнув к помощи вычислительной техники. Почему то мысль о том, что придется работать в вычислительном центре вызывала у меня страх, и я все время оттягивал мой поход туда.

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

Свою первую программу я написал на Бэйсике. Впрочем для моей задачи это было слишком медленно и я перешел на другой язык, который также прилагался к компьютеру -Фортран-MS. Ничего более странного я не встречал. Этот язык был гибридом двух языков Фортрана и Алгола. Программу можно было писать на одном из них либо на обоих сразу. Бог уберег меня - у меня оказалась книга только по Фортрану, что в дальнейшем дало мне возможность легко перейти на большую ЭВМ ЕС и завершить свою диссертацию. А кто знает, как бы развивались события, если бы у меня была книга и по Алголу.

Для того, чтобы получить средний результат и вычислить различные корреляционные функции мне необходимо было произвести минимум двести расчетов. На один расчет моя программа тратила около 10 часов. Я приходил к себе за шкаф к 8.00 и уходил около 6 вечера. Иногда выключали свет и я уходил раньше. В общем к концу года я понял, что если я хочу защититься, то мне придется перебираться в вычислительный центр. И я перебрался, а моя программа делал всего 3 минуты. Но это уже другая история. Но вот какой вопрос меня до сих пор мучит: что означает название компьютера ДЗ-28. Может быть, вы знаете?

Компьютерная революция

Главная черта компьютерной революции - компьютер стал массовым явлением, пришел на рабочее место. Один интересный случай вспоминается мне в этой связи.
Шел 1985 год. Я работал на ЕС ЭВМ и во всю занимался своей задачей. Последовательность работы была такой: в начале программа писалась на бумаге, затем набивалась на перфокартах, затем прогонялась на ЭВМ (часто без вашей помощи), после этого обнаруживалось масса ошибок, которые, кстати, могли появится во время набивки перфокарт, а затем весь процесс повторялся. В общем, для того чтобы программировать, совсем не обязательно было знать ЭВМ. Ситуация для того времени типичная. Многие выдающиеся программисты прошлого программировали только на бумаге. С тех пор я так и не привык к каким либо отладочным средствам и ищу ошибки путем анализа текста программы.
И вот в это-то время Россия начала закупать персональные компьютеры "Ямаха" у Японии. Дело темное, я вам скажу. Деньги потратили большие, но все равно пришлось переориентироваться на IBM-совместимую технику. Ну да не о том речь. С появлением персональных компьютеров - надежных, цветных, с графикой и звуком и началась у нас великая компьютерная революция. На японскую диковинку приходили смотреть со всего института и даже из других вузов.

Мне как аспиранту выделяли машинное время поздно вечером, обычно с 11 до 12 часов. Как то раз, я возвращался из ВЦ. Кажется, был уже первый час ночи. Двигаясь по огромному темному коридору, который тянулся чуть ли на целый квартал, я внезапно увидел узкий лучик света, пробивающийся из под дверей одной из аудиторий. Любопытство заставило меня заглянуть внутрь. Теперь представьте картину: первый час ночи, около десятка преподавателей сидят за компьютерами и режутся в компьютерные игры. Зрелище было незабываемое. Тогда я еще не знал, что началась компьютерная революция. Кстати программирование это игра, правда довольно сложная. Стать хорошим программистом, можно лишь увлекшись этой игрой.

ВЦ в ШГПИ

В 1986 году я прибыл на работу в ШГПИ. К моему удивлению и радости в институте уже существовал ВЦ. Штат ВЦ состоял из двух человек. Был единственный персональный компьютер "Искра-1256". Кстати в СССР ходило несколько "Искр". Они были абсолютно несовместимы друг с другом. Имела свой, весьма своеобразный язык программирования и встроенный магнитофон, позволявший работать с файлами прямого доступа. Сам ВЦ помещался в одной из физматовских аудиторий (кажется в 128-й) за стеклянной перегородкой. Вместе с компьютером за перегородкой царил дух программирования и энтузиазм.

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

Одна из задач, которой занимался ВЦ меня поразила. Эта была задача о расписании. Владимир Петрович подробно рассказал мне постановку задачи и показал программу. Речь шла о школьном расписании, но с тем же успехом программу можно было адаптировать и к задачам ВУЗА. Программа могла учитывать не только возможности преподавателя и аудиторный фонд, но и требования к урокам по различным предметам (как лучше располагать уроки русского языка с утра или к обеду, можно ли ставить урок математики после физкультуры и т.д.). На полный расчет расписания компьютеру требовалось несколько часов, но главное был результат.

Удивительно вот что. С тех пор я видел несколько программ, облегчающих работу с учебным расписанием, но программы с такой полной и красивой постановкой я до сих пор не встречал. Я много размышлял над этим. Наверное, энтузиазм является необходимым условием для достижения действительно значимых целей. Вернется ли когда ни будь то время. Может быть дело в возрасте и для меня это время уже ушло.

Кстати "Искра-1256" использовалась в городе довольно успешно даже с появлением IBM-ой техники. Все дело не в компьютерах, а в программистах.

А Владимир Петрович теперь далеко от России. Дай бог ему здоровья!

О мастерстве

Была в институте одно время машина “Мера” польского производства, аналог нашей “СМ” и зарубежной “PDP”. Оперативной памяти на машине было всего 1 Мб. Был небольшой винчестер, по-моему объемом 10 Мб. Стояла на ней многопользовательская операционная система “RT-11”. К машине подключалось более 10 дисплеев с клавиатурой. За всеми этими дисплеями можно было одновременно работать. Один год мы проводили на ней лабораторные работы. Добавим еще, что производительность процессора была на уровне микропроцессора 80286. И Вы знаете, все работало. Теперь сравните это с операционной системой “Windows” или “NT”, работающих на Pentium’ах c 32-х мегабайтной памятью и огромным и быстрым винчестером. Сравнение явно не в их пользу.

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

Выше я неодобрительно отозвался о закупке нашей страной компьютеров “Ямаха”. Однако в моей судьбе и, надеюсь, в других судьбах также, этот компьютер сыграл весьма благотворную роль.

Кажется первый класс “Ямах” наш институт получил в 1988 году. Стандартный компьютер имел встроенный “Бэйсик”, основное ОЗУ 64 Кб (плюс 64 Кб дополнительной памяти, до которой еще надо было уметь добраться), дисковод на 10 компьютеров и возможность объединения компьютеров в сеть. На “Ямахе” существовала простенькая операционная система, несколько напоминающая MS DOS.

К компьютеру прилагалось несколько языков, однако, в силу малой памяти и производительности микропроцессора Z-80 эффективно работать можно было только на ассемблере. С тех пор я полюбил этот язык, не оставив его даже с появлением Windows.

Одной из основных проблем программиста была борьба с нехваткой памяти. Как я уже говорил, для написания программы использовался ассемблер и, при должном искусстве, это снимало часть проблем. Еще одна проблема – это хранение графических изображений в памяти. Эта проблема решалась красиво и элегантно. Графическое изображение строилось из элементов 8 на 8, содержащих простое изображение. К программе подсоединялась библиотека размером от 4 до 8 Кб (!). Картинки тоже можно было подсоединять к программе. В памяти такая картинка занимало всего около 700 байт (!). Теперь, вспомните, с какими картинками мы сейчас работаем.

Когда я перешел работать на компьютеры IBM, то обнаружил, что некоторые популярные игры, с которыми я был знаком по “Ямахе”, есть и здесь. Теперь почувствуйте разницу: на “Ямахе” такая игра занимала от 20 до 60 Кб, на IBM от 200 до 600. Причем графика на “Ямахе” была лучше. Это и есть пример программистского мастерства.

Памяти мастера

Мы все друг у друга учимся. Вспомнилось начало 80-х.

Я был аспирантом на кафедре теор.физики ну и занимался расчетами на ЭВМ. В какой-то момент вышел на ЕС ЭВМ, так как персональный компьютер (ДЗ-28), о котором я написал выше, просто не тянул — программа выполнялась чрезвычайно медленно.

На кафедре у нас был сотрудник Александр Иванович Зайцев. Он, к сожалению умер некоторое время назад, сейчас начал было искать его фотографию в Инете и не нашел. А когда-то была. А говорят, что всемирная паутина все хранит. Он тоже был физик-теоретик, ну а вся теоретическая физика давно уже делается на ЭВМ. Саша был блистательный программист. На этаже у нас был такой закуток, за шкафом стояло несколько кресел и стол. Там восседал Саша Зайцев с неизменной папироской (курил только папиросы), а к нему стояла очередь аспирантов, а иногда и преподавателей. У всех были рулончики - распечатки их программ и результатов. Писали все или на Фортране или Алголе. Саша брал рулончик, разворачивал его, пробегал программу, смотрел результаты, причем с огромной скоростью, тыкал пальцем в ту или иную строку программы, говорил что делать и брал следующий рулончик. Иногда соскакивал и бежал в буфет пить кофе, ну и мы с ним обычно ходили. Потом процесс возобновлялся. Саша был удивительный человек. У него было сделано работы на несколько диссертаций, а ему было лень этим заниматься. Правда его потом уговорили все таки и он защищался приблизительно в то же время, что и я. А спустя время он стал доктором, а теперь его уже нет. Был ли он учителем для меня в программировании или по жизни — я не знаю. Память моя хранит этого человека. Доброго, отзывчивого и очень талантливого физика и программиста.

Пирогов В.Ю. 1997-2022, (c)


Рецензии