JetBrains Meta Programming System
От: FallenGameR http://fallengamer.livejournal.com/
Дата: 28.01.09 11:19
Оценка:
Может кто знает что нибудь про сабж? http://www.jetbrains.com/mps/
Насколько оправданно и целесообразно его использование? И не проще ли использовать bison (или дождаться MS Oslo) для создания ориентированных на конкретные домены языков?
Re: JetBrains Meta Programming System
От: thesz Россия http://thesz.livejournal.com
Дата: 28.01.09 12:05
Оценка: 2 (1)
FGR>Может кто знает что нибудь про сабж? http://www.jetbrains.com/mps/
FGR>Насколько оправданно и целесообразно его использование? И не проще ли использовать bison (или дождаться MS Oslo) для создания ориентированных на конкретные домены языков?

Что за домены?

DSL на русский переводится, как проблемно-ориентированный язык.

Смысла использовать mps для разработки DSL нет никакого. У него ни логической базы нормальной, ничего. Они даже оптимизации не делают (задавал я им такой вопрос, получил в ответ "ой, а мы так не умеем!")

Даже bison лучше.

Не говоря уж о Хаскеле или Лиспе.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[2]: JetBrains Meta Programming System
От: FallenGameR http://fallengamer.livejournal.com/
Дата: 28.01.09 16:17
Оценка:
Здравствуйте, thesz, Вы писали:

T>Что за домены?

Медицина: стационарное лечение, обследование пациентов, аптека.

Часто появляются новые методики лечения, новые типы пациентов. Переписывать каждую пару месяцев программу на C# не рационально.
Хочется описать домен в его же терминах и дописывать модули на более высоком уровне. В идеале чтобы специалист домена сам мог описать что он хочет на этом языке.
Re[3]: JetBrains Meta Programming System
От: thesz Россия http://thesz.livejournal.com
Дата: 28.01.09 16:37
Оценка:
T>>Что за домены?
FGR>Медицина: стационарное лечение, обследование пациентов, аптека.

Да проблема это, проблема. Никак не домен. Не по-русски, понимать тяжело.

FGR>Часто появляются новые методики лечения, новые типы пациентов. Переписывать каждую пару месяцев программу на C# не рационально.

FGR>Хочется описать домен в его же терминах и дописывать модули на более высоком уровне. В идеале чтобы специалист домена сам мог описать что он хочет на этом языке.

Так и опиши.

mps, только, не используй.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: JetBrains Meta Programming System
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 28.01.09 16:45
Оценка: 2 (1)
Здравствуйте, FallenGameR, Вы писали:

FGR>И не проще ли использовать bison (или дождаться MS Oslo) для создания ориентированных на конкретные домены языков?


Также: ANTLRWorks.
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: JetBrains Meta Programming System
От: FallenGameR http://fallengamer.livejournal.com/
Дата: 28.01.09 18:18
Оценка:
Здравствуйте, thesz, Вы писали:

FGR>>Часто появляются новые методики лечения, новые типы пациентов. Переписывать каждую пару месяцев программу на C# не рационально.

FGR>>Хочется описать домен в его же терминах и дописывать модули на более высоком уровне. В идеале чтобы специалист домена сам мог описать что он хочет на этом языке.

T>Так и опиши.

T>mps, только, не используй.

Кроме Хаскеля и Лиспа что-нибудь еще посоветуете?
Re[2]: JetBrains Meta Programming System
От: Аноним  
Дата: 28.01.09 18:21
Оценка:
Здравствуйте, thesz, Вы писали:

T>Не говоря уж о Хаскеле или Лиспе.


А что, на Хаскеле можно создавать ДСЛи? Можно примерчик?
Re: JetBrains Meta Programming System
От: Аноним  
Дата: 28.01.09 18:55
Оценка:
Здравствуйте, FallenGameR, Вы писали:

FGR>Может кто знает что нибудь про сабж? http://www.jetbrains.com/mps/

FGR>Насколько оправданно и целесообразно его использование? И не проще ли использовать bison (или дождаться MS Oslo) для создания ориентированных на конкретные домены языков?

Срались мы как-то в ЖЖ с МПС-овцами, до сих пор приятно вспомнить. В какой-то момент они предъявили большое достижение: добавили в язык ключевое слово using. Получилось три экрана (может, и больше — некоторые места там напоминали фолдинг) кода с горизонтальным (!) скроллингом и обилием непечатных символов (я не описался, просто, когда видишь надпись "^%*%$*", автоматически подставляешь нецензурщину). Уровень вложенности скобок в этом коде был чрезмерен даже для Лиспа.
Re[3]: JetBrains Meta Programming System
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 28.01.09 20:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А что, на Хаскеле можно создавать ДСЛи?


Да. Средства не такие мощные как лисповые (я не говорю о Template Haskell — аналог лисповых макр), но обычно достаточные:
Чистота и ленивость позволяет рисовать декларативный DSL. Список или последовательность можно реализовать в своей монаде и использовать в do-нотации. Ленивость сама по себе позволяет создавать конструкции, для которых в Lisp используются макры (пресловутый пример с if).

