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

Top.Mail.Ru

НОВЫЙ ПОВОРОТ

Рубен Герр

Публикация в журнале PC MAGAZIN/RUSSIAN EDUTION. 1998. N10. C.88-90.

Конечные автоматы как инструмент для борьбы с монополизмом

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

Недавно в редакцию PC Magazine/RE пришла по почте книга А.А.Шалыто "SWITCH-технология. Алгоритмизация и программирование задач логического управления" (СПб.: Наука, 1998). Книгу эту любезно прислал нам сам автор. В монографии показывается, каким образом можно пересмотреть концепции программирования, если рассматривать программы как конечные автоматы. Представлять современные системы, управляемые событиями, именно таким образом настолько естественно, что единствен- ная мысль, которая возникла у меня после внимательного ознакомления с книгой, была: "Почему до этого никто раньше не додумался?".

На самом деле этот подход уже отчасти реализован в трансляторе Visual Basi, правда, несколько неуклюже и непоследовательно. Теории программирования, в той или иной степени опирающиеся на модель конечных автоматов, уже были, но в этих теориях базовая концепция обрастала разнообразными надстройками, которые, по мнению Анатолия Шалыто, совершенно излишни и только затемняют суть проблемы.

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

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

Я уже когда-то писал о том, что технология издавна работала против тоталитаризма: неугодные властям стихи и песни распространялись на магнитофонных лентах (когда появились магнитофоны), для тиражирования книг применялись компьютеры. Похоже, что на этот раз технология подорвет основы монополизма. Пользовательский интерфейс патентами почти не защищается, и объявить его объектом интеллектуальной собственности затруднительно - ведь придется доказывать, что все в нем разработано именно обладателем этой "собственности". А программные ко- ды будут сгенерированы автоматически. Понятие "интеллектуальной собственности" звучит неоднозначно уже в наше время, в самом деле, имеет ли какое-нибудь отношение к программе разработчик транслятора? А автор языка программирования? Если задуматься над этими вопросами, становится ясно, что однозначного и безусловного ответа на них не существует. Появление и распространение трансляторов нового поколения еще более обострит имеющиеся противоречия. Возникает вопрос, а является ли объектом интеллектуальной собственности точная формулировка решаемой задачи?

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

Если бы интеллектуальной собственностью были объявлены алгоритмы, распространять исходные тексты вместе с программами можно было бы уже сейчас: попробуй только воспроизведи у себя - по судам затаскаю! Правда, надо было бы, программа действительно содержала что-то новое, и не некоторым "новаторам" пришлось бы тяжко. С появлением же трансляторов новейшего поколения пересмотр законов и вообще всех взаимоотношений, относящихся к компьютерным программам, станет насущной необходимостью. В действительности такая необходимость назрела и без того, но компьютерная грамотность проникает в среду законодателей явно недостаточно высокими темпами.

Новый подход совсем не за горами. В CASE-технологиях некоторых фирм нечто подобное есть уже сейчас. Осталось только распространить опыт на более общие задачи. А может быть, у некоторых компаний трансляторы "граф переходов - исполняемые коды" уже есть, просто эти трансляторы держатся в тайне и применяются только внутри фирмы? Мне это предположение кажется очень правдоподобным.