Зачем нужен ещё один системноинженерный язык, когда у нас есть SysML, Modelica, AADL, P&ID диаграммы, ArchiMate, GSN и множество других чудесных инструментов моделирования для инженера по требованиям и системного архитектора
( Read more... )
я на прошлой неделе поразвлекалсо кодогенерацией в очередной раз но тут несколько прифигел, когда осознал что то что я написал - это 40 строчек на питоне и оно, пусть и в упрощенном виде, генерит то, что мне надо
ну и крепко призадумалсо - во-первых, нахрена все эти тулзы и язычки, ибо любой удобный и выразительный язык (питон, руби, скала, хаскел, МЛ и пр, варианты жабы с элементами функ программирования) позволяет генерить чо надо и чо хош из описаний записанных на чом есть при этом какие-то возможности реюза не то чтобы очень огромны (часто хочеццо четта специфичное генерить, особливо если логический вывод делать)
во-вторых, я призадумалсо на тему какого хреня, я не фтыкал это раньше, скажем лет 16-17 назад, когда вполне себе уже четта генерил (на перле или там из С)
Один момент, который я осознал - засилье всяких Гуевых моделеров, которые давали красивые картини, и по сути примитивную кодогенерацию.
Второй - это любимый всеми ХМЛь, ибо популярные билдовые системы - это основанные на ХМЛь ант и мавен, но на ХМЛь писать ничего не возможно (мне, по крайней мере). А современные билдовые системы типа gradle/buildr/sbt появились позже и я их еще не осознал. Тут поясню, что билдовые системы нужны чтобы удобно вписывать кодогенерацию в существующий проект, по сути тут нужен полноценный удобный язык для билдов, кои появлились относительно недавно.
Это важное замечание, про язык для билдов (язык управления конфигурацией). На сейчас в SysMoLan выделяются следующие тесно переплетённые части: -- язык данных -- язык запросов -- язык мэппинга -- аннотации картинок для данных (как в Modelica, чтобы не чувствовать себя стеснёнными в иконках). Все современные языки имеют и диаграммный (схемный) язык, и текстовый. Но диаграммный язык должен тоже пополняться, а не иметь предписанную форму -- язык билдов
И там, похоже, есть другое ещё деление: -- язык знаков (программистский: числа, массивы, стеки), он же данных, запросов, мэппинга -- язык онтологии (часть-целое, индивид, класс, класс классов и так далее 201 тип). Задаёт способ соотнесения программисткого бла-бла-бла с реальным миром. -- языки предметной области (электрической инженерии, инженерии трубопроводов и насосов), тут-то и нужно будет управлять билдами -- всё это были бы RDL в ISO 15926, но у нас ведь тут ещё запросы, так что это всё DSL полномасштабные на базе языка данных-запросов-мэппинга+языка онтологии
Кодогенерация для меня при этом одинакова с поисками, запросами, трансформациями, мэппингами, конверсиями и прочими вычислительными процедурами общего вида (входной код-1 преобразуется в выходной код-2 при помощи Программы-исполнителя, справочных данных и устройства-или-программы Выполнителя Исполнителя).
но тут несколько прифигел, когда осознал что то что я написал - это 40 строчек на питоне
и оно, пусть и в упрощенном виде, генерит то, что мне надо
ну и крепко призадумалсо - во-первых, нахрена все эти тулзы и язычки, ибо любой удобный и выразительный язык (питон, руби, скала, хаскел, МЛ и пр, варианты жабы с элементами функ программирования) позволяет генерить чо надо и чо хош из описаний записанных на чом есть
при этом какие-то возможности реюза не то чтобы очень огромны (часто хочеццо четта специфичное генерить, особливо если логический вывод делать)
во-вторых, я призадумалсо на тему какого хреня, я не фтыкал это раньше, скажем лет 16-17 назад, когда вполне себе уже четта генерил (на перле или там из С)
Один момент, который я осознал - засилье всяких Гуевых моделеров, которые давали красивые картини, и по сути примитивную кодогенерацию.
Второй - это любимый всеми ХМЛь, ибо популярные билдовые системы - это основанные на ХМЛь ант и мавен, но на ХМЛь писать ничего не возможно (мне, по крайней мере). А современные билдовые системы типа gradle/buildr/sbt появились позже и я их еще не осознал. Тут поясню, что билдовые системы нужны чтобы удобно вписывать кодогенерацию в существующий проект, по сути тут нужен полноценный удобный язык для билдов, кои появлились относительно недавно.
Reply
На сейчас в SysMoLan выделяются следующие тесно переплетённые части:
-- язык данных
-- язык запросов
-- язык мэппинга
-- аннотации картинок для данных (как в Modelica, чтобы не чувствовать себя стеснёнными в иконках). Все современные языки имеют и диаграммный (схемный) язык, и текстовый. Но диаграммный язык должен тоже пополняться, а не иметь предписанную форму
-- язык билдов
И там, похоже, есть другое ещё деление:
-- язык знаков (программистский: числа, массивы, стеки), он же данных, запросов, мэппинга
-- язык онтологии (часть-целое, индивид, класс, класс классов и так далее 201 тип). Задаёт способ соотнесения программисткого бла-бла-бла с реальным миром.
-- языки предметной области (электрической инженерии, инженерии трубопроводов и насосов), тут-то и нужно будет управлять билдами -- всё это были бы RDL в ISO 15926, но у нас ведь тут ещё запросы, так что это всё DSL полномасштабные на базе языка данных-запросов-мэппинга+языка онтологии
Кодогенерация для меня при этом одинакова с поисками, запросами, трансформациями, мэппингами, конверсиями и прочими вычислительными процедурами общего вида (входной код-1 преобразуется в выходной код-2 при помощи Программы-исполнителя, справочных данных и устройства-или-программы Выполнителя Исполнителя).
Reply
Leave a comment