Лень искать, но в нете много статей и постов об этом. Кто-то показывал на примере DSL-я для дат, у Окасаки есть статья про постфиксные DSL-и на Haskell. Набивший оскомину Parsec и т.д. У thesz в жж был пост про асм на Haskell. И т.д.

Самое приятное, что при этом используются штатные средства, а не метапрограммирование.
Re[4]: JetBrains Meta Programming System
От: thesz Россия http://thesz.livejournal.com
Дата: 28.01.09 20:20
Оценка:
А>>А что, на Хаскеле можно создавать ДСЛи?
L>Да. Средства не такие мощные как лисповые (я не говорю о Template Haskell — аналог лисповых макр), но обычно достаточные:

Это ты про DSEL говоришь, встроенный проблемно-ориентированный язык.

Для DSL и нужен "bison".

Основу, однако, можно сделать с помощью DSEL.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[5]: JetBrains Meta Programming System
От: thesz Россия http://thesz.livejournal.com
Дата: 28.01.09 20:22
Оценка: 1 (1) +1
FGR>Кроме Хаскеля и Лиспа что-нибудь еще посоветуете?

camlp4
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[3]: JetBrains Meta Programming System
От: thesz Россия http://thesz.livejournal.com
Дата: 28.01.09 20:23
Оценка:
T>>Не говоря уж о Хаскеле или Лиспе.
А>А что, на Хаскеле можно создавать ДСЛи? Можно примерчик?

http://rsdn.ru/forum/message/3244321.1.aspx
Автор: thesz
Дата: 12.01.09
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: JetBrains Meta Programming System
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 05:07
Оценка: 2 (1) -1
Здравствуйте, FallenGameR, Вы писали:

FGR>Может кто знает что нибудь про сабж? http://www.jetbrains.com/mps/

FGR>Насколько оправданно и целесообразно его использование? И не проще ли использовать bison (или дождаться MS Oslo) для создания ориентированных на конкретные домены языков?

Если программируете на Яве, то может что-то и получите. Продукт этот относительно новый. Реальной практики использования еще нет.
Собственно подход хорошо описан на их сайте.

Есть много альтернатив. Как раз Ослно им не конкурент, так как Ослно — это пока что совсем что мутное.

Если тебе нужно написать именно полностью другой язык, то возможно ANTLR будет лучшим входом. Если нужно создать встроенный ДСЛ, то нет.

Лично для меня лучшим средством создания ДСЛ-ей в дотнете стали макросы Nemerle и собственно сам Nemerle.

В общем, есть разные пути под разные задачи. Немаловажны и ограничения. Можно ли в вашем проекте использовать языки отличные от C# (о том, что проект на нем я понял из обсуждения)? Как видится описание "доменов"?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: JetBrains Meta Programming System
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 05:10
Оценка:
Здравствуйте, thesz, Вы писали:

FGR>>Кроме Хаскеля и Лиспа что-нибудь еще посоветуете?


T>camlp4


Тогда уж Nemere. Его макросы мощнее этого препроцессора и язык очень близкий к C# (на котором люди похоже и пишут).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: JetBrains Meta Programming System
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 29.01.09 08:29
Оценка:
Здравствуйте, thesz, Вы писали:

T>Это ты про DSEL говоришь, встроенный проблемно-ориентированный язык.


Там Лисп рядом с Хаскелем стоял, а вопрос был только про Хаскель. Это меня с толку сбило.
Re[5]: JetBrains Meta Programming System
От: Mike Chaliy Украина http://chaliy.name
Дата: 29.01.09 09:36
Оценка:
Здравствуйте, thesz, Вы писали:

А>>>А что, на Хаскеле можно создавать ДСЛи?

L>>Да. Средства не такие мощные как лисповые (я не говорю о Template Haskell — аналог лисповых макр), но обычно достаточные:

T>Это ты про DSEL говоришь, встроенный проблемно-ориентированный язык.


А откуда акроним DSEL? Я сталкивался тока с Internal DSL, типа "внутренний".
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
А тут я живу и пишу...
Re[5]: JetBrains Meta Programming System
От: msorc Грузия  
Дата: 29.01.09 10:48
Оценка:
Здравствуйте, FallenGameR, Вы писали:

FGR>Кроме Хаскеля и Лиспа что-нибудь еще посоветуете?


Tcl
Re[2]: JetBrains Meta Programming System
От: FallenGameR http://fallengamer.livejournal.com/
Дата: 29.01.09 11:10
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Лично для меня лучшим средством создания ДСЛ-ей в дотнете стали макросы Nemerle и собственно сам Nemerle.


Но Nemerle ведь еще не релиз. На сайте написано что CTP и стабильность не гарантируется. Насколько я знаю, создатель из проекта ушел в МС и больше язык не поддерживает. Язык очень интересный, но по-моему при всем вышеперечисленном писать на нем большую систему с требованиями повышенной надежности (на медицинский софт такое требование налагается) еще рано.

VD>В общем, есть разные пути под разные задачи. Немаловажны и ограничения. Можно ли в вашем проекте использовать языки отличные от C# (о том, что проект на нем я понял из обсуждения)? Как видится описание "доменов"?


