Страница с сайта Владислава Пирогова Ассемблер и не только.

Из набросков к книге “Записки "старого" программиста”. Пирогов В.Ю.


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

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


В 1983 году я после армии учился в аспирантуре на кафедре теоретической физики института им. А.И.Герцена в Ленинграде. Мне нужно было решить систему нелинейных дифференциальных уравнений. С частным, линейным случаем я справился аналитически, а вот в общем виде систему можно было решить только прибегнув к помощи вычислительной техники. Почему то мысль о том, что придется работать в вычислительном центре вызывала у меня страх. "Ну вот", - сказал как то мой руководитель, - "нашей кафедре по хоз.договору передали персональный компьютер, и все боятся к нему подходить. Разберись, как раз и для твоей диссертации пригодится". В одной из аудиторий, за шкафом находилось это чудище. Около года и я прожил за шкафом и полюбил это существо. Вы, представляете себе калькулятор. Так вот, сам компьютер был копия калькулятор, но размером со стол. На нем были клавиши, маленький экранчик, в общем можно было программировать непосредственно в машинном коде. Впрочем, особой необходимости в этом не было, т.к. к компьютеру подключались обычная клавиатура и дисплей, а с помощью магнитофона можно было загрузить язык программирования.
Свою первую программу я написал на Бэйсике. Впрочем для моей задачи это было слишком медленно и я перешел на другой язык, который также прилагался к компьютеру -Фортран-MS. Ничего более странного я не встречал. Этот язык был гибридом двух языков Фортрана и Алгола. Программу можно было писать на одном из них либо на обоих сразу. Бог уберег меня - у меня оказалась книга только по Фортрану, что в дальнейшем дало мне возможность легко перейти на большую ЭВМ ЕС и завершить свою диссертацию. А кто знает, как бы развивались события, если бы у меня была книга и по Алголу.
Для того, чтобы получить средний результат и вычислить различные корреляционные функции мне необходимо было произвести минимум двести расчетов. На один расчет моя программа тратила около 10 часов. Я приходил к себе за шкаф к 8.00 и уходил около 6 вечера. Иногда выключали свет и я уходил раньше. В общем к концу года я понял, что если я хочу защититься то мне придется перебираться в вычислительный центр. Но это уже другая история.
Но вот какой вопрос меня до сих пор мучит: что означает название компьютера ДЗ-28. Может быть, вы знаете?

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


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

ВЦ в ШГПИ.


В 1986 году я прибыл на работу в ШГПИ. К моему удивлению и радости в институте уже существовал ВЦ. Штат ВЦ состоял из двух человек. Был единственный компьютер "Искра-1256". Кстати в СССР ходило несколько "Искр". Эта была абсолютно не совместима с IBM. Имела свой, весьма своеобразный язык программирования и встроенный магнитофон, позволявший работать с файлами прямого доступа. Сам ВЦ помещался в одной из физматовских аудиторий (кажется в 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. Причем графика на “Ямахе” была лучше. Это и есть пример программистского мастерства.

Пирогов В.Ю. 1998, (c)