<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://lib.custis.ru/index.php?action=history&amp;feed=atom&amp;title=ADD_2011%3A_%D0%9E%D1%82%D1%87%D1%91%D1%82_%D0%A0%D1%83%D1%81%D0%B5%D1%86%D0%BA%D0%BE%D0%B3%D0%BE_%D0%93%D0%B5%D0%BE%D1%80%D0%B3%D0%B8%D1%8F%2FLanguage_Oriented_Programming</id>
		<title>ADD 2011: Отчёт Русецкого Георгия/Language Oriented Programming - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://lib.custis.ru/index.php?action=history&amp;feed=atom&amp;title=ADD_2011%3A_%D0%9E%D1%82%D1%87%D1%91%D1%82_%D0%A0%D1%83%D1%81%D0%B5%D1%86%D0%BA%D0%BE%D0%B3%D0%BE_%D0%93%D0%B5%D0%BE%D1%80%D0%B3%D0%B8%D1%8F%2FLanguage_Oriented_Programming"/>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=ADD_2011:_%D0%9E%D1%82%D1%87%D1%91%D1%82_%D0%A0%D1%83%D1%81%D0%B5%D1%86%D0%BA%D0%BE%D0%B3%D0%BE_%D0%93%D0%B5%D0%BE%D1%80%D0%B3%D0%B8%D1%8F/Language_Oriented_Programming&amp;action=history"/>
		<updated>2026-05-07T16:02:17Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://lib.custis.ru/index.php?title=ADD_2011:_%D0%9E%D1%82%D1%87%D1%91%D1%82_%D0%A0%D1%83%D1%81%D0%B5%D1%86%D0%BA%D0%BE%D0%B3%D0%BE_%D0%93%D0%B5%D0%BE%D1%80%D0%B3%D0%B8%D1%8F/Language_Oriented_Programming&amp;diff=25825&amp;oldid=prev</id>
		<title>StasFomin: Новая страница: «Доклад читал человек из JetBrains — Макси...»</title>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=ADD_2011:_%D0%9E%D1%82%D1%87%D1%91%D1%82_%D0%A0%D1%83%D1%81%D0%B5%D1%86%D0%BA%D0%BE%D0%B3%D0%BE_%D0%93%D0%B5%D0%BE%D1%80%D0%B3%D0%B8%D1%8F/Language_Oriented_Programming&amp;diff=25825&amp;oldid=prev"/>
				<updated>2011-05-17T11:10:24Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&lt;a href=&quot;/Language_Oriented_Programming_(LOP)_%D0%B2_%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B8_(%D0%9C%D0%B0%D0%BA%D1%81%D0%B8%D0%BC_%D0%9C%D0%B0%D0%B7%D0%B8%D0%BD,_ADD-2011)&quot; title=&quot;Language Oriented Programming (LOP) в действии (Максим Мазин, ADD-2011)&quot;&gt;Доклад&lt;/a&gt; читал человек из JetBrains — Макси...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Language Oriented Programming (LOP) в действии (Максим Мазин, ADD-2011)|Доклад]] читал человек из JetBrains — Максим Мазин, один из разработчиков YouTrack, активно участвующий в разработке предметно-ориентированных языков для нужд JetBrains.&lt;br /&gt;
&lt;br /&gt;
В докладе речь шла о применении DSL для разработки приложений. То есть перед началом разработки осуществляется формализация предметной области в виде неких языковых правил и конструкций. А программа пишется уже на разработанном языке. В результате, исходный код получается максимально компактным и понятным. Однако, обозначенный подход не пользуется популярностью в силу высокой сложности разработки собственного компилятора для разработанного языка и отсутствию удобных IDE для работы с этим языком.&lt;br /&gt;
&lt;br /&gt;
В качестве решения, JetBrains предлагает свой продукт — среду языко-ориентированного программирования Meta Programming System(MPS). Эта среда предоставляет удобные механизмы для разработки собственного DSL и создания с его помощью программ в современном IDE. В частности, багтрекер YouTrack разработан именно с использованием MPS. В качестве иллюстрации своих слов, докладчик показал небольшое расширения для языка Java, добавляющее конструкцию для синхронизации доступа к разделяемым ресурсам — synchronized.&lt;br /&gt;
&lt;br /&gt;
Работает это следующим образом:&lt;br /&gt;
# Исходный код приложения на разработанном языке (или с использованием расширения) обрабатывается препроцессором MPS, который осуществляет генерацию исходного кода, понятного компилятору языка общего назначения (в данном случае Java)&lt;br /&gt;
# Осуществляется компиляция сгенерированных исходников&lt;br /&gt;
Говоря о препроцессоре, докладчик отдельно упомянул, что, несмотря на текстовое представление внедряемых в язык узлов, они не является текстом (?!). Каждый узел «живёт» в своей ячейке, отображаемой с помощью текстового представления, а проекционный редактор MPS занимается изменением непосредственно абстрактного синтаксического дерева. В настоящий момент реализован ряд расширений языка Java с использованием MPS:&lt;br /&gt;
# Язык запросов к коллекциям&lt;br /&gt;
# Язык работы с датами&lt;br /&gt;
# Поддержка замыканий&lt;br /&gt;
# Язык описания регулярных выражений&lt;br /&gt;
&lt;br /&gt;
MPS — опенсорсный бесплатный продукт, поэтому с его использованием можно разрабатывать свои DSL для любых задач. На вопрос одного из участников конференции о языковых расширениях для .NET/C# — сказали, что если в JetBrains будет разрабатываться проект на .NET, очень возможно, что они появятся, но пока нет ;(.&lt;br /&gt;
&lt;br /&gt;
Уже после доклада, на стенде JetBrains разработчики продемонстрировали работу с MPS (в докладе этого не было, только слайды). Продукт выглядит интересно, наверное, имеет смысл посмотреть-изучить.&lt;br /&gt;
&lt;br /&gt;
Кстати, хотелось бы отдельно отметить работу стенда JetBrains на конференции. Там присутствовали разработчики основных продуктов компании: Resharper, YouTrack, dotCover, Teamcity, можно было задать вопросы, получить ответы и скидку на лицензии Resharper и Teamcity. Разработчик Resharpera в ответ на мой вопрос о разрабатываемой в компании замене ставшего платным Reflector-а, по секрету ;) сообщил о том, что их бесплатный декомпилятор '''dotPeek''' почти готов и вот-вот (в течение одной-двух недель) появиться на сайте компании по программе Early Access. Показал его в работе (почти один в один Reflector) и пообещал тесную интеграцию с 6 м Resharper-ом.&lt;/div&gt;</summary>
		<author><name>StasFomin</name></author>	</entry>

	</feed>