LINUX.ORG.RU

MPS от JetBrains

 , ,


0

1

После более пяти лет разработки, JetBrains опубликовали первую бета-версию своей Meta Programming System.

MPS предназначена для разработки проблемно-ориентированных языков (DSL) в среде JVM.

>>> Подробности

anonymous

Проверено: anonymous_incognito ()

Ответ на: комментарий от theos

> Текст - более нискоурвневый.

Нет. Тот текст, который юзается в современных языках -- низкоуровневый. Словесное неформальное описание алгоритма зачастую в 3-10 раз короче его описания на языке программирования.

> И вообще, с чего вы взяли, что программить надо в тексте?

Не помню с чего.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от theos

> На всякий случай - МПС языке не контекстно свободные.

КС обычно обозначет не то, что ты так называешь. Почитай википедию "КС грамматики".

> Можно сделать так. что два одинаковых на вид кода делают совершенно разное.

Так это даже и в плюсах без шаблонов можно.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>Словесное неформальное описание алгоритма зачастую в 3-10 раз короче его описания на языке программирования.

но при выдаётся не вся инфа ;) а вообще это тут не при чём. Я про то, что кода я трансформирую модель одну в другую (а они могут быть сильно не похожи), я хочу _структурную_ трансформацию. А не заботиться как там и как тут строчки кодируются, как списки, и разделитиели какие. это всё ненужные мне мелочи.

theos ★★★
()
Ответ на: комментарий от www_linux_org_ru

Я знаю что употребляю термин несколько не поназначению. Уповаю на то, что вы меня поймёте. А формальное определение КС знаю, просто удобно так говорить)

theos ★★★
()
Ответ на: комментарий от www_linux_org_ru

Нет. В с++ (особенно если говоритьо без препроцессора, но и с ним ессно тоже), глядя на текст программы, вы поёмете что он делает. как компилятор понимает. в МПС - нет. Визульная часть там - далеко не всё.

theos ★★★
()
Ответ на: комментарий от Karapuz

Кстати, фаулер в последнем обзоре написал, что разочарован в структурном редакторе, и что подход майкрософта ему больше по душе)

theos ★★★
()
Ответ на: комментарий от theos

Я бы за 40000-50000 и не так написал. Я бы написал, что я анальный раб копрорации, люблю все ее продукты и особенно .NET 4.0 и Silverlight

Karapuz ★★★★★
()
Ответ на: комментарий от Karapuz

:D

>раб копрорации

>копрорации

Вы как бе намекаете?

theos ★★★
()
Ответ на: комментарий от theos

> Я знаю что употребляю термин несколько не поназначению. Уповаю на то, что вы меня поймёте.

Не несколько, а совершенно не по назначению (КС грамматика позволяет терминал выводить из совершенно разных нетерминалов, что и позволит его употреблять контекстно зависимо). И не понимаю (может потому, что болею чуть-чуть, а может потому что ты меня не понимаешь, и поэтому я не могу сделать твердый вывод, что я тебя понимаю).

В общем, предлагаю термин КонтекстноЗависимый и предлагаю тут тебе в общих чертах (но полно) определить его в контексте МПС.

З.Ы. еще предлагаю на ты общаться.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от theos

> я хочу _структурную_ трансформацию. А не заботиться как там и как тут строчки кодируются, как списки, и разделитиели какие. это всё ненужные мне мелочи.

Собственно и я хочу, и меня мелочи в определенных случаях мало волнуют,

но структурная трансформация уже сто лет^W^W пятьдесят лет делается через парсеры, а не редакторы, загоняющие меня насильно в структуру.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>на ты общаться.

Ok=)

Когда я говорю про контекстно-свободность, я имею ввиду то, что парсер использует семантику(типы переменных, где они располжены, и.т.д), что бы распознать тип лексемы. До некторой степени конечно можно играться лексером. По работе писал парсер с семантико-зависимым лексером: автор языка подумал что удобно писать ObjectPropertyName вместо Object.Property.Name =) Вот такой изврат я считаю не КС. просто использую "простой" смысл "контекстно-свободная", тоесть синтаксис не зависит от семантики. расплывчато, но надеюсь достаточно)

theos ★★★
()
Ответ на: комментарий от www_linux_org_ru

