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

Усилители интеллекта: теории, эксперименты, технологии


Усилители интеллекта: конструкторы алгоритмов 1

Уважаемые любители интеллектуальных программ!

Мы начинаем новый цикл выпусков, посвященный алгоритмическим усилителям интеллекта. Все УИ, о которых мы говорили прежде, представляли собой компьютерные программы, реализующие определенные алгоритмы. Здесь же речь пойдет о программах, помогающих синтезировать сами алгоритмы.
Это не только языки программирования вкупе с соответствующими трансляторами (компиляторами). В более широком плане к этому классу УИ можно отнести и программы, автоматизирующие составление планов, расписаний, инструкций.

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

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

Одной из попыток преодоления разрыва между конкретикой задач и абстрактностью языков программирования является концепция  В.Д. Паронджанова и его язык визуального программирования ДРАКОН. (Для тех, кто спешит, привожу прямые ссылки на книгу Паронджанова и среду программирования, реализующую язык Дракон. Соответственно: http://www.twirpx.com/file/36420/  и http://www.twirpx.com/file/36785/ ) Любопытна авторская расшифровка аббревиатуры ДРАКОН = Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность.

Цитата: "Язык ДРАКОН разработан совместными усилиями Российского космического агентства (НПЦ автоматики и приборостроения, г. Москва) и Российской академии наук (Институт прикладной математики им. М.В. Келдыша, г. Москва) как обобщение опыта работ по созданию космического корабля “Буран”. На базе ДРАКОНА построена автоматизированная технология проектирования программных систем (CASE-технология) под названием “ГРАФИТ-ФЛОКС”. Она успешно используется в ряде крупных космических проектов: “Морской старт”, “Фрегат”, “Протон-М” и др.
ДРАКОН — очень легкий язык. Настолько легкий, что разработку многих компьютерных программ для космических ракет на практике ведут не программисты, а обычные специалисты — по принципу “программирование без программистов”. Причина отказа от программистов проста. При решении практических прикладных задач специалисты досконально владеют материалом и прекрасно знают постановку задачи. В отличие от них программисты не знают “физику процесса” и становятся “лишними людьми”, без которых вполне можно обойтись. Это позволяет значительно сократить издержки, улучшить показатель “затраты—результат”, ускорить ход работ и полностью избавиться от ошибок “испорченного телефона”, вызванных взаимным непониманием между программистами и специалистами". / Паронджанов В.Д. Как улучшить работу ума: Алгоритмы без программистов -- это очень просто! -- М.: Дело, 2001. - с. 27

(Имхо, автор настолько увлечен своим проектом, что ему изменяет чувство меры. В приведенной цитате поражает первая фраза, содержащая сразу 3 ошибки: НПЦ это не РКА, ИПМ не РАН, а ДРАКОН не обобщение работ по созданию Бурана)

ДРАКОН возник не на пустом месте. Ближайшие аналоги его блок-схем - схемы действий в RAD и схемы деятельности в UML. Главное отличие ДРАКОНа от этих и других предшественников в том, что он не ограничивается функцией эскизного проектирования программ, а претендует на роль универсального средства представления технологических знаний, структуры любой деятельности и, таким образом, техноязыка междисциплинарного общения, входящего в языковую культуру человечества.
Иными словами, ДРАКОН с самого начала создается как общий усилитель интеллекта в синтезе, унификации и передаче технологических знаний. Подобный широкий замах позволяет пользоваться аналогиями и заимствовать эвристики из самых разных областей, но остается открытым вопрос - а что действительно ценного могут предложить авторы столь масштабного проекта? Не повторится ли история Алфреда Кожибского с его общей семантикой, который хотел решить проблемы цивилизации реформой языка, но лишь оказал влияние на формирование ряда научных школ (в НЛП знаменитым тезисом "карта не есть территория" и т.п.)?

По мнению скептика (Сергей К): "...на блок-схемах много не напишешь, хотя нельзя отрицать легкость освоения блок-схемного графического языка начинающими - но любой начинающий довольно быстро перестает им быть, тогда от блок-схем придется отказаться, люди начинают легко писать программы в тысячи строк, в блок-схемах это получатся простыни в два квартала длиной, исправлять и отлаживать которые технически невероятно сложно. Иными словами: блок-схемы - это давно и безнадежно устаревшая техника представления алгоритмов.
... Еще чего не видно здесь - это простой и удобной возможности создания объект-ориентированных решений - все как-то ограничено алгоритмами, а это, пардон, давно устарело (про UML тут вспомнили... а ему уже больше 10 лет, и он фактически стандарт, еще в середине 90-х знание UML являлось в США обязательным для программистов). Причем, конечно же, объектные программы - это не самоцель, это средство, инструмент - но это сегодня очень хорошо проверенный инструмент, доказавший свою пригодность и необходимость, другое дело, что его уже не хватает, когда требуется организовывать многопоточное выполнение, задействовать ресурсы N процессорных ядер - даже квалифицированным программистам это бывает довольно непросто делать - а для неквалифицированных нет вообще ничего.
В этом языке есть какой-то простейший "синхронизатор", на первый взгляд выглядит похожим на обычный семафор, но блин... как раз таки программисты хорошо знают, как сложно писать программы с семафорами - при синхронизации сама синхронизация не самоцель, целью является безопасный для данных обмен этими данными между синхронизируемыми процессами - для этого давно уже изобретены другие более удобные механизмы обмена типа портов, пайпов, сигналов - но этого ничего в предложенном языке не наблюдается... " 

Или более взвешенное мнение (Anatoly Levenchuk): "... ДРАКОНа ... волнует представление пробега точки исполнения по многовариантному будущему. Развертка во времени (планы), вот что для этого языка волнительно, а структура мира этим языком не описывается.
... ДРАКОН я бы считал примером того, как из дерьма (блок-схем) какого-то однобокого процедурного view на систему можно пытаться делать конфетку, определяя стиль использования. Важен не конкретный ДРАКОН, важен метод, который красочно и ярко демонстрируют его создатели: алгоритм сам по себе ничто, а его выражение-представление-оформление-изложение -- всё.
... Отдельный вопрос -- это сознательная ориентация ДРАКОНа на попсовость. ДРАКОН предлагает не мощные средства выражения, а понятные. У него нет задачи выразить что-то компактно/лаконично, или красиво, или встроить в себя какую-то другую нотацию/DSL. У него есть задача выразить последовательность шагов алгоритма понятно, снизить входной барьер. Это прямой антипод Форта/Лиспа (в их стековой парадигме и функциональной парадигме) и прямой наследник Бейсика в закреплении "народных операторов". Если одни языкостроители ломают (ну ладно -- не ломают, а разминают) мозги пятикурсников об свой язык, то другие языкостоители обламывают свои языки под мозг пятиклассников. И не нужно мне говорить, что "истина должна быть где-то посредине".

Реплика Паронджанова (вспомним Кожибского - речь идет уже о влиянии): "... Я не во всем согласен с уважаемым Анатолием Левенчуком. Но нас объединяет важная вещь -- внимание к эргономике. Если говорить более точно -- внимание к КОГНИТИВНОЙ эргономике. Моя позиция вкратце состоит в следующем:
КОГНИТИВНАЯ ЭРГОНОМИКА БУДЕТ ИГРАТЬ ВСЕ БОЛЕЕ ВАЖНУЮ РОЛЬ В РАЗВИТИИ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ.
...В Пилюгинском центре реализован на практике и успешно эксплуатируется в течение 12 лет метод «Программирование без прикладных программистов», основанный на использовании языка ДРАКОН. Созданная технология называется «Технология разработки алгоритмов и программ Графит-Флокс». Разработка языка ДРАКОН и технологии Графит-Флокс длилась 11 лет (с 1986 по 1996 год). Программы на языке ДРАКОН выполняются бортовым компьютером БИСЕР (разработан в нашем научно-производственном центре). Этот компьютер создан для установки на борту ракет. Он управляет полетом ракеты, управляет бортовыми системами ракеты и выполняет множество других функций.
Язык Дракон содержит декларативную часть и процедурную часть. Декларативная часть (язык Флокс) имеет специализированный характер (жестко привязана к ракетной технике). Поэтому ее нельзя рекомендовать для использования в других областях (исключения не в счет).
Процедурную часть «бортового» языка ДРАКОН можно разделить на две части:
∙ командную часть (пример команды a:=b+c)
∙ маршрутную часть, описывающую маршрут движения рабочей точки от начала до конца алгоритма (программы).
Командную часть «бортового» языка ДРАКОН я не рекомендую использовать для других приложений.
Что же остается? Остается только маршрутная часть. Она представляет собой Дракон-схему, из которой полностью удален текст (кроме слов «да» и «нет»). Вот эта маршрутная часть и представляет собой основную ценность. Назовем ее язык ДРАКОН.
В этом случае получается, что язык ДРАКОН — это сознательно недоопределенный язык. Фактически это язык схем-слепышей, из которых полностью удален текст (кроме да и нет).
Маршрутный язык ДРАКОН — это единственное, что я рекомендую. Именно маршрутный язык ДРАКОН вступает в конкурентную борьбу с аналогичными частями других языков.
Как превратить маршрутный язык ДРАКОН в настоящий язык программирования?
Надо добавить к нему недостающие части:
∙ декларативный язык и
∙ командный язык.
Откуда их взять? Проще всего, заимствовать из других языков. Если мы возьмем декларативный язык и командный язык из языка Оберон или си# и присоединим их по определенным правилам к маршрутному языку ДРАКОН, то получим гибридные языки Дракон-Оберон и Дракон-си#.
Я утверждаю: маршрутная часть языков программирования — это отдельная, самостоятельная и очень важная проблема.
Я утверждаю также, что в языке Дракон эта проблема решена лучше, чем во многих других языках.
...Первый шаг — это создание дракон-редактора. Его уже создал Геннадий Тышов. Редактор непрерывно совершенствуется. Имея дракон-редактор Тышова и больше ничего, можно конструировать любые алгоритмы. Важно отметить, что при этом ошибки графического синтаксиса полностью исключаются.
...Второй шаг - Ярослав Романченко опубликовал свои результаты по созданию гибридного языка Дракон—Active Oberon, который он назвал «язык программирования ДРОН»".

Программоиспытателям и всем любителям скачать что-то интересненькое:
последняя версия дракон-редактора от 26.09.2009 - на  http://forum.oberoncore.ru/viewtopic.php?f=62&t=1291 
транслятор ДРОН - на http://sage.com.ua/ru.shtml?e6l0

Надеюсь, приведенные выше мнения помогли Вам представить, что можно ожидать от ДРАКОНа. Разбор концепции и примеров работы с ним - в следующем выпуске.

* * *

Мне бы хотелось, чтобы все подписчики цикла о конструкторах алгоритмов по окончании его ощутили себя программистами. Для этого мы сначала разберем концепцию Паронджанова и поработаем с дракон-редактором, затем научимся писать небольшие программы на нескольких языках с помощью HiASM, а под занавес разберемся с парадигмами программирования и установим кто есть who в этой сфере.
Вот такой план - если появятся другие идеи, пишите - планы у нас гибкие... ;0)

