Рустэм Валеев: Как я писал программы на ДВК

Рустэм Валеев

1986 год. Советский Союз. ДВК 2М - для своего времени это был суперкомпьютер. Во первых, он был персональным. Вполне приемлемого размера, помещался на стол. Во-вторых, у него было огромное быстродействие - целых 10 или 20 тысяч операций в секунду. Да-да, тогда быстродействие измерялось не тактовой частотой процессора, а именно операциями с двоичными числами. И, в третьих, у него было ОЗУ огромной емкости - целых 64 килобайта! Туда спокойно помещалась операционка, программа Бейсик, текст прикладной программы и ее данные. Чего в ДВК не было - так это винчестера. А значит, и записанной на нем операционки. К ДВК прилагался болгарский блок дисководов с дискетами 5,25'. В верхний я вставлял дискету с операционной системой и бейсиком. А в нижний - дискету с прикладной программой и данными. Компьютер был отечественный, но сильно продвинутый. Поэтому он зависал и перегружался не чаще двух раз в день. При перезагрузке пропадали не только операционка в ОЗУ, но и, скажем, набитый за пару часов в бейсике текст новой программы. Помню, как я долго не мог прийти в себя, когда в обед компьютер завис и унес в небытие пять страниц готовой программы! Как я в ужасе бегал вокруг стола и думал «ну должен же где-нибудь остаться хоть какой-то след от такого серьезного труда!» Но увы, след оставался только в моем мозгу. Именно тогда я впервые столкнулся с таким интересным феноменом — написанная повторно по памяти программа была всегда лучше прототипа! И короче, и работала быстрее :)

Со спонтанными перезагрузками ничего нельзя было сделать. Более того, мы искренне радовались, что они не такие частые, как на больших машинах. Например, перезагрузки на ЕС ЭВМ 1036 случались раз в полчаса-час, и считались нормой! Так вот, для того, чтобы не терять новую программу при каждой перезагрузке, нужно было ее периодически сбрасывать из ОЗУ на дискету. Но. Тут-то и начиналось самое интересное. Болгарский дисковод записывал программу на дискету. Иногда. Но не всегда! Чаще он шипел, трещал, свистел, но... не записывал! Через минуту шипения и свиста появлялось страшное сообщение “Write failure error” и можно было переходить к новой попытке. Иногда, после трех-четырех попыток, файл все-таки записывался. Однако. Не было никакой гарантии, что он прочитается! «Read failure error” — это было менее ужасное, но не менее редкое сообщение системы. И вот бывает, сидишь ты за компьютером, в конце рабочего дня, смотришь на листинг программы на экране и пытаешься ее хотя бы запомнить. Потому что записать ее не получается! Ну ни как! Это ужасное чувство, думаю, напоминающее то, которое должен испытывать человек, бегущий за последним вагоном электрички, уже коснувшийся поручня, и вдруг осознающий, что поезд-то ушел!!!

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

Мы предпринимали различные способы «улучшить» работу болгарского дисковода. Например, пользовался популярностью такой способ. Покупался настольный вентилятор. Он ставился в коробку из-под бумаги. В коробке вырезались две большие дырки. Одна — для поступления воздуха. А вторая, квадратная, — для болгарского дисковода. Он устанавливался в эту дырку и интенсивно охлаждался потоком воздуха. Кто-то свято верил в такие «усовершенствования», я же считал, что это все равно, что камлать на бубне — никакой гарантии. Или запишет, или нет. 50 на 50. Вот тогда-то во мне и зародилось первое глубокое сомнение в братстве народов, СЭВ, и целесообразности социалистического пути развития. Боже мой, как же я проклинал братьев болгар — криворуких безжалостных убийц моего времени!

Операционная система, которую мы тогда использовали, тоже была очень интересной. Загружалась она секунд десять, и записывалась на диск в виде одного или двух файлов. RJ11 и еще пару букв после. Или RT12 – точно мне уже не вспомнить. Но вот что я запомнил очень хорошо. В отличие от MS DOS, которая появилась чуть позднее, операционка эта обладала намного большими количеством удобных команд. Например, могла выдавать список файлов с подкаталогами, а DOS не умел этого делать! «Убожество» - вот первое мое ощущение от использования DOS. Однако, мы все таки перешли на DOS окончательно и бесповоротно, когда поняли, что под ней «идут» все новые программы и игрушки, а программ для RT (или RJ ) становится все меньше!