Структурная трансформация делается через трансформаторы =) при чём здесь парсеры и редакторы? Или вы про то что там нет command line утлиты, которая по .mps файлам генерила .xxx?

theos ★★★
()
Ответ на: комментарий от theos

> Или вы про то что там нет command line утлиты, которая по .mps файлам генерила .xxx?

Из того, что я поковырял (т.е. туториал и примеры), все таки одного не понял. - вот я хочу допустим использовать это у себя (к стати, с лицензией не понятно, что там apache, а что будет за деньги), дык вот, хочу я использовать допустим для языка отчетов. И получается, что mpc мне не подходит, т.к. нету такого генератора - txt -> нечто(например java).? И любое редактирование требует mpc среды?

aka50
()
Ответ на: комментарий от anonymous

> Теперь Лисп перестал быть единственным игроком в этой области.

Да никогда он там не был "единственным игроком". Решений куча, от прагматичных "звёзд-с-неба-не-хватающих" bison/yacc, до экзотики типа REBOL.

Просто Лисп среди них всех выделяется наибольшей е*анутостью - как синтаксиса, так и его адептов. По сути являясь среди них одновременно самым примитивным (по возможностям) и сложным (в использовании).

Невменяемость синтаксиса и снискала Лиспу ложную славу языка якобы элитарного, доступного единицам, Первоязыка. Подобное же впечатление оставляют звуколожцы (аудиофилы) - любители "тёплого лампового звука", которые считают, что быдлу этого не понять, а сами не отличают на слух как звучит кабель из бескислородной меди за $900 и разогнутая проволочная вешалка.

anonymous
()
Ответ на: комментарий от aka50

> И любое редактирование требует mpc среды?

Я это не выяснил. Вполне возможно они нас хотят залочить на свою среду.

Но в нормальном случае может быть так: иерархическая струтура программы хранится в человеко-плохочитаемом формате (например, XML). И редактировать ее можно в том же формате.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от anonymous

Это - полноценный language workbench, среда для разработки языка и разработки на языке. Обеспечивает полный цикл разработки, включая визуальную отладку и профайлинг на самом DSL'е. Это само по себе уникальное явление, да ещё и помноженное на бенефиты JVM и Java-рантайма.

Конечно, лиспари вам скажут, что это всё не нужно. Что лучшая на свете IDE - это REPL (напомню, это такая текстовая консолька, в которую вводят команды, без возможности хождения по хистори, элементарных комплишенов и зачастую без банального редактирования). Но рекомендую не принимать всерьёз эту сектантскую чепуху. У тех, кто занимается делом, а не дрочит, извиняюсь, на скобки, подобный бред вызывает лишь недоуменную ухмылку, да желание покрутить пальцем у виска.

anonymous
()
Ответ на: комментарий от www_linux_org_ru

> анонимус, напиши на МПС quasiqoute или прекрати пафос.

Ваши претензии нелепы. Если Вам понадобилось quasiquotation в DSL, то это означает, что Вы СОВЕРШЕННО не понимаете сути DSL.

anonymous
()
Ответ на: комментарий от anonymous

> Ваши претензии нелепы. Если Вам понадобилось quasiquotation в DSL, то это означает, что Вы СОВЕРШЕННО не понимаете сути DSL.

Значит ваши супермогучие DSL не осиливают простенького язычка со скобками, cons, car, cdr, eval, apply, quote & quasiqoute?

Тогда зачем вообще нужны ваши DSL???

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

Если забыть про абсурдность самой задачи (я даже не представляю, в каком изменённом состоянии сознания Вам пришла в голову такая нелепая идея - поставить всё с ног на голову: не реализовывать DSL на Лиспе, а реализовывать Лисп как DSL!), то я не вижу принципиальных проблем, по которым нельзя было бы реализовать на MPS Лисп, пусть минимальный, но даже с полноценными макрами.

anonymous
()
Ответ на: комментарий от anonymous

Вот сначала реализуй лисп из 10 функций как DSL, а потом разводи тут пафос.

А то, что ты проблем не видишь -- может у тебя зрение плохое.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> Вот сначала реализуй лисп из 10 функций как DSL

Я никому ничего не обязан доказывать. Если Вас интересует проблема, займитесь ею.

> А то, что ты проблем не видишь -- может у тебя зрение плохое.


