?

Log in

No account? Create an account

yromanchenko

Recent Entries

yromanchenko

View

July 18th, 2008

ДРАКОН + Оберон = ДРОН


Оригинал статьи: http://sage.com.ua/ru.shtml?e6l0

ДРАКОН — Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность



В.Д. Паронджанов, книга "Как улучшить работу ума" [1]:



Язык ДРАКОН — общедоступный интеллектуальный инструмент нового типа, специально сконструированный для облегчения и улучшения работы ума интеллектуальных работников и учащихся, особенно полезный при решении трудных и сверхтрудных задач систематизации и автоформализации профессиональных знаний, описания структуры человеческой деятельности и многих других задач, о которых речь впереди.



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



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



ДРАКОН — очень легкий язык. Настолько легкий, что разработку многих компьютерных программ для космических ракет на практике ведут не программисты, а обычные специалисты — по принципу "программирование без программистов". Причина отказа от программистов проста. При решении практических прикладных задач специалисты досконально владеют материалом и прекрасно знают постановку задачи. В отличие от них программисты не знают "физику процесса" и становятся "лишними людьми", без которых вполне можно обойтись. Это позволяет значительно сократить издержки, улучшить показатель "затраты—результат", ускорить ход работ и полностью избавиться от ошибок "испорченного телефона", вызванных взаимным непониманием между ПРОГРАММИСТАМИ и СПЕЦИАЛИСТАМИ.



ДРАКОН универсален. Он может применяться для наглядного представления и быстрой разработки алгоритмов не только в "космосе", но и в "земных" видах человеческой деятельности. Практическая полезность ДРАКОНа получила высокую оценку. Министерство образования включило изучение языка ДРАКОН в программу курса информатики высшей школы (см.: Примерная программа дисциплины “Информатика”. Издание официальное. — М.: Госкомвуз, 1996. С. 3, 4, 15, 16).


ДРАКОН-редактор



6 апреля 2008 г. Геннадий Тышов опубликовал на форуме [2] первый рабочий вариант ДРАКОН-редактора (на всякий случай я поместил архив с ним здесь на сайте).







ДРОН



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



8 апреля 2008 г. Александр Ильин на форуме [3] предложил название ДРОН для возможного языка ДРАКОН-Оберон.


D2O (Deuterium Oxide) — ДРОН => Active Oberon транслятор.



Задавшись целью реализации языка ДРОН я написал письмо Геннадию Тышову с просьбой открыть формат ДРАКОН-схем используемый в его редакторе. На что в ответ он выслал мне весь исходный код :)



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



И очень быстро я убедился что при соответствующем оформлении ДРАКОН-схемы задача становится вполне реализуемой.



Основные особенности "оформления" конечно касаются декларативой части, отсутствующей в ДРАКОНе.



На первых порах пришлось "приспособить" под декларативную часть блок "кометнарий", с разделением соответсвующих секций, собственно: коментариев, импорта, констант, типов и переменных. принадлежность той или инной секции определяется первым считанным из блока элементом, соответственно (*, IMPORT, CONST, TYPE и VAR.








Дело в том что, содержимое некоторых секций будет необходимо не только в качестве справочной информации, а должно быть доступно и для модификации на стадии генерации кода.



Возможно более удачное решение - оформлять декларативную часть в табличной форме.



В TYPE секции даются объявления типов и "пустышек" деклараций объектов (без методов и тел).



Каждая отдельная схема рассматривается как эквивалент процедуры на языке Оберон. При этом применительно к языку Оберон можно рассматривать в качестве процедур ещё и тела модуля и объектов (после слова BEGIN), а ещё необходимо как-то различать процедуры модуля от процедур-методов объектов.


Было решено:



  • Тело модуля оформлять в виде схемы, в заголовок которой вписывается слово BEGIN

  • Префиксовать заголовки схем относящихся к методам объектов именами этих объектов. т.е. Object.Proc1, Object.BEGIN. Как видите, тело объекта тоже не забыли

  • Все остальные схемы соответствуют процедурам модуля



Вот какая получилась схема:








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



В результате получено консольное приложение, позволяющее транслировать ДРАКОН-схему (фактически, схему на языке ДРОН) в модуль на языке Active Oberon.



ДРОН-транслятор носит скромное название D2O т.е. Deuterium Oxide или Тяжёлая Вода по русски :)