И вот, не смотря на всякие трудности, вот на таких машинах и таких системах, мы все-таки умудрялись писать программы, которые пытались решать серьезные задачи. Помню первую свою программу на ДВК и бейсике. Это была программа расчета заработной платы для Водоканала. Она работала примерно так. Сперва загружалась система. Потом — бейсик. Потом — Главная программа. Она просила вставить в нижний дисковод дискету № 1 с данными цеха 1 за январь 1986 года. Расчетчик мог отредактировать данные работников, ввести табель и посчитать зарплату за месяц. После этого, если дисковод работал, ему даже удавалось сохранить результаты расчета! Если он хотел их распечатать, Главная программа просила вставить диск с Программой для печати, потом — диск с данными цеха, потом — диск с Главной программой. Потом вставлялась дискета номер 2 для цеха номер 2, и так далее — до диска номер 42. 42 цеха были в Водоканале. И ни разу нам не удалось просчитать их все. Или болгарский дисковод перегревался и останавливался (зачастую уже навсегда). Или расчетчик что-то путал и записывал на диск номер 2 данные цеха номер 17. И неделю, матерясь, их восстанавливал. А что делать — дискет для архива просто не было! Или, если все шло хорошо, в каком нибудь 27 цехе обнаруживались новый вид расчета или ошибка в алгоритме, и все приходилось начинать заново! Помню, что благодаря тому ужасу, который вызывала необходимость дойти с такой технологией «до конца», все-таки было принято разумное решение принять программу у программистов по акту на примере двух цехов, и продолжать считать зарплату в бумажных расчетных ведомостях «в связи с ограниченностью по времени расчета». В оправдание можно добавить только одно. Программа для расчета зарплаты водоканала была нами все таки написана чуть позже. На Искре-1030, foxbase и первом советском 10 мегабайтном винчестере. Проработала она больше 10 лет, непрерывно развиваясь и безболезненно переходя на все новые версии операционных систем Майкрософт.

Расскажите коллегам:
Эта публикация была размещена на предыдущей версии сайта и перенесена на нынешнюю версию. После переноса некоторые элементы публикации могут отражаться некорректно. Если вы заметили погрешности верстки, сообщите, пожалуйста, по адресу correct@e-xecutive.ru
Комментарии
Аналитик, Москва
Рустэм Валеев пишет: по штуке на организацию или на отдел.
Это точно и справедливо! Жаль нет уже ни Ершова, ни Жеребцова, кто смог бы описать историю электронных вычислений в России. Как например, Фейнман: ''Вы, конечно, шутите, мистер Фейнман!''. Драма и трагедия с комичными синхронами (как у Дмитрия Зорина). Было время, когда всерьёз приходилось доказывать, что каждому программисту нужен свой ПК. Или отвечать на вопрос эффективности интернета и стоит ли его ''вводить''.
Дмитрий Зорин Дмитрий Зорин Адм. директор, Украина

Помню как мой товарищ кричал (по поводу того, что в его ''машинное время'' комп был занят):''Вашу мать! Он даже называется ПЕРСОНАЛЬНЫЙ компьютер!''

Владимир Зонзов +10253 Владимир Зонзов Директор по производству, Украина

Рустэм Валеев, затронув тему «Как я писал программы на ДВК», напомнил о прекрасных временах.
Наверное, по теме будет вспомнить, как я дошел до такой жизни – писать программы для ЭВМ.
=====================================.

Сначала – общая причина.
В университетских курсах физики и математики изучают, в основном, точно решаемые задачи. А в жизни такие задачи – редкость. Потому необходимы приближенные вычисления. А они требуют применения компьютеров.

