?

Log in

No account? Create an account
Лабораторный журнал -- Day [entries|friends|calendar]
Anatoly Levenchuk

[ website | Лабораторный журнал ]
[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Опять об универсальный моделер [11 May 2010|12:30am]
Какие у нас есть соображения по заходу на универсальный моделер?

1. Опять повторю тестовый пример: иметь редактор+генератор отчетов для описания деятельности (ISO 24744), которое закодировано в каком-то (см. пункт 2) соответствии с ISO 15926. Затем начинаем расширять метамодель для этого описания,
-- в части собственно моделирования (понятия мегамодели, модельных трансформаций и т.д.), workflow типа BPMN 2 и т.д.
-- придумывается расширение предложенного графического синтаксиса (например, правильными аннотациями) ISO 24744, в том числе текстовыми вариантами
-- добавляются модель продукта, модель проекта-project вместе со своими редакторами
-- добавляются средства моделирования (верифицируемая логическая модель типа SysML-модели, динамическое моделирование поведения системы типа Modelica)

2. Понятно, что для наших целей иметь полное (фасады, язык 2й части в полном объеме с 4D, жесткая привязка всего и вся к RDS/WIP с угрозой вкачать в себя всю неминуемо образующуюся там онтологическую помойку) соответствие ISO 15926 было бы в пору активного экспериментирования необязательно. Это понимают многие разные люди:
-- iRING подразумевает полный compliance фасадам и RDS/WIP, но там нет редактора
-- фирма Noumenon делает набор инструментов для XMLpLANT, но это закрытые коды. Соответствие на уровне "словаря" (а не онтологии: например, вычеркнуто 4D-время)
-- simantics представляет как раз то, что нам нужно -- но там нет никакого compliance, хотя и подразумевается на уровне словаря
-- Bentley имеет полностью закрытую архитектуру, но и там "особенный ISO 15926"
. На этом месте нужно поставить точку, ибо другие проекты ISO15926-совместимых моделеров пока неизвестны. По идее, дальше нужно перечислять разные CAD/PLM наборы, но они все с закрытыми кодами.

3. Наиболее близко к тому, что хотелось бы сделать -- это Simantics (https://www.simantics.org). Про него известно следующее:
-- нет compliance с ISO15926, но архитектура основана как раз на онтологическом подходе (там своя онтология, много проще, чем в ISO 15926), а не AST и прочих "синтаксисах"
-- кушать придется ту онтологию (схему данных), что дадут: причем не факт, что это блюдо понравится для наших целей.
-- это как раз language workbench, у которой вместо AST для представления редактируемого текста/диаграмм используется онтологическое представление. То, что нужно. С другой стороны, можно обсуждать, насколько хорош используемый там "редактор-любых-языков".
-- писать тогда придется на Eclipse, что вызывает очень смешанные ощущения.
-- в текущей версии 1.0 нет хорошего инструментария для создания онтологий (метамоделирования) и написания редакторов. Версия 1.1 существует в сыром виде и пока никому не дается, версия 1.2 с более-менее развитыми инструментами будет готова только к осени.
-- тамошние люди затачивают все под динамическое моделирование, так что может оказаться что-нибудь странное при попытках более универсального использования (например, логического/онтологического моделирования, или использования не-UML-подобных языков, для которых все равно придется писать редактор с нуля).
-- зато уже есть весьма впечатляющие работающие примеры.

4. Всегда есть вариант сделать что-то с нуля. Simantix доводили до версии 1.0 восемь неглупых человек четыре года. Скорее всего, при делании с нуля придется повторить их подвиг (хотя там особый случай: они, например, делали свою собственную графовую базу данных. Но не делали Eclipse). Тем не менее, если пойти по этому варианту, можно подумать над интереснейшими идеями типа:
-- реализовать вариант ISO 15926 в качестве системы типов какого-то языка ISO 15926L
-- подумать о реализации ISO 15926 на языке теории категорий, от логических языков перейти к функциональным (реализации в FOL, OWL и EXPRESS уже есть)
-- придумать ISO 15926L как динамический язык программирования, с каким-нибудь приличным синтаксисом, подразумевающим фонтанирование разными DSL (например, как систему типов к чему-то типа Factor+OMeta, эта связка активно обсуждается сегодня в списке FONC/STEPS -- почему бы не пойти по функциональному пути в части concatenative языков -- http://concatenative.org/wiki/view/Concatenative%20language? Я, кстати, очень уважаю такие языки и считаю их весьма перспективными. Если уж кому-то ломать мозги, то именно таким образом. Языки, поорщяющие рефакторинг -- это круто).
-- использовать идеи современных IDE для динамических языков с DSL, не привязываться к тяжелому интерфейсу Eclipse.

Теперь нужно понять, чего мы хотим от жизни, и каковы наши возможные ресурсы на эти хотелки.
16 comments|post comment

UML-диаграммы моделеориентированной инженерии требований [11 May 2010|09:21am]
vvagr опубликовал несколько UML-диаграмм по моделеориентированной (в том числе целеориентированной) инженерии требований -- http://community.livejournal.com/praxos/3648.html.

Это в порядке разработки метамодели для технико-экономической мегамодели некоей Системы (диаграммы для этой Системы, соответствующие опубликованной по ссылке метамодели есть, но по понятным причинам их не публичим). UML в качестве языка и нотации был взят от полной безысходности (нет пока универсального моделера), там в полный рост используется powertypes и clabjects, и их не хватает в силу большого количества попадающих на диаграммы разных мета-отношений. За всеми диаграммами присутствует дух ISO 24744 и работ группы AtlanMod.

Критика, замечания, предложения welcome.
2 comments|post comment

"Новый Forth" -- язык программирования Factor [11 May 2010|05:18pm]
Я понял, почему Forth мне кажется таким привлекательным (ага, я когда-то даже на нем программировал, так что "нравится" относится не только к "нравится о нем читать"): он из породы concatenative languages (http://concatenative.org) и тем самым сразу функциональный, а также языкоориентированный (language-oriented, т.е. предназначенный для построения DSL как основной на нем способ программирования!). То бишь Forth -- это язык, современней не бывает, с одним только недостатком: он слишком низкоуровневый, а для подъема его уровня на нем самом еще нужно существенно потрудиться, и этот подъем нестандартизован и происходит в каждой отдельной программистской команде по-своему.

Все, что мне было нужно, это найти "современный Forth" -- таковых оказалось несколько, и лидером тут является Factor (изобретение Славы Пестова, который родом из Томска, где Forth традиционно популярен вплоть до сегодняшнего дня) -- http://factorcode.org/

Основные отличия от forth у factor: функциональность, динамическая типизация с самого начала, хорошая интеграция в любую среду программирования (то есть очень удобно для функционального языка присоединяются сишные библиотеки), сборка мусора и прочие современные прелести.

Размышления вузовского преподавателя по поводу использования Factor в учебном процессе: http://denkspuren.blogspot.com/2010/01/factor-heilbronn-university.html

Небезынтересна история, как я нашел этот язык: в последнюю пару-тройку дней в список рассылки FONC/STEPS пришел лично Alan Kay и рассказал о том, что там творится:
1. Проект STEPS ищет новые идеи, а не создает какую-то "систему программирования". Поэтому идеи парсера OMeta (а также многие другие идеи) могут быть (и должны быть) попробованы на десятке-другом разных языков, вопрос не в языке, а в архитектуре того, что на них пишется.
2. Вполне можно рассматривать весь проект STEPS, как предложение нескольких DSL, которые можно особенно просто реализовать на "базовых" языках, удобно поддерживающих реализацию DSL. В качестве одного из таких языков и был предолжен Factor.
3. В конце 2010г. проект STEPS выдаст на гора пробную реализацию какой-то системы (Франкенштейна), составленной из многих таких кусочков-DSL, чтобы можно было поглядеть на способ совместного употребления всех разрабатываемых подходов к программированию. А пока опубликован некий обзор работ прошлого года, который дает идею о том, как сочетать все мелькавшие в других работах STEPS наработки: http://www.vpri.org/pdf/tr2009016_steps09.pdf

Теперь в моем личном рейтинге интересов Factor поднялся до уровня выше, чем Squeak/Smalltalk.

Кстати, по поводу Smalltalk: Алан Кей грязно ругается по поводу нынешних версий этого языка, говоря, что первоначальную идею объектов современные (начиная с 1980г.) версии Smalltalk испортили и исказили в угоду производительности на текущих архитектурах железа. А поначалу в Smalltalk объекты были не пассивными, а вполне активными и автономными, то бишь не столько "объектами", сколько акторами (http://en.wikipedia.org/wiki/Actor_model). Это было в том числе в Smalltalk-71. Следующая версия языка работала в 180 раз быстрее, но вся красота из нее ушла -- и дальше неожиданные рассуждения о том, что в те акторские поры родственником Smalltalk был PLANNER и General Problem Solver, т.е. логическая парадигма программирования. В FONC эту идею "объектов-акторов" поднимают на щит в виде двух идей: логического языка и парадигмы "программирования как планирования" (ага, это от PLANNER, оказывается), а также идеи выдать каждому объекту собственный IP-адрес в интернете (ибо этот объект вполне автономен и мало ли где может находиться -- тут и до SOA недалеко).

Опять же, акторские языки продолжают цвести и пахнуть до сих пор -- хотя так же нишево, как и стековые (concatenative languages). Вот пример: ABE (Actor-Based Environment) и его язык Humus -- http://dalnefre.net/drupal/node/2. Автор этого проекта Dale Shumacher говорит, что идеи FONC/STEP уже были учтены в этом проекте.

Век живи, век учись. Назад в будущее!
6 comments|post comment

navigation
[ viewing | May 11th, 2010 ]
[ go | previous day|next day ]