Перейдя на работу обратно в институт кибернетики, я впервые столкнулся с ЕС ЭВМ. Тогда там стояла ЕС-1020, которую довольно быстро заменили на ЕС-1022. Работали мы на PL-1, писали программы для Гражданской обороны Узбекистана. Задания были примерно такими: Даются координаты на карте некоего удара — химического, ядерного или бактериологического; задаются скорость и направление ветра — надо расчитать облако. И не только расчитать, но и напечатать (опять на АЦПУ!) это самое облако, смасшабировав относительно карты! То есть опять пересчет из кртографических координать в целые, причем, облако может быть "широким" — шире полосы бумаги, поэтому надо было печатать его полосками! Особенный кайф получался. когда облако длинное, а по ширине не влезает 1-2 символа — получалось практически чистая полоса бумаги, которую мы использовали для написания следующих программ, или просто для печати андеграудной литературы! Режим работы был отчужденный — мы сдавали вечером колоды перфокарт в ВЦ, а утром забирали распечатки с результатами работы. Представляете, если в программе была простая опечатка, ты наутро получал кучу синтаксических ошибок!? Да и режимность была: после сдачи программы в эксплуатацию любые изменения в ней делались по акту! Акт гласил, что из колоды изъято столько то перфокарт, номера такие-то, а добавлено столько то перфолкарт — новые номера такие-то. Вот была жизнь, блин! Работали мы тогда в оси ДОС ЕС. Задание оформлялось с помощью упрощкенного варианта операторов JCL Job, EXEC, DD и у меня не оставило особых следов в памяти. Вот когда я перешел в соседний отдел, и там мы уже начали работать в ОС ЕС, это уже как-то отложилось. Отдел занимался разработкой задач, оптимизирующих расход ресурсов в городских сетях: тепловых, водопроводных, канализации и так далее... Постановку задач делало отдельное подразделение, которое выпускало по каждой задаче документ. Этот документ попадал в сектор программмирования и наш начальник уже распределял, кто будет писать. Начальник был в программировании — не очень компетентен, поэтому задачи попадали в руки почти случайным образом. Помню смешной случай: разработчица, занимающаяся постановкой какой-то задачи по канализационной сети, принесла ГИПу (Главный Инженер Проекта) документ, в названии которого неосторожно написала слово "расход". ГИП был мужик остроумный и не преминул тут же ее поддеть: расход чего? Фекальных вод что ли? Ты уж напиши! Бедная не знала, что лепетать в ответ... Режим работы на компьютере у нас опять был индивидуальный — ма арендовали время в статистическом управлении и заказывали время еженедельно. Причем, можно было работать и днем. Тут я довольно быстро освоил работу с библиотеками и перестал таскать колоды — только корректировку. У компа был пульт оператора — это была все та же пишмаш Koнсул, выпускаемая в ГДР. Ох и трещал же он, когда сообщения печатал! Программист работал на компе как оператор тоже. И должен сказать, язык оператора, и язык управления заданиями — это были две большие разницы. Job Control Language состоял фактически из трех команд Job, Exec, DD (Data Definition — кажется). Но каждый из операторов JCL включал огромное количество параметров. Особенно это касалось DD, в котором прописывалось все, касающееся набора данных на дисках. Из командыы Exec (ехец, как мы ее называли) можно было передать информацию в программу из поля Parm. Считалось, что программист, который может написать программу получения этой информации — а писать надо было на ассемблере — очень хороший спец. Могу гордиться, что в соревновании с комендой, разработавшей СУБД ИНЕС-2 (а это коллектив под управлением Михаила Донскова — одного из создателей Каиссы, первой шахматной программы-чемпиона) я вышел победителем. У них в системе Инес-2 программа получения информации из поля Parm содержала 43 команды, а мне удалось уложиться в 42! И короче я уже больше нигде не видел. На этой работе я довольно хорошо освоил PL-1. Патался использовать препроцессор — была у этого языка такая фишка. В качестве операторов использовались те же операторы, но спереди стоял знак % можно было писать даже процедуры — и все это в рамках того же языка, не изучая новых конструкций. Пытался я использовать и оператор On, но быстро понял, что задачи несколько не те. Но более всего мне запомнилоась моя попытка использовать списки для обработки входной информации. Так как количество входа было неизвестно заранее (и проектировщики ничего вразумительного сообщить по этому поводу не могли) я решил организовать на входе односвязный список. Я смог его реализовать и отладить (учтите, что нам ничего подобного в универе не читали — просто не было таких преподов, и книжек еще было мало — но я именно по литературе сработал). Но испытав на практике все прелести управления динамической памятью я для себя решил, что больше НИКОГДА в асучной задаче динамику использовать не буду — себе дороже! Так и держусь до сих пор... Ну, а в 1981 году я перешел на другую работу и тут уже попал на дисплеи — расскажу завтра. |