Отправляет email-рассылки с помощью сервиса Sendsay

Бизнес on-line

  Все выпуски  

Softcraft: новости сайта и не только (021)


Служба Рассылок Subscribe.Ru

Softcraft: новости сайта и не только (021)

http://www.softcraft.ru

Я приветствую всех своих подписчиков!


Опять произошел большой перерыв в обновлении и, как следствие, в рассылке. Причина как всегда банальна: нехватка времени, связанная с выполнением основной работы. Не удалось даже отметить годовщину сайта! Как-никак, а один год удалось продержаться на плаву! Конечно, стимулов в поддержке персональных страниц не так уж и много, но раз уж взялся за гуж...

Материалы, предлагаемые в этот раз Вашему вниманию, не являются оригинальными. Статья А.А. Шалыто и Н.И. Туккеля " Программирование с явным выделением состояний" уже увидела свет в журнале "Мир ПК". Однако она подготовлена и выложена на сайт по просьбе авторов, создающих в автоматном разделе целостный портрет SWITCH-технологии. Тем более, из их письма следует, что авторский экземпляр немного отличается от опубликованного. Для еще более полного дополнения SWITCH-картины выложены присланные мне рецензии на эту же тему, взятые из разных источников. Маркетинг - дело тонкое, а потому без грубого вдалбливания не доходит. А так как ссылки на рецензии уже встречались в статьях, опубликованных на сайте, то необходимость их повторного хранения, но в одном месте, вполне оправдана. Итак, сюжет полотна полностью прописан. Ну а отдельные дополнительные штрихи будут добавляться со временем.

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

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

Подобные рассуждения показывают, насколько альтернативен мир программирования. Зачастую одни и те же процессы моделируются различными моделями, а разные модели реализуются совершенно одинаковыми по структуре программами. Ведь использование переключателей (switch) - это один из основных методов реализации таблицы переходов автомата с магазинной памятью. Подобные сравнения приводят меня к очередной "крамольной" мысли, что авторы switch-технологии, в ходе программной реализации, моделируют конечный автомат другим автоматом, который даже можно считать более простым, чем автомат с магазинной памятью. Этот автомат с одним состоянием содержит одну ячейку рабочей памяти, в которой хранится число St, определяющее состояние однояйцового, пардон, одноячеечного автомата. Существует также функция St+1 = F(St), определяющая следующее значение переменной, моделирующей состояние. Таким образом, мы приходим к тому, что состояние автомата - это и процесс, и состояние переменной.

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

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

В заключении остается только пожелать всем (и авторам, и читателям) дальнейших успехов в продвижении автоматного программирования. Хотя, лично я сомневаюсь, что новый переворот (слова Р. Герра) будет связан именно с ним. Многозначность переменных, определяющая развитие программирования предлагает учитывать и другие факторы.


С наилучшими пожеланиями!

А.Л.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

В избранное