Я с удовольствием выслушаю мнение более зрячего (но, увы, менее вежливого) коллеги.

anonymous
()
Ответ на: комментарий от anonymous

> Я никому ничего не обязан доказывать. Если Вас интересует проблема, займитесь ею.

Ага, этим и занимаюсь -- изучаю возможности МПС.

> Я с удовольствием выслушаю мнение более зрячего (но, увы, менее вежливого) коллеги

Я себя не позиционирую как более зрячего (и менее вежливого :-) но DSL framework как минимум должен уметь eval & apply. Пафос мне претит. А мысль сравнить МПС с лиспом -- интересна.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

Попытка сделать DSL framework весьма интересна, и при этом надо обратить внимание не на отстутсвие истории в каком-нить лиспе, а на возможноные дефекты МПС... так как лисп я применять не собираюсь, а вот что-то похожее на МПС -- вполне.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>Вот сначала реализуй лисп из 10 функций как DSL, а потом разводи тут пафос.


Есть аналог MPS symade.com (svn и symade.org кудато провалился) - отдельный подобный проект от автора kiev compiler. Так вот AFAIK последний kiev compiler реализован на нем - это расширеная жаба которая в частности имеет встроеный в язык prolog engine.

То есть не знаю как на счет MPS но в подобном ему symade подобне штуки делаются.

r ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>Я это не выяснил. Вполне возможно они нас хотят залочить на свою среду.

Дело не в этом. Одна из основных целей подхода - кроме DSL создавать одновременно IDE для DSL. symade при полной своей независимости от mps тоже выглядит подобным образом.

r ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

Сам по себе МПС ничего не умеет. Это же генеративнй подохо. Как вариант - написать на МПС в качестве нихзкого уровня язык лисп, а поверх него генерить уже что то доменноспецепфично, с евалами, блекджеком и шлюхами.

theos ★★★
()
Ответ на: комментарий от www_linux_org_ru

>иерархическая струтура программы хранится в человеко-плохочитаемом формате (например, XML). Можно править ксмэльные файлы в которых вся структура. мне даже приходилось такое делать, когда МПС поттупливал :) но в чистом виде это тяжко, конечно.

theos ★★★
()
Ответ на: комментарий от r

>То есть не знаю как на счет MPS но в подобном ему symade подобне штуки делаются.

В МПС на раз-два) Сам МПС написан на МПСе. Там для поддержки системы типов введён специальное декларативное расширение базового языка, на котором можно писать кучу равенств и не равенств типов, а он сам выводит:


typeof(assignmennt.leftPart) :>=: typeof(assignment.rightPart)
typeof(stringLiteral) :==: <string>

theos ★★★
()
Ответ на: комментарий от theos

> Это как раз флекс и бизон может осилить каждый. А вот идею МПС не понял почти никто в этом треде. Что обидно, хотелось обсудить, ибо тема интересная. А срач начался уже с первой страницы =/

я правильно понял что если раньше для домено-специфичных было модно предоставлять формочки и визуальные 2D-рисовалки, то теперь наконец доперли что текст будет все-таки поудобнее?

А какова мощность у этих домено-специфичных языков? Парсер, говорите, предоставляется... вот если у меня домен - HTML, как, сойдет? валидность за меня оно сможет проверить?

по теме редактора dsl-языка - штука вообще полезная и приятная, если не злоупотреблять. подсвечивалку синтаксиса для emacs/vim сможете сгенерировать?

gods-little-toy ★★★
()
Ответ на: комментарий от anonymous

> off: Кто нить из экспертов даст прогноз сколько протянет cloud computing?

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

gods-little-toy ★★★
()
Ответ на: комментарий от gods-little-toy

>Было модно предоставлять формочки и визуальные 2D-рисовалки, то теперь наконец доперли что текст будет все-таки поудобнее?

Для кого и чего удобнее? Чбоы программить - да, удобнее. А что бы создавать доменно спецефичны языки _моделирования_ - не удобнее. Есть подозрение на программизм головного мозга.

>HTML, как, сойдет?
Да. Но сам по себе хтмл в МПС - бессмысленен. Ибо в стурктурном редакторе не удобен, ибо почти plain text. Но нужен же не сам ХТМЛ, а более высокоруовневые конструкции поверх него, так что сойдёт.

theos ★★★
()
Ответ на: комментарий от theos

