Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Опять четверг

Четверг у меня стабильно оказывается самым плотным днем. Понедельники отдыхают (pun intended).
* * *
Совершенно непонятно, как заставить самых разных людей подумать о системе, о жизненном цикле и прочих "глобальностях". Видел сегодня множество "планов работ", каждый из который писался как "мы знаем разные проблемы, и написали список работ по их решению" -- но ответа на вопрос про общую конструкцию (архитектуру, картинку, систему), объединяющую эти работы не было по принципу. И в планах этих не было работ по выработке этого целостного (холистического, глобального, системного) видения (слышания, нюхания, планирования, размышления).

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

Весь ужас в том, что и общий вид слона невозможно прикинуть без того, чтобы хоть как-то не поразбираться с кончиком его хобота и фрагментами левой ноги -- или можно закончить общим видом ватного слона, или слона-с-картинки вместо того реального слона, которого заказывали. То есть нужно двигаться и от общего к частному, и от частного к общему одновременно. Но вот движение от частного к общему почему-то побеждает безоговорочно, и поэтому в точке сборки общее часто оказыватся отсутствующим. План работ по изготовлению пиджака выглядит обычно так: а) проектирование 584 пуговиц, 2) раскрой варатника (sic) из закупленного накануне железа, 3) примерка карманов, 4) изготовление левого рукава, 5) изготовление верхнего рукава, 6) подкладывание подкладки под верхний рукав, 7) планирование пиджачных работ следующего года.
* * *
На сегодняшнем заседании отделения INCOSE, наконец, сформулировал схемку про "промышленные DSL":
а) domain-specific требует задания domain -- и для этого нужна разборка с онтологией. В этой точке нам требуется все богатство онтологического моделирования (прежде всего upper ontology: все эти различия между свойствами, характеристиками, атрибутами, параметрами). Для этого нужна поддержка моделирования данных, и язык выражения (описания) "любых объектов" -- совершенно необязательно какой-то алгоритмический язык. Скорее уж, это онтологический язык описания типа ISO 15926 -- предназначенный для описания чего угодно в ходе его (этого "чего угодно") жизненного цикла. Для этого языка, конечно, нужны адекватные графические представления -- текстовое, собственно графическое, табличное/формовое и т.д.
б) language (из DSL) требует именно языковой механики -- а именно понимания, что вся работа с language должна быть устроена как в программировании: должен быть IDE, в котором на входе есть одно описание на входном языке, из него делается AST, а затем разными трансформациями (или иногда синтезом -- суперкомпиляцией, например) получается описание на выходном языке. В IDE должны быть функции визуального/текстового редактирования входных текстов, отладки выполнения выходных текстов (по возможности в терминах входных текстов!), билдера (ибо языков входных текстов и фрагментов на них написанных может быть несколько). В такой IDE должны быть программные средства, позволяющие удобно описывать новые языки (входные и выходные), делать мэппинг этих языков на общую онтологию (типа ISO 15926) и тем самым расширять эту IDE. Самый крутой вариант -- это когда IDE сама на себе написана (т.е. позволяет работать и с полнотьюринговыми языками, равно как и с неполнотьюринговыми).

Пример, на котором можно это все обсуждать: какая-нибудь теплогидравлика, в которой есть:
а) графические языки описания P&ID
б) описание физики (например, на modelica)
в) счетная модель (например, на C)
г) результаты расчета (самые неожиданные форматы, языки явно не специфицированы)

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

Почему мне не нравится говорение о том же самом в терминах "метамодель-модель", или "метаданные-данные" (или даже "метаданные-модель")? Потому что такое говорение ничего не дает в смысле обсуждения конструкции работающей с этим "метамоделированием" системы. А если говорить "язык", то сразу можно задействовать весь опыт разработки компиляторов, IDE и прочей языковой механики. Говорить о "трансформации модели, описываемой метамоделью" можно, но проще говорить о разных описаниях как текстах на языке: "описание синтаксиса языка C на языке нотации Бэкуса-Науэра" никак не более непонятно, чем "метамодель Бэкуса-Науэра модели синтаксиса языка, конкретизированная в синтаксис языка С". Мне кажется, что слова "мета" и "модель" стремительно теряют свой смысл (так же, как и слово "проект"), превращаясь в какой-то словесный шум. Если я знаю, что у меня в руках "модель", я не знаю, что с ней делать. Если у меня в руках "язык", то я знаю, что есть а) описание языка, б) тексты на этом языке, в) IDE для этого языка.

Очень надеюсь к концу 2009г. иметь в стране хотя бы пять человек, с которыми можно обсуждать полную постановку задачи. Сейчас есть только люди, с которыми можно обсуждать только отдельные кусочки (с кем-то "IDE и графические редакторы", с кем-то "компилятор DSL и AST внутри него", с кем-то ISO 15926 и описания объектов, с кем-то проблемы имитационного моделирования как такового, с кем-то "каждому специалисту -- по его собственному DSL, или один язык для всех, и пусть это будет Java|C++|Scala", и так далее).

Чуть раньше я эту тему DSL+IDE (включая символьную математику) обсуждал тут: http://ailev.livejournal.com/685455.html (и там еще развернуто в комментах с avlasov). Еще раньше -- http://ailev.livejournal.com/683311.html. Тема онтологических проблем комплексирования разных DSL в моделировании -- http://ailev.livejournal.com/673824.html и http://ailev.livejournal.com/675208.html. А уж про ISO 15926 и Gellish было огромное количество постингов где-то год назад.
* * *
С видео нужно разбираться и разбираться. Сегодня записал три часа совершенно неразборчивой (с вебкамеры 1.3Мпикс) картинки 320*240 при 12fps в файл размером 32Gb (причем формат файла -- .avi, я сильно удивляюсь, как мне удалось такое записать). Зато у этой записи хороший звук. В принципе, можно было запись вести с двух камер (PiP), но тут был выбор -- или рассуждать про DSL, или работать видеооператором. А на эксперименты по правильной настройке кодера и выяснению разрешающей способности камеры так просто времени не было. Но разбираться нужно: никакие текстовые транскрипты не передадут спор нескольких человек с тыканием пальцами в разные места слайда на экране.

Ничего, через тернии рано или поздно приползем к звездам. Съемка и живая трансляция видео -- всего лишь технология, ее вполне можно освоить, хотя и не так быстро, как хотелось бы. С программой для съемки и трансляции я определился -- WebcamMax.

Видео завтра обработаю и выложу, но оно вряд ли кому кроме участников разговора будет понятно.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 15 comments