А теперь – конкретная причина.
1975-й год. Работал я м.н.с-ом в НИИ черных металлов. В металлургической промышленности, на ковшах для разлива стали по изложницам, планировалась замена стопорных затворов на шиберные.
[COLOR=gray=gray]/// Справка.
Стопор – это толстый металлический прут с нанизанными на него огнеупорными кольцами. Подьём стопора рычагом, открывал отверстие в днище ковша. Происходил слив металла. Опускание стопора перекрывало отверстие. Слив металла прекращался.
Шиберный затвор – это две огнеупорных плиты в металлическом кожухе. Одна из плит - подвижная. В каждой плите есть отверстия. Если они совпадают – происходит слив металла. Если не совпадают – слива нет.///[/COLOR]
Но, огнеупорные плиты шиберных затворов, по сроку службы, не выдерживали и одной разливки. Руководитель темы привёл меня – молодого специалиста – в мартеновский цех, показал очередную аварийную разливку и дал задание: «Разберись и скажи, какими должны быть огнеупорные плиты!».
Я не знал, как решить эту задачу. Да и задачи-то не было. Был показ ситуации. А постановку задачи нужно было еще придумать.
Учёба в университете приучила меня к математическим моделям. Вот я и решил: построю модель процесса распространения тепла в плите; и, соответственно, термических деформаций-напряжений. Изучу её. Там, где термические напряжения превзойдут предел прочности материала, плита – треснет-разрушится. Значит, нужно, по модели, подобрать такой материал для плиты, чтобы этого «превзойдут» не было.
Модель – понятна: система связанных уравнений теплопроводности и упругости. Почитал я книгу Самарского. Переписал систему в виде разностных уравнений. Выяснилось, что мощности Минск-22 не хватит для решения трёхмерной задачи. Значит, нужно решать двумерную задачу. Это показалось возможным. Потому что, на плоских границах огнеупорной плиты (верх-низ; контакт с металлическим кожухом) происходили потери тепла. Что снижало температурный градиент. И, соответственно, снижало величины термических деформаций и напряжений. Поэтому, предположение о бесконечной толщине огнеупорной плиты «ужесточало» задачу, в смысле искомого результата. Таким образом, система уравнений стала двумерной.
Следующей «непоняткой» было определение граничных условий на внешнем торце плиты. Поговорил с математиками в университете.
[COLOR=gray=gray]/// Справка.
Я попробовал «сплавить» на математиков решение задачи. Поговорил: с член-кор-ом – специалистом по уравнениям математической физики; с завкафедрой уравнений матфизики; со «свежеиспеченным» к.ф-м.н. Но они, последовательно покивав на другого, не согласились. Что и понятно: у каждого из них были свои задачи.///[/COLOR]
Из вопросов математиков, заданных в порядке уяснения задачи, я понял, что для них, разные границы – круг с отрезанными сегментами, овал, эллипс – приводят к разным задачам. А для физика, с учётом допустимой погрешности результата, это – одна задача.
Тогда я вспомнил (где-то читал) что распределение напряжений в обшивке корабля не замечает наличия иллюминатора на расстояниях бОльших пяти диаметров иллюминатора. Это подсказало мне, вообще – исключить учёт влияния внешних границ. Таким образом, получилась одномерная задача (в полярной системе координат).
Связанность уравнений теплопроводности и упругости (в разностном виде) убрал следующим образом. Термические деформации и напряжения, для каждого шага по времени, стал определять по температуре с предыдущего шага времени.
Теперь, нужно было написать программу – компьютерную модель – и посчитать по ней. Но, в те времена, это делали только работники ВЦ. Что исключало, для меня, «диалог» с моделью.
Тогда, пошел я к своему сокурснику. Он показал мне, как писать программы на АЛГОЛ-е; как «набивать» их на перфоленту, на телеграфном аппарате СТА. И как «щелкать» тумблерами на ЭВМ Минск-22. На ВЦ Института прикладной математики, к счастью, не было штата программистов и операторов. Поэтому пользователи работали на ЭВМ сами. Сокурсник, также, предоставлял мне и машинное время. Заказывая его с учётом моих потребностей. Мне больше нравилось работать по ночам. Легче было с заказом времени.
Изучение полей термических деформаций-напряжений, для разных материалов, показало следующее. Лучше всего противостоят термическим деформациям-напряжениям «рыхлые» огнеупоры. Такие, как шамот. Но, шамот легко поддаётся эрозии-размыву от струи металла. И наоборот. В материалах, стойких к эрозии-размыву, развиваются нежелательно большие значения термических напряжений.
Поэтому, очевидным показалось решение сделать в плите из шамота вставку из материала стойкого к эрозии-размыву. А чтобы термические напряжения во вставке не превосходили предела прочности материала, нужно было, чтобы вставка имела не слишком большую толщину по радиусу.
Таким образом, задача была РЕШЕНА.
[COLOR=gray=gray]По результатам расчётов, я написал главу в итоговый отчёт по теме. По указанию руководителя группы, составил заявку на авторское. Поучаствовал в написании ТУ, по которому плиты должны были изготавливать на огнеупорных заводах.
Сейчас огнеупорные плиты для шиберных затворов сталеразливочных ковшей делают такими, как я их описал в отчёте 1975-го года.[/COLOR]