>>Было модно предоставлять формочки и визуальные 2D-рисовалки, то теперь наконец доперли что текст будет все-таки поудобнее?

>Для кого и чего удобнее? Чбоы программить - да, удобнее. А что бы создавать доменно спецефичны языки _моделирования_ - не удобнее. Есть подозрение на программизм головного мозга.

не программизм мозга, а наличие оного. Текстовое представление всегда удобнее - его можно говорить, комментировать в почте и тд. Разницу между двумя версиями текста легко увидеть. А вот разница между двумя, например, pdf-ками как? Открыть 2 окна рядом и сколлить вверх-вниз??

>>HTML, как, сойдет? > Да. Но сам по себе хтмл в МПС - бессмысленен. Ибо в стурктурном редакторе не удобен, ибо почти plain text. Но нужен же не сам ХТМЛ, а более высокоруовневые конструкции поверх него, так что сойдёт.

итого, нас интересуют только предметные области где текст имеет высокую структуру (уши формочек уже видны), и его много. То есть там много однотипных элементов. Тут встает вопрос - текст во время жизни системы наверняка будет меняться, и не одним человеком. Не значит ли это, что его на самом деле следует хранить в БД (и тогда структурный редактор - только для редактирования) ?

А graphviz'овский dot формат как? Сойдет?

gods-little-toy ★★★
()
Ответ на: комментарий от gods-little-toy

>А graphviz'овский dot формат как? Сойдет? Легко.

>А вот разница между двумя, например, pdf-ками как? Открыть 2 окна рядом и сколлить вверх-вниз??

То что некторые фичи, проще _реализовать_ для плйн текста ещё ни о чём не говорит. Хотите - подстраивайтесь под компьютер. Но мне читать пдф удобнее, чем разметченный тех. И потому дифф хочу видеть тоже для ПДФ а не для текста (да, я знаю что для ПДФ его не сделать нормально, но это не повод говорить, что его не сделать _нигде_). Именно это я и называю ПГМ. Извените, но мне читать проще ПДФ, чем тех-овский маркап. А системы пишуется в первую очередь для людей, а не для компов (если это конечно не халтурка на неделю).

theos ★★★
()
Ответ на: комментарий от theos

З.Ы. Я не проив ТеХ, я сам им поользуюсь. Я про то, что это не единственный подход.

theos ★★★
()
Ответ на: комментарий от gods-little-toy

>(и тогда структурный редактор - только для редактирования)

Простите, не понял - а зачем ещё редакторы, как не для реактирования? о_О

>итого, нас интересуют только предметные области где текст имеет высокую структуру (уши формочек уже видны)

Да, если я проектирую 'электросхемы, мне удобнее эти схемы рисовать, а не описывать в dot стиле. Нагляднее както. А это как раз Domain Specific Modeling language.

theos ★★★
()
Ответ на: комментарий от theos

>>(и тогда структурный редактор - только для редактирования)

>Простите, не понял - а зачем ещё редакторы, как не для реактирования? о_О

я имею ввиду что в случае хранения данных модели в БД скорее всего редактировать надо будет один элемент за раз, и тогда ваш размеченный редактор мало чем отличается от нарисованной в VB формы..

>итого, нас интересуют только предметные области где текст имеет высокую структуру (уши формочек уже видны)

> Да, если я проектирую 'электросхемы, мне удобнее эти схемы рисовать, а не описывать в dot стиле. Нагляднее както. А это как раз Domain Specific Modeling language.

ну, не всегда... там тоже VHDL и прочие похожие языки есть... хотя вообще - согласен - есть области деятельности где наиболее естественное представление - не текстовое. Но мы сейчас ведь MPS обсуждаем и о них не говорим, правильно?

gods-little-toy ★★★
()
Ответ на: комментарий от gods-little-toy

>ну, не всегда... там тоже VHDL и прочие похожие языки есть... хотя вообще - согласен - есть области деятельности где наиболее естественное представление - не текстовое. Но мы сейчас ведь MPS обсуждаем и о них не говорим, правильно?

Ну это же вы ехидничали на "формочками"?

>я имею ввиду что в случае хранения данных модели в БД скорее всего редактировать надо будет один элемент за раз, и тогда ваш размеченный редактор мало чем отличается от нарисованной в VB формы..