Можно использовать все что угодно, главное — решить задачу. А задача состоит в том чтобы у специалистов данного мед.учереждения была возможность расширять систему, добавляя новые типы пациентов, обследований, методики восстановления, методы анализа накопленных данных по результатам лечения.

Описание домена тогда должно строится на языке использующем термины домена.


Например, для каждому пациенту соответствует своя история болезни, назначения и обследования.
<Пациент>
  <История болезни />
  <Назначения />
  <Обследования />
</Пациент>


Обследования включают в себя несколько конкретных обследований, список найденных нарушений, а также правила по которым происходит предварительная постановка диагноза.
<Обследования>
  <Обследование [0..*] />
  <Нарушение [0..*] />
  <Правила диагностики>
    <Правило "Предварительная диагностика ">
      <Если>
        Пациент = амбулаторный  И
        Нарушения СОДЕРЖАТ Акустико-мнестическая афазия СТЕПЕНИ Грубая  И
        Нарушения СОДЕРЖАТ Динамическая апраксия СТЕПЕНИ ВЫШЕ Легкая
      </Если>
      <То>
        Область поражения мозга = фронтальная доля,
        Пациент.Назначения ДОБАВИТЬ Постельный режим 3 недели,
        Пациент.Назначения ДОБАВИТЬ Проверка фронтальной доли на томографе
      </To>
    </Правило>
  </Правила диагностики>
</Обследования>
Re[7]: JetBrains Meta Programming System
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 29.01.09 11:50
Оценка:
Здравствуйте, VladD2, Вы писали:

T>>camlp4


VD>Тогда уж Nemere. Его макросы мощнее этого препроцессора


А за счет чего они мощнее?
Re[3]: JetBrains Meta Programming System
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 13:22
Оценка: 1 (1)
Здравствуйте, FallenGameR, Вы писали:

FGR>Но Nemerle ведь еще не релиз. На сайте написано что CTP и стабильность не гарантируется. Насколько я знаю, создатель из проекта ушел в МС и больше язык не поддерживает. Язык очень интересный, но по-моему при всем вышеперечисленном писать на нем большую систему с требованиями повышенной надежности (на медицинский софт такое требование налагается) еще рано.


Авторы никуда не ушли. Они просто загружены своей работой и не могут заниматься разработкой. Тем не менее они доступны и у них можно выяснитьв се что угодно.
Проект открытый и любой может поучаствовать в нем. Я лично довел в компиляторе часть ответственную за разрешение перегрузки при вызове.
Главное, что есть масса людей которые разбираются в компиляторе и если что подскажут и помогут.

То что он не релиз не значит, что им нельзя пользоваться. Тем более, что если использоваться он будет для конкретных целей (разработки и использования ДСЛ-ей).

Сам компилятор вполне стабилен. Сейчас основные проблемы связаны с поддержкой IDE. Да и релиз не за горами. Было бы свободное время, давно бы зарелизили.

Надежность же софта больше зависит от качества проектирования, понятности кода и наличия качественных и всеобъемлющих тестов.
Так что лично спокойно использовал бы Nemerle в коммерческих продуктах. В своей работе я его и так использую постоянно. Но мы сот на сторону не пишем. Только для своих нужд.

VD>>В общем, есть разные пути под разные задачи. Немаловажны и ограничения. Можно ли в вашем проекте использовать языки отличные от C# (о том, что проект на нем я понял из обсуждения)? Как видится описание "доменов"?


FGR>Можно использовать все что угодно, главное — решить задачу. А задача состоит в том чтобы у специалистов данного мед.учереждения была возможность расширять систему, добавляя новые типы пациентов, обследований, методики восстановления, методы анализа накопленных данных по результатам лечения.


Ну, а как вы себе это видите? Есть какие-то задумки?
Вот если бы ты их описал, то можно было бы подсказать что-то конкретное.

FGR>Описание домена тогда должно строится на языке использующем термины домена.


Это общие слова. Если есть задумка, то потрать время и формализуй ее на словах.
А новые виды пациентов и обследований можно рассматривать как новые поля и таблицы. Для этого и ДСЛ особо не нужен.
ДСЛ — это нечто большее. Он должен позволять описать некоторую задачу из предметной области, а не просто настроить систему.

Скажем в 1С ДСЛ-ей нет, но она вполне себе настраиваемая. Там есть некий конструктор БД, средства вычисления остатков и формирования отчетов. Это позволяет фактически использовать 1С как специализированное средство разработки.

FGR>Например, для каждому пациенту соответствует своя история болезни, назначения и обследования...


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

Описать синтаксис языка не столь сложная задача. Вы практически это уже сделали в виде ХМЛ. А вот реализовать семантику будет не просто без знаний и применения методов аналогичных прологовским.

Итак. Давай еще раз уточним постановку задачи.

Вы хотите:
1. Создать некую систему позволяющую описывать структуру БД, чтобы позволить людям хранить данные не описанные на этапе разработки вашей программы.
2. Создать язык описывающий зависимости между данными структрами данных.
3. Создать экспертную систему которая бы позволяла производить логические вывод на основания структур данных описанных в п. 1 и языка описания написанного в п. 2.

Так?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.