SoftCraft
разноликое программирование

Top.Mail.Ru

"Автоматным путем" (или неформальные соображения к формальному юбилею статьи "Автоматные схемы программ")

К статье: "Автоматные схемы программ"

Двадцать лет - срок, когда можно подводить итоги (но лучше предварительные).
Двадцать лет - это когда есть что вспомнить, но ... все труднее это сделать :-).
Двадцать лет - срок, когда есть чем поделиться при условии, конечно, что есть чем.

Публикацией статьи "Автоматные схемы программ" мне хочется что-то "вспомнить", чем-то "поделиться", а где-то, возможно, уже и "подвести".

Итак, более чем двадцать лет тому назад молодой специалист, представлявший себя в роли электронщика, но по воле случая назначенный быть программистом, был брошен на кодирование алгоритма под названием "Безопасность". (Одно название чего стоит!) Ему группой кандидатов наук и инженеров в форме блок-схемы поставлялся алгоритм, представляющий собой математическую модель некоего технологического процесса. Модель (блок-схема) часто изменялась, да и работала не очень хорошо и стабильно. И естественно, что "крайним" был ... он!

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

Но … ТР имели определенные недостатки, которые нужно было устранить И здесь, кроме Э.Хамби, программисту очень помог Э.Йодан со структурным программированием, да и Майерс со своей маниакальной надежностью. Они-то и вывели на литературу по автоматам. И здесь сразу выразить отдельную благодарность Ф.Льюису, Д.Розенкранцу и Р.Стирнзу за их замечательную книгу. Благодаря упомянутым лицам (их книгам, конечно) и многим и многим другим, недостатки ТР были успешно преодолены (но как сейчас с ними у ТР обстоят дела, честно говоря, не знаю).

Но в 1979 году программиста призвали исполнить свой "долг". И на целых два года офицерская шинель, устав и взвод солдат заменили ему инженерный халат, пульт еще не так давно родной мини-ЭВМ М-6000 и клавиатуру "Консул"-а только-только появившихся микро-ЭВМ "Электроника-60".

В 1981 г. "долг" был успешно исполнен, и все вернулось "на круги своя". Только задачи стали другими. Теперь бывший офицер получил в почти единоличное распоряжение мини-ЭВМ СМ-1420. "Безопасность" была забыта, но не забыты ТР и автоматы. А тут еще друг, который и перетащил его в новый отдел, где занимался разработкой источников питания и других сложных устройств на базе последнего тогдашнего "писка" - микропроцессора К580. Нужно было разрабатывать еще и схемы со сложной логикой, для чего были привлечены микропрограммные автоматы. И вот тут появились Баранов, Майоров с Новиковым и т.д. и т.п. Да, в отделе еще был фотокоординатограф КПА-2000 (?), спроектированный так, как это было описано в "учебниках" упомянутых авторов. Программист-электронщик прямо "тащился" от документации и конструкции КПА. С тех пор это устройство - так и не превзойденный эталон в проектировании "железа".

Именно в это время все "автоматное" в основном и сформировалось. Дальше было - совершенствование. В течение 1981-1983 г.г. была сформулирована модель программ, остающаяся почти в неизменном виде и до настоящего времени, и ее реализация (хоть та была на ассемблере, а нынешняя на С++). По сути прежней осталась и параллельная автоматная среда, созданная в то время в рамках однопрограммной ОС РВ (RSX-11M, кажется), и ее аналог на "Электронике-60". Прошли и первые "бои" за отстаивание автоматной модели на научных семинарах. Из них, документально зафиксированных, можно упомянуть:

  1. Тимофеев Ю.В., Калинин И.И., Любченко В.С. Исследование вопросов экономии памяти УВМ М-6000 для решения задач оптимального управления техпроцессом. - Изв. Вузов СССР, Электромеханика, 1978, №7.
  2. Любченко В.С. Мультипрограммная система без прерываний на базе микроЭВМ "Электроника-60". - Изв. Вузов СССР, Электромеханика, 1983, №8.

Если в [1] это были в основном еще ТР, то в [2] уже прямо было сказано, что: "Рассмотрена система разделения времени на основе модели конечного автомата с настраиваемой структурой. Предлагается способ представления программ пользователей, основанный на моделировании управляющей части логики программ конечным автоматом". В то время перестраиваемые структуры были очень популярны (Евреинов, Прангишвили, Каляев и др.)

В этот же период, в 1983 г., была написана и предлагаемая вниманию статья "Автоматные схемы программ". Опубликовать ее, правда, не удалось. Тогда все это было гораздо сложнее как по самой процедуре, так и по времени и потому как-то не очень хотелось тратить на все это время (вот она - беспечность молодости!). Однако 18.05.1984 г. статья все была представлена на семинаре "Теоретические и прикладные вопросы технической кибернетике" (научн. руководитель семинара - А.Н.Мелихов) в г. Таганроге в ТРТИ в форме расширенного доклада с одноименным названием "Автоматные схемы программ" (расширение было связано со сравнением с другими параллельными моделями - сетями Петри, А-схемами программ и т.п.). Там же состоялась моя первая и, к сожалению, последняя личная встреча и беседа с А.Н.Мелиховым.

Вот очень кратко о начале "Большого автоматного пути". Это уже потом была переписка с А.Н.Мелиховым, а после переезда поближе к Москве встречи с О.П.Кузнецовым, было приглашение и Д.А.Поспелова сделать доклад на ВЦ АН СССР (так и не состоявшийся) и другие события. Было много - результатом чего стала … FSA, модели МКА и СМКА и т.п.

Теперь все вспоминать и интересно и грустно. Интересно, т.к. воспоминания по-прежнему яркие (за исключением "перестроечного периода"), а грустно, т.к. обстоятельства могли быть и таковы, что было больше повода говорить собственно о КА-технологии.

И очень грустно, когда сознаешь, что, к глубокому сожалению, уже нет в живых А.Н.Мелихова, нет и совсем рано ушедшего моего "оппонента" из соседнего ОКБ В.Букина (см. ссылку на его работу в статье). Грустно, когда вспоминаешь, что нет В.М.Глушкова (он к нам один раз приезжал в институт, как бывший студент нашего же факультета). И уж совсем свежая "рана" - смерть Амосова (его и Глушкова совместные идеи оказали на меня в свое время большое влияние). Поразило, когда совсем недавно ушел из жизни Э.Дейкстра.

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

Вспоминая, можно кого-то забыть упомянуть, но не дай бог кого-то забыть! Упомянул я очень немногих, но помню всех! Особенно тех, кто все эти годы терпел меня рядом ... Живым - моя нынешняя благодарность (все еще терпят, мои хорошие:)! Ушедшим - светлая память!

Вячеслав Любченко

К статье: "Автоматные схемы программ"