ДРОН-транслятор и тестовые схемы на языке ДРОН прилагаются.



13 июля 2008 г. Геннадий Тышов опубликовал более свежую версию редактора [4], однако тестовые схемы прилагающиеся к существующей на сегодняшний день версии D2O имеют несовместимый формат. Версия редактора представленная здесь на сайте гарантированно позволяет открыть и редактировать прилагающиеся схемы. Вопросы обратной совместиости форматов или открытия нового формата в настоящий момент обсуждаются с автором редактора.


Дальнейшее развитие идеи


Проработки требует организация декларативной части модуля. Как вариант — табличная форма:







Ссылки:



[1] http://www.transhumanism-russia.ru/documents/books/drakon/kak_uluchsit_rabotu_uma_Word.rar.



[2] http://forum.oberoncore.ru/viewtopic.php?p=14323#p14323.



[3] http://forum.oberoncore.ru/viewtopic.php?p=14373#p14373.



[4] http://forum.oberoncore.ru/viewtopic.php?f=62&t=1075.

June 25th, 2007

(no subject)

Share

Линус Торвальдс о предупреждениях в GCC


Линус Торвальдс достаточно нелестно отозвался о некоторых опциях показа предупреждений (warnings) в GCC, говоря о том, что реализация многих из них просто не учитывает желания программиста и реальные проблемы. Тем неменее, некоторые из предупреждений очень полезны и используются при сборке ядра. Линус также отметил, что язык C не совершенен и для написания абсолютно безопасного кода он бы выбрал Паскаль.
birdie (*) (29.11.2006 19:35:05)
http://www.linux.org.ru/view-message.jsp?msgid=1676527

Linux: GCC, Useful Versus Useless Warnings


Submitted by Jeremy on November 28, 2006 - 5:49pm.
Linux creator Linus Torvalds proclaimed, "friends don't let friends use '-W'," in a thread discussing GCC's handling of warnings. The thread began with a patch to remove an unnecessary comparison of an unsigned variable which resulted in a GCC warning, "comparison of unsigned expression < 0 is always false". Linus suggested it is better to write readable and obvious code, "without having to carry stupid context around in our heads". He went on to add, "if the compiler (whose _job_ it is to carry all that context and use it to generate good code) notices that the fact that 'x' is unsigned means that one of the tests is unnecessary, that does not make it wrong." As has been noted in several earlier lkml discussions [story], Linus concluded, "Gcc warns for a lot of wrong things. This is one of them."
Later in the thread, Linus pointed out that GCC also offers plenty of useful warnings as well. He suggested that while the reason many warnings which are included in '-W' are not included in '-Wall' is because they are useless, there are flags such as '-Wstrict-prototypes' which offer useful warnings and are not included in '-Wall'. When '-Wshadow' was suggested as a useful compiler flag, Linus replied, "I'd agree, except for the fact that gcc does a horribly _bad_ job of -Wshadow, making it (again) totally unusable." He offered an example, "it's often entirely interesting to hear about local variables that shadow each other," then noting, "HOWEVER. It's _not_ really interesting to hear about a local variable that happens to have a common name that is also shared by a extern function." Linus concluded, "the C language has scoping rules for a reason. If I wanted a language that didn't allow me to do anything wrong, I'd be using Pascal. As it is, it turns out that things that 'look' wrong on a local level are often not wrong after all."
http://kerneltrap.org/node/7434

June 15th, 2007

Oberon Day June 29, 2007

Share
29 июня (ETH Zurich) планирует проведение мероприятия Oberon Day.

В этом году на мероприятии будут продемонстрированы реальные примеры внедрения Оберон-систем в промышленности.
Ближе к заключительной части мероприятия будет представлена новинка — Oberon Script (компилятор и среда выполнения языка Oberon для веб-браузеров, реализованные на JavaScript).
Приглашаются все заинтересованные специалисты!
Дополнительная информация и пригласительный флаер доступны на официальном сайте.

Официальный сайт мероприятия
Блог Ральфа Соммерера
Официальный сайт ОС Native Oberon
Официальный сайт ОС Bluebottle
Русскоязычный сайт ОС Bluebottle
Блог Руслана Богатырёва
Русскоязычный форум по Оберон-технологиям
Powered by LiveJournal.com