С 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. :-) Правда, все это уже давно заброшено.
Еще очень интересно, как к вам внутрь (или снаружи) можно вставить какой-нибудь оптимизатор кода (у меня много клиентов интересуются скоростью счета). С оптимизацией мы много не эксперементировали, но сложные преобразования кода (а не просто замена высокоуровневого кода более низкоуровневым кодом), мы делали. Так что, вставить оптимизатор вполне возможно.
Хех, это и есть главный вопрос: у вас время выполнения и время редактирования как связаны. В разных IDE на этот вопрос отвечают по-разному (хороший пример тут, например, языки-среды smalltalk -- типа того же Squeak).
Это я понял, что вы экспериментировали с псевдографикой. Но ежели вам нужно нарисовать схему детекторного приемника, а символа детектора и катушки в псевдографики нету? По-другому задам вопрос: генерация кода расчета электрической сети возможна, с сохранением удобного редактирования принципиальной схемы этой сети? А с учетом предыдущего абзаца -- расчет (опускаю "генерацию кода", зачем о ней знать пользователю) электрической сети возможен, перемежаемый редактированием этой сети в формате принципиальной схемы? В презентации Intentional Software есть слайд, который прямо отвечает на вопрос о возможности, как минимум, задания языка электрической принципиальной схемы.
Насчет реализации OWL на MPS -- интересно именно с онтологической частью: вы семантическую сетку онтологии хранили отдельно, или использовали AST в качестве этой самой семантической сетки?
Хех, это и есть главный вопрос: у вас время выполнения и время редактирования как связаны. В разных IDE на этот вопрос отвечают по-разному (хороший пример тут, например, языки-среды smalltalk -- типа того же Squeak). У нас никак. За исключением языков для определения языков, которые генерятся в Java, компилируются, и перегружаются.
Это я понял, что вы экспериментировали с псевдографикой. Но ежели вам нужно нарисовать схему детекторного приемника, а символа детектора и катушки в псевдографики нету? По-другому задам вопрос: генерация кода расчета электрической сети возможна, с сохранением удобного редактирования принципиальной схемы этой сети? А с учетом предыдущего абзаца -- расчет (опускаю "генерацию кода", зачем о ней знать пользователю) электрической сети возможен, перемежаемый редактированием этой сети в формате принципиальной схемы? В презентации Intentional Software есть слайд, который прямо отвечает на вопрос о возможности, как минимум, задания языка электрической принципиальной схемы. У нас для этого придется движок улучшать. Средствами языка для определения редактора это сейчас не сделать.
Насчет реализации OWL на MPS -- интересно именно с онтологической частью: вы семантическую сетку онтологии хранили отдельно, или использовали AST в качестве этой самой семантической сетки? В смысле семантической сетки? У нас был редактор для OWL, но про семантику он немного знал, хотя везде был комплишен, навигация, итп.
Про суперкомпиляцию где-то слышал, но подробностей не знаю. Почитаю завтра.
Я немного продолжил тему "обычные языки vs DSL" в конце постинга http://ailev.livejournal.com/685455.html -- и там еще интересный разговор в комментах получился с avlasov про тестирование программ, написанных на винегрете из DSL.
Да нет, почему. Рефлексивность нужна во время выполнения, а не во время редактирования, тут в принципе мы роли не играем. Если что, у нас есть javascript, который определен в мпс. Если точнее насчет агностицизма, то больше всего мы работали с сильно типизированными языками. И их, естественно, лучше всего поддерживаем.
Еще есть языки, где не хватает псевдографики (тут я не разобрался еще с вашим табличным редактором). Так, в презентации Intentional Software есть пример языка принципиальных электрических схем -- у вас такое можно? Вопрос не такой праздный, ибо одному нашему клиенту нужно делать стандартное представление языка и графический редактор для системы имитационного моделирования: там языков, подразумевающих что-то типа принципиальной схемы, чертежа или даже географической карты довольно много, и DSL-инструментарий для таких "нетьюринговых" языков был бы очень интересен.
Мы эксперементировали с псевдографикой. У нас были химические формулы (мы делали интерпретатор пролога, и пробовали добавлять туда domain-specific-расширения.
Если пойти в этой "языковости" в другую сторону, то упремся в AST как структуру представления знаний. Дальше пойдут вопросы об upper ontology, представимой этой моделью, способами ее пополнения, возможностью стыковки с людьми, для которых онтологический разговор главный и "онтологическая стыковка" разных DSL по типу ISO 15926 (тут мои мысли пока смутные, но я надеюсь их постепенно прояснить -- речь идет о специальных DSL моделирования данных, ибо люди матюкаются, но юзают OWL исключительно по причине отсутствия инструментария для других языков. Тут и может прийти на помощь языкомёт типа вашей MPS).
У меня диплом был реализация редактора OWL на MPS. :-) Правда, все это уже давно заброшено.
Еще очень интересно, как к вам внутрь (или снаружи) можно вставить какой-нибудь оптимизатор кода (у меня много клиентов интересуются скоростью счета).
С оптимизацией мы много не эксперементировали, но сложные преобразования кода (а не просто замена высокоуровневого кода более низкоуровневым кодом), мы делали. Так что, вставить оптимизатор вполне возможно.
Reply
Это я понял, что вы экспериментировали с псевдографикой. Но ежели вам нужно нарисовать схему детекторного приемника, а символа детектора и катушки в псевдографики нету? По-другому задам вопрос: генерация кода расчета электрической сети возможна, с сохранением удобного редактирования принципиальной схемы этой сети? А с учетом предыдущего абзаца -- расчет (опускаю "генерацию кода", зачем о ней знать пользователю) электрической сети возможен, перемежаемый редактированием этой сети в формате принципиальной схемы? В презентации Intentional Software есть слайд, который прямо отвечает на вопрос о возможности, как минимум, задания языка электрической принципиальной схемы.
Насчет реализации OWL на MPS -- интересно именно с онтологической частью: вы семантическую сетку онтологии хранили отдельно, или использовали AST в качестве этой самой семантической сетки?
Про оптимизацию тогда задам вопрос по-другому: а ежели речь идет о реализации суперкомпилятора (моя мысль тут была http://ailev.livejournal.com/565598.html, а про суперкомпиляторы -- http://ailev.livejournal.com/544965.html. Ах, какие там длинные треды ;)))
Reply
У нас никак. За исключением языков для определения языков, которые генерятся в Java, компилируются, и перегружаются.
Это я понял, что вы экспериментировали с псевдографикой. Но ежели вам нужно нарисовать схему детекторного приемника, а символа детектора и катушки в псевдографики нету? По-другому задам вопрос: генерация кода расчета электрической сети возможна, с сохранением удобного редактирования принципиальной схемы этой сети? А с учетом предыдущего абзаца -- расчет (опускаю "генерацию кода", зачем о ней знать пользователю) электрической сети возможен, перемежаемый редактированием этой сети в формате принципиальной схемы? В презентации Intentional Software есть слайд, который прямо отвечает на вопрос о возможности, как минимум, задания языка электрической принципиальной схемы.
У нас для этого придется движок улучшать. Средствами языка для определения редактора это сейчас не сделать.
Насчет реализации OWL на MPS -- интересно именно с онтологической частью: вы семантическую сетку онтологии хранили отдельно, или использовали AST в качестве этой самой семантической сетки?
В смысле семантической сетки? У нас был редактор для OWL, но про семантику он немного знал, хотя везде был комплишен, навигация, итп.
Про суперкомпиляцию где-то слышал, но подробностей не знаю. Почитаю завтра.
Reply
Reply
Leave a comment