А. Лашманкин
Опубликовано в газете Самарской и Оренбургской областей
"Компьютер дома и на работе". 21.08.2001. N23 (50).
|
Данная технология может быть также названа технологией состояний
или, более точно, автоматной технологией, а соответствующая
область программирования - автоматным программированием.
|
В настоящее время весьма актуальной представляется проблема
однозначной интерпретации информации, циркулирующей между
представителями различных профессиональных групп. В случае подготовки
проектов в области создания того или иного программного обеспечения
необходимо, чтобы Заказчик, Технолог, Постановщик, Разработчик,
Программист, Оператор и контролер однозначно и полностью понимали
друг драга.
Эта проблема актуальна практически для всех классов задач. Так,
Э.Дейкстра пишет: "Я знал, что программы могут очаровывать глубиной
своего логического изящества, но мне постоянно приходилось убеждаться,
что большинство из них появляются в виде, рассчитанном на механическое
выполнение, но совершенно непригодны для человеческого восприятия. Меня
не удовлетворяло также и то, что программы часто приводятся в форме
готовых изделий, почти без упоминания тех рассуждений, которые
проводились в процессе разработки и служили обоснованием для
окончательного вида завершенной программы".
Продвижение в направлении решения этой проблемы для задач
логического управления имеет особую важность в связи с большой
ответственностью их решения для многих объектов управления, например,
для ядерных или химических реакторов, а предпосылки для такого
продвижения определяются наличием развитого математического аппарата
теории автоматов.
Значительный вклад в решение обозначенных выше проблем вносят
последние работы А.А.Шалыто в области развития теории конечных
автоматов. В его монографии "SWITCH-технология. Алгоритмизация и
программирование задач логического управления" (СПб.: Наука, 1998)
показывается, каким образом можно пересмотреть концепции
программирования, если рассматривать написание программ на основе
теории конечных автоматов. Предлагаемая А.А.Шалыто концепция
проектирования позволяет максимально подробно описывать процессы,
которые необходимо автоматизировать, используя при этом понятный всем
формальный язык конечных автоматов. Более того, предлагаемая концепция
представления информации делает понятным работу проектировщика для
проектанта. Таким образом, предлагается вполне четко описанный и
снабженный солидной теоретической, методической и программной
поддержкой универсальный метод написания, и что с моей точки зрения
особенно важно, описаний, единых для всех стадий проектирования.
На Западе давно предпринимаются попытки создать что-либо
подобное, так отчасти такой подход реализован в системах визуального
программирования (Visual Basic), правда, в очень усеченном варианте.
Суть предлагаемого подхода состоит в следующем:
-
"В рамках разработанной технологии предлагается использовать два
уровня языков - языки алгоритмизации или спецификации (языки общения)
и языки программирования (языки реализации). Языки этих классов
могут как совпадать (при наличии транслятора с языка алгоритмизации),
так и различаться между собой".
-
С точки зрения проектанта очень удобно используя ясный язык
алгоритмизации максимально формализовать задачу, тем самым на 70%
поставив ее, а, следовательно, решив на 50%.
-
В основу предлагаемой модели описания, а фактически языка
алгоритмизации, задачи автор помещает так называемый конечный автомат,
который является простейшей моделью вычислительного устройства. Эта
точка зрения на конечный автомат позволила использовать эту модель для
реализации большого количества приложений.
Из выступления на семинаре "Software 2000: a View of the Future"
10 апреля 1994 г.:
-
Brian Randell. Я помню Дуга Росса из компании SoftTech, много
лет назад говорившего, что 80 или даже 90% информатики (Computer
Science) будет в будущем основываться на теории конечных автоматов.
-
Herve Gallaire. Я знаю людей из "Боинга", занимающихся системами
стабилизации самолетов с использованием чистой теории автоматов. Даже
трудно себе представить, что им удалось сделать с помощью этой теории.
-
Brian Randell. Большая часть теории автоматов была успешно
использована в системных программах и текстовых фильтрах в OS UNIX.
Это позволяет множеству людей работать на высоком уровне и
разрабатывать очень эффективные программы.
Попытки построить некий элементарный набор правил и конструкций,
позволяющих сделать программирование более технологичным, ведутся до-
вольно давно и определенный прогресс в этом не отметить нельзя. Так за
последние 20 лет методы структурного и объектно-ориентированного
программирования внедрились достаточно прочно. Новация А.А.Шалыто
состоит в том, что он предлагает новый подход программирования на
основе конечных автоматов - автоматное программирование.
На Западе же похожая методология активно развивалась, в первую
очередь Д.Харелом. При этом диаграммы состояний (как основа автоматного
подхода к реализации различных задач, решаемых программным путем)
вошли неотъемлемой частью в основные принципы объектно-ориентированного
программирования. Кроме того, подобные диаграммы входят и в стандарт
UML. Но даже опытному программисту трудно перешагнуть некий
психологический барьер для применения принципов автоматного
программирования. На этапе становления любой новации неизбежна стадия
отрицания, так было и на переходе от машинных кодов и ассемблера к
языкам высокого уровня. Основным аргументом противников приближения
машинного языка к человеческому и тогда и теперь был один: программы,
написанные по новому будут затратными в смысле избыточности потребной
для их решения вычислительной мощности компьютера.Однако, машинные
ресурсы теперь нарастают с астрономической скоростью и на первый
план выходят затраты людского труда!
Бесспорно, что новый подход к программированию не сразу завоюет
место под солнцем. Я могу даже предположить, что косность (да, да
в современных условиях этот фактор ничуть не менее влиятелен) еще
долгое время не позволит многим вдумчиво отнестись к новой концепции
программирования, предложенной А.А.Шалыто. Однако, по мудрому выражению
Герберта Спенсера в этом препятствии заложено решение проблемы:
"Существует принцип, встающий преградой на пути любой информации,
являющийся защитой от любых аргументов, неустанно поддерживающий в
человеке вековечное невежество. Этот принцип - заведомое пренебрежение,
предшествующее познанию".
(При подготовке статьи использовались материалы различных
изданий).
|