А пока - байка о программистах:

2050 год. Дальнобойщик, везущий груз компьютеров, останавливается перекусить в одном из баров. Hа дверях кафе он обнаруживает надпись: ПРОГРАММИСТАМ ВХОД ЗАПРЕЩЕН - ВХОД ПОД СВОЮ ОТВЕТСТВЕHHОСТЬ. Он заходит и садится. Бармен подходит и принюхиваясь, спрашивает, почему от него пахнет компьютерами.
Дальнобойщик отвечает, что, должно быть, от груза, что он перевозит. Бармен успокаивается и наливает ему пиво. В это время в бар заходит худой, сутулый, небритый мужик в очках, с дужкой приклеенной изолентой. Бармен, не говоря ни слова, вытаскивает из-под прилавка обрез и стреляет в этого мужика.
Дальнобойщик спрашивает, почему он это сделал?
Hа что бармен отвечает, что в последнее время развелось столько программистов, что разрешен их отстрел, причем не требуется даже охотничьего удостоверения...
Дальнобойщик допивает пиво, садиться в фуру и едет дальше. Внезапно, его подрезают и, чтобы избежать аварии, он делает резкий поворот, от которого машина оказывается на обочине, задняя дверь открывается и часть груза рассыпается. Вдруг, со всех сторон к машине начинают приближаться странные люди: худые, небритые, жутко одетые. Первые из них уже начинают растаскивать коробки с компьютерами. Вспомнив историю в баре, дальнобойщик лезет в кабину, достает свой карабин и начинает валить воров...
Вдруг, рядом с ним останавливается патрульная машина, из которой выскакивает полицейский, бежит к нему, размахивает руками и кричит, чтобы он прекратил стрелять!
Дальнобойщик спрашивает:
- В чем дело? Мне сказали, что на программистов открыт сезон охоты. Разве не так?
Полицейский:
- Все так, только при этом их запрещено прикармливать...

Вот и всё... Вопросы и замечания mailto:feod@narod.ru

До новых встреч!
Юлий Феодоритов
 


В избранное