"Профессор" Луговскер несколько лет пилил свой невнятный DSL Engine, да так и не допилил.
А тут жалкие жабабыдлокодеришки (которым и задач-то таких знать не положено, они же быдло) взяли да и сделали человеческий, вменяемый и предельно практичный engine.
Теперь все ваши козыри биты. Как неодкратно признавалось, единственное достоинство Лиспа - возможность быстрой реализации DSLей. Это же, по совместительству, единственное, на что годен Лисп вообще.
Теперь Лисп перестал быть единственным игроком в этой области. Его невозбранно сомнёт, даже не заметив того, огромная машина MPS, приводимая в движение мощнейшим двигателем JVM/JRE.
После этого спадёт розовая пелена, и всем станет ясно, что язык, преподносимый и восхваляемый вами в своё время как божество, на самом деле - хромой убогий карлик.
Сходил по сслыке. посмотрел тутор. Meta Programming System is an environment for professional software developers to create new custom languages, extend existing languages, and use them to develop programs. MPS is also an instrument for creating Domain Specific Languages (DSLs). Domain experts who are not familiar with programming can easily use DSLs created with MPS.
Так вот посмотрел тутор - я бы назвал такой процесс разработки как "пусть лисп сосет: создай DSL заменив YACC собой!" Все связи в коде все равно надо определять самому. Короче еще один Eclipse :)
В-общем, я так понял что они 5 лет потратили на разработку не удобного инструмента для создания DSL, но IDE и интеграции ее с каким-то подобиме слегка навороченного YACC (Пример кста - калькулятор. Создавали этот калькулятор через MPS страниц 50. Действительно, лисп должен сосать :))) )
>off: Кто нить из экспертов даст прогноз сколько протянет cloud computing?
с харизмой 7 и умением разговор >130%
любой кластер и грид легко превращается в заоблачные вычисления и обратно
Это как раз флекс и бизон может осилить каждый. А вот идею МПС не понял почти никто в этом треде. Что обидно, хотелось обсудить, ибо тема интересная. А срач начался уже с первой страницы =/
нормальные-шаблоны-как-в-С++0х - какое имеют отношения шаблоны, к генеративному подходу МПСа? Если сравнивать генеративные возможности - то простите, всё равно что рогатку с пушкой.
>Это как раз флекс и бизон может осилить каждый. А вот идею МПС не понял почти никто в этом треде.
стыдно вас спрашивать, а в чём собственно основные отличия MPS от flex и bison?
> какое имеют отношения шаблоны, к генеративному подходу МПСа? Если сравнивать генеративные возможности - то простите, всё равно что рогатку с пушкой.
Если все возможности МПС только генеративны, его можно закопать прямо сейчас. Я полагал, что у МПС есть применение типа как у шаблонов, т.е. если надо что-то генерить в зависимости от типа или проверять инфу основанную на типе.
Чисто генеративные возможности МПСа == генеративным возможностям макросов С из 1970-х, или перла -- по вкусу.
Это построение _иерархий_ языков, их моделей, генерации одной модели в другую, валидацией языков, удобный редактор языков. Тоесть вы пишите сначала "низкоурвневые языки". Например джава (он там уже есть). Поверх него друго - более привязанный к вашей области. Можно дополнительные конструкции вводить, удобные для вас. И редактор там _структурный_ далеко не контекстно свободный. Вы посмотрете - почти всё что вы там видите - это один из языков МПСа. Там не текст а _модель_.
>Их документацию я изучу, вот уже сконвертил для ПДА.
Я имел ввиду вообще :)
>Может не будешь утвреждать, что мне снилось, а что нет? Вспомни битовые поля :-)
А что такого в битовых полях? Разве то что ты там назвал было что то такое изряда-вон выходящее? хотя как пример был неплох,да.
З.Ы. Если вы этим интересуетесь, может тогда скажите насчёт чего-то-подбного. Ну вобщем из этой тематике. А то я знаю совсем немного (тулзу от микрософта и ещё парочку)... =(
Вообще -- да, идея метапрограммирования очень интересная, и у меня в частности есть такой вопрос: изменение парсинга исходного текста в зависимости от типов данных -- это хорошо или извращение? Ну например изменение приоритета операторов в зависимости от типов, но не только это.
1. Про ребол читал. Там никакущая проверка типов. Да и декларотивной мощи нехватает).
2. Линзы - почитаю, спасибо.
1.MetaEdit - он для создания domain specific _modeling_ language. Но он страшный(даже визуально) и тупой. И стоит 4.5 тыс евро.
2. intentional programming (опять от микрософт, сдохло давно =( ).
3. Ещё есть емф + xtext. Это - максимально близкое. Позволяет описывать текстовые языки => EMF модель => весь стэк технологий ЕМФ, в частности генеративный. + оно умеет для эклипса редакторы генереить.
4. Есть для эклипса опятьже, тулза для создания декларотивных языков повер XSD (который XML Scheme). Но он бедный достаточно, но юзкейзы придумать можно. (названия не помню, легко найти)
Я считаю да. В смысле что можно привести примеры когда это нужно. Ну например оптимизация - можно оптимизировать генерируемы текст программы, точно зная типы аргументов операций. Можно генерить по строке регекспу - конечный автомат, быстрый. и.т.д.
Изменение приоритета операций - it depends. Если ты описываешь объекты из другой алгебры, нежели вещ. числа) хотя думаю, что для них лучше вводить более наглядные конструкции, чем непонятные значки)
> Можно генерить по строке регекспу - конечный автомат, быстрый.
Это не требует __парсинга__ в зависимости от типов (и кстати есть даже в D)
Насчет подходба МПС (и возможно EMF) -- не согласен, что редатировать надо *иерархический объект*. Редактировать надо текст, внутри которого, когда это возможно, распознан иерархический объект, и операции редактирования текста расширены операциями редактирования этого объекта.
Впрочем, это интересный вопрос, и я его могу обсуждать.
Хотя бы даже -- как ты будешь вставлять в IDE кусок кода, запощенного на форум, если оно не умеет разбирать plain text, а работает только с иерархическими объектами?
> Хотя бы даже -- как ты будешь вставлять в IDE кусок кода, запощенного на форум, если оно не умеет разбирать plain text, а работает только с иерархическими объектами?
Ну есть такое понятие, как "import" - думается в MPS такое реализовать не составит особых проблем.
Да. К сожалению никак. Но я считаю что это стоит той выскокоуровневости, кторая есть в МПС. Скопипастить можно код на джава. А мпс умеет видит .class файлы и джарники. Так что так можно.
Текст - более нискоурвневый. И вообще, с чего вы взяли, что программить надо в тексте? plain text - не так уж нагляден. И контекстно-свободность - тоже ограничение. Сравнивать подходы можно, име опыт. Могу сказать, что да, нередко хочеть "простого текста", а не этого наворченного редактора. Но такое бывает не так уж часто, редактор становиться всё удобнее, и _я_ гтово платить этим за domain specific. Чем более выскокоуровневый язык реализуешь - тем меньше на нём кодить ;)
http://www.jetbrains.com/mps/docs/tutorial/image035.png - То что вы видите в окне редактора - такой же редактор как и все. Вы сами такой написать можете без проблем. А он ниразу ни текстовый, не контекстно свободный ит.д. что такое для него импорт?