Так я начал писать, компьютерные программы, для своих задач.

Консультант, Москва
Владимир Зонзов пишет: 1975-й год. Работал я м.н.с-ом в НИИ черных металлов. ... ... Так я начал писать, компьютерные программы, для своих задач.
Владимир Иванович, браво! Не нашёл смайлика со снятой шляпой - так что просто словами: СНИМАЮ ПЕРЕД ВАМИ ШЛЯПУ!
Аналитик, Москва

Действительно, рассказ Владимира Ивановича впечатляет.

Хочу сказать, что меня всегда в программировании привлекали исследования на границах наук, это всегда было коньком нормального программиста. Например, я писал программу расчёта восхлда и захода Солнца для разных широт и долгот. Не думайте, что это просто. Тем более тогда в моём распоряжении была только СМ-2 и её 16 разрядов не хватало для астрономических переменных. Кто это мог знать? Толькео программист.

У меня есть один старинный друг, ему за 70, он только что оставил работу. Он рассказывал, как в конце 50-х они расчитывали траектории ракет. Это совершенно отдельный рассказ.

Консультант, Москва
Анатолий Курин пишет: что меня всегда в программировании привлекали исследования на границах наук, это всегда было коньком нормального программиста.
Да, верно, мне тоже всегда нравилось решать задачки ''на стыке'', при решении которых даже азарт появлялся - особенно когда чувствуешь, что вот оно, где-то рядом. Как-то пришлось делать решение задачи поиска комплексных корней уравнений 12-го порядка (динамика взаимодействия ж/д пути и подвижного состава, если кто в курсе). Делал на Турбо-Си, на PC-486 (да, уже не Урал и не Минск, и не БЭСМ-6, так что вычислительной мощности и ''персональности'' компьютера уже хватало). Весело было запускать итерации, когда решение приближается к зоне корня (но всё ещё вне допустимого предела погрешности), и вдруг резко уходит от него. Я уж и метод Ньютона, и Гаусса пробовал... Пока не нашёл решение - насильно ловил расхождение, возвращался на последнюю близкую точку, менял инкремент насильно (вычислял поправку), и загонял таки в нужную зону. И вот ведь лень человеческая - не опубликовал решение... Хотя как всё это делалось - уже не помню - лет 17 уже прошло :(
Рафик Ямолеев Рафик Ямолеев Аналитик, Новосибирск
Борис Зверев пишет: Владимир Иванович, браво! Не нашёл смайлика со снятой шляпой - так что просто словами: СНИМАЮ ПЕРЕД ВАМИ ШЛЯПУ!
Генеральный директор, Уфа
Анатолий Курин пишет: ...Он рассказывал, как в конце 50-х они расчитывали траектории ракет. Это совершенно отдельный рассказ.
Отдельный рассказ - это ведь хорошо... :)
Генеральный директор, Уфа
Дмитрий Зорин пишет: Раз пошла такая пьянка, ..
В 2002 году готовили книжку для заказчиков - о компании Софт-портал. Сделал в ней раздел анекдотов о программистах. Мой любимый анкедот - как автоматизировали блюминг на ЧМЗ. ''...Блюминг на ЧМЗ (Челябинском металлургическом заводе) в далекие 70-е автоматизировал наш преподаватель по программированию. Вероятно, он ичислился ''слесарем - программистом'', но дело не в том. Его вступительная лекция о цели программирования, как профессии звучала так. Товарищи студенты, для тех, кто не знает, что такое блюминг поясняю. Пульт управления имеет 2 педали на которых располагаются ноги оператора и 2 рычага на которых располагаются его руки. И так все 6 часов - такая продолжительность смены в горячем цехе. С задачей мы справились успешно. Если не учитывать то, что однажды из-за ошибки в программе многотонный слиток улетел. Подводя итоги работы заместитель главного инженера по новой технике сказал: ''Программисты и ученые автоматизировали процесс управления блюмингом и освободили оператору левую руку. Теперь во время работы он может заниматься онанизмом''. Лекция эта имела колоссальный успех и неоднократно цитировалась. ( http://anekdot.ru/an/an0204/t020403.html#15 )
Консультант, Москва
Рустэм Валеев пишет: Лекция эта имела колоссальный успех и неоднократно цитировалась.
Дал ссылку коллегам. Успех лекции множится :)
Оставлять комментарии могут только зарегистрированные пользователи
Статью прочитали
Обсуждение статей
Все комментарии
Дискуссии
Все дискуссии