Йа -- язычнег, дайте мне капище.

May 10, 2009 20:46

Языкоориентированное программирование (http://ailev.livejournal.com/545386.html, и более подробно http://ailev.livejournal.com/548142.html -- это я писал в январе 2008г.), продолжает формироваться ( Read more... )

Leave a comment

krlz May 13 2009, 20:02:05 UTC
С language agnostic не все просто, ежели обратить внимание на динамические языки, с экстремально поздним связыванием (extreme late binding, типа того же smalltalk в отличие от Java). Ибо языки ведь определяются не чистым синтаксисом (другими словами, в языках важен не только "синтаксический сахар"). Так, важна еще и рефлексивность (для примера -- статья двадцатилетней давности http://www.laputan.org/ref89/ref89.html).
Да нет, почему. Рефлексивность нужна во время выполнения, а не во время редактирования, тут в принципе мы роли не играем. Если что, у нас есть javascript, который определен в мпс. Если точнее насчет агностицизма, то больше всего мы работали с сильно типизированными языками. И их, естественно, лучше всего поддерживаем.

Еще есть языки, где не хватает псевдографики (тут я не разобрался еще с вашим табличным редактором). Так, в презентации Intentional Software есть пример языка принципиальных электрических схем -- у вас такое можно? Вопрос не такой праздный, ибо одному нашему клиенту нужно делать стандартное представление языка и графический редактор для системы имитационного моделирования: там языков, подразумевающих что-то типа принципиальной схемы, чертежа или даже географической карты довольно много, и DSL-инструментарий для таких "нетьюринговых" языков был бы очень интересен.
Мы эксперементировали с псевдографикой. У нас были химические формулы (мы делали интерпретатор пролога, и пробовали добавлять туда domain-specific-расширения.

Если пойти в этой "языковости" в другую сторону, то упремся в AST как структуру представления знаний. Дальше пойдут вопросы об upper ontology, представимой этой моделью, способами ее пополнения, возможностью стыковки с людьми, для которых онтологический разговор главный и "онтологическая стыковка" разных DSL по типу ISO 15926 (тут мои мысли пока смутные, но я надеюсь их постепенно прояснить -- речь идет о специальных DSL моделирования данных, ибо люди матюкаются, но юзают OWL исключительно по причине отсутствия инструментария для других языков. Тут и может прийти на помощь языкомёт типа вашей MPS).
У меня диплом был реализация редактора OWL на MPS. :-) Правда, все это уже давно заброшено.

Еще очень интересно, как к вам внутрь (или снаружи) можно вставить какой-нибудь оптимизатор кода (у меня много клиентов интересуются скоростью счета).
С оптимизацией мы много не эксперементировали, но сложные преобразования кода (а не просто замена высокоуровневого кода более низкоуровневым кодом), мы делали. Так что, вставить оптимизатор вполне возможно.

Reply

ailev May 13 2009, 20:22:25 UTC
Хех, это и есть главный вопрос: у вас время выполнения и время редактирования как связаны. В разных IDE на этот вопрос отвечают по-разному (хороший пример тут, например, языки-среды smalltalk -- типа того же Squeak).

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

Насчет реализации OWL на MPS -- интересно именно с онтологической частью: вы семантическую сетку онтологии хранили отдельно, или использовали AST в качестве этой самой семантической сетки?

Про оптимизацию тогда задам вопрос по-другому: а ежели речь идет о реализации суперкомпилятора (моя мысль тут была http://ailev.livejournal.com/565598.html, а про суперкомпиляторы -- http://ailev.livejournal.com/544965.html. Ах, какие там длинные треды ;)))

Reply

krlz May 13 2009, 20:35:29 UTC
Хех, это и есть главный вопрос: у вас время выполнения и время редактирования как связаны. В разных IDE на этот вопрос отвечают по-разному (хороший пример тут, например, языки-среды smalltalk -- типа того же Squeak).
У нас никак. За исключением языков для определения языков, которые генерятся в Java, компилируются, и перегружаются.

Это я понял, что вы экспериментировали с псевдографикой. Но ежели вам нужно нарисовать схему детекторного приемника, а символа детектора и катушки в псевдографики нету? По-другому задам вопрос: генерация кода расчета электрической сети возможна, с сохранением удобного редактирования принципиальной схемы этой сети? А с учетом предыдущего абзаца -- расчет (опускаю "генерацию кода", зачем о ней знать пользователю) электрической сети возможен, перемежаемый редактированием этой сети в формате принципиальной схемы? В презентации Intentional Software есть слайд, который прямо отвечает на вопрос о возможности, как минимум, задания языка электрической принципиальной схемы.
У нас для этого придется движок улучшать. Средствами языка для определения редактора это сейчас не сделать.

Насчет реализации OWL на MPS -- интересно именно с онтологической частью: вы семантическую сетку онтологии хранили отдельно, или использовали AST в качестве этой самой семантической сетки?
В смысле семантической сетки? У нас был редактор для OWL, но про семантику он немного знал, хотя везде был комплишен, навигация, итп.

Про суперкомпиляцию где-то слышал, но подробностей не знаю. Почитаю завтра.

Reply

ailev May 18 2009, 19:16:20 UTC
Я немного продолжил тему "обычные языки vs DSL" в конце постинга http://ailev.livejournal.com/685455.html -- и там еще интересный разговор в комментах получился с avlasov про тестирование программ, написанных на винегрете из DSL.

Reply


Leave a comment

Up