Расскажу. Когда содержание этих "форм" достаточно сложное. Приведу конкретный пример из МПС: http://www.jetbrains.com/mps/docs/tutorial/image103.png Да, в какмо то смысле это формочка, но с достаточно сложным контентом (Например поле такой формы - это полноценное выражение на каком то ДСЛ, который достаточно знает про те данные которыми оперирует, и имеет для их обработки удобные конструкции.

З.Ы. Если вы смотрели тутор, то там вообще java реализована в качестве базового языка. Какие формочки?

theos ★★★
()
Ответ на: комментарий от anonymous

> off: Кто нить из экспертов даст прогноз сколько протянет cloud computing?

смотря какие clouds. Если метановые, то доолго.

anonymous
()
Ответ на: комментарий от dimon555

w.l.o.r.> Они предложили новый язык строго внутри своей IDE или с возможностью расширять их макросы/шаблоны посторонней командно-строчной тулзой

> а чем людям flex и bison не угодили?


на эту тему Мартин Фаулер пытался изъясниться про Language Workbench: http://martinfowler.com/articles/languageWorkbench.html

В двух словах, он утверждает, что внешний DSL "на flex/bison" -- это плохо, потому что нет интеграции с другими языками приложения; и eDSL это плохо тоже, потому что "не понимает семантики" -- валидаторы на проверку типов, и т.п. В MPS, например, в поле "expression" нельзя ввести что-то не expression. Плюс MPS IDE кагбе говорит нам, какого типа очередные вводимые элементы, и ввода чего оно ждёт.

anonymous
()
Ответ на: комментарий от anonymous

> кто нибудь может внятно объяснить что такое этот "Meta Programming System"?

"Language Workbench" в определении Мартина Фаулера

anonymous
()
Ответ на: комментарий от www_linux_org_ru

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

посмотри туториал с калькулятором и подумай ещё раз. Там как раз это и сделано. Заодно посмотри, во что превращается сгенерированный код на яве (раздел про генераторы). Смысл MPS и Language Workbench, как я понимаю, именно в явном выделении метаописания создаваемого языка, и интегрируемости языка в IDE: автоматическое применение валидаторов описанных полей, completion в IDE, и т.п.

anonymous
()
Ответ на: комментарий от www_linux_org_ru

> Они привинтили к своей МПС комплешен, которого у бизона из коробки нет.

ну, комплишен "из коробки" есть и у vim (если собрать теги вроде ctags и дополнять по ним). Только он не понимает семантику, и будет пытаться дополнять чем не надо в данном контексте.

anonymous
()
Ответ на: комментарий от www_linux_org_ru

>и у меня в частности есть такой вопрос: изменение парсинга исходного текста в зависимости от типов данных -- это хорошо или извращение?
>Ну например изменение приоритета операторов в зависимости от типов, но не только это.


зачем? какая практическая с того польза?
второй пример напоминает анекдот:
"- доктор, когда я делаю вот так, у меня рука болит.
- А вы "вот так" не делайте."

вообще в форте имхо так можно. Но зачем? Имитируем кавычку в лисповых макрах?

anonymous
()
Ответ на: комментарий от www_linux_org_ru

> - не согласен, что редатировать надо *иерархический объект*. Редактировать надо текст, внутри которого, когда это возможно, распознан иерархический объект, и операции редактирования текста расширены операциями редактирования этого объекта.

редактировать надо *структурный* объект, на уровне структуры. В том же vim есть команды перемещения/работы с разными единицами: буква/слово/предложение/абзац, или в случае языков программирования буква/лексема/statement/функция.

anonymous
()
Ответ на: комментарий от theos

> Вы сами такой написать можете без проблем. А он ниразу ни текстовый, не контекстно свободный ит.д. что такое для него импорт?

сливание AST деревьев, старого DSL и нового, с проверкой семантики типов и корректным определением куда подгружать новые узлы.

anonymous
()
Ответ на: комментарий от www_linux_org_ru

> Тот текст, который юзается в современных языках -- низкоуровневый.

просто это не единственное равноправное представление.

anonymous
()
Ответ на: комментарий от theos

> А формальное определение КС знаю, просто удобно так говорить)

сдаётся мне, под "контекстной свободностью" ты понимаешь ортогональность понятий

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.