Читаем Журнал «Компьютерра» № 10 от 14 марта 2006 года полностью

«Создавать языки под каждый конкретный проект? Вздор!» – скажет вам любой специалист, хорошо знающий, как дорого обходится проектирование формальных языков с нуля. Действительно, при классической схеме разработки любого языка нужно написать много кода для распознавания исходных текстов на этом языке и их погружения в объектную модель, пригодную для дальнейших манипуляций. Кроме того, даже при условии, что эта работа проделана, возникает ряд вопросов.

Как отображать и редактировать программы на таком языке? Понятно, что в век высоких скоростей и мощных сред разработки ограничиться простым текстовым редактором a-la «Блокнот» уже не получится: представления о производительности труда разработчика ныне совсем не те, что в «далекие» 90-е годы XX века.

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

И главное: предположим, объектная модель получена. Что делать дальше? Ведь модель еще нужно связать с языком реализации системы, что является отдельной головной болью.

Языковые инструментарии

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

Речь идет о новом типе программного обеспечения – так называемых языковых инструментариях (language workbenches), которые являются полноценными средами разработки, специально заточенными под DSL. И хотя существуют пока лишь прототипы таких систем, совершенно непригодные для использования в реальных проектах, главные особенности языковых инструментариев можно наглядно продемонстрировать уже сейчас.

Из разработок в этой области хотелось бы упомянуть два перспективных проекта. Первым из них является Meta Programming System компании JetBrains. Система MPS ориентирована на совместное использование с фирменной IDE компании – средой разработки Java-приложений IntelliJ IDEA, которой автор уже восхищался в статье «Кодируй да радуйся» («КТ» #562). Другой проект, Software Factories, принадлежит перу софтверного гиганта Microsoft и выступает в качестве дополнения к недавно вышедшей Visual Studio 2005[Meta Programming System можно свободно скачать по адресу jetbrains.com/mps. Проект Software Factories в настоящий момент представляет собой набор инструментов DSL Tools, доступных для скачивания в составе SDK к Visual Studio 2005. Подробности можно узнать здесь: msdn.microsoft.com/vstudio/teamsystem/workshop/sf].

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


Что такое метапрограмма?

Грубо говоря, метапрограмма – это программа, формирующая в результате своей работы другую программу. Сложно? Тем не менее все это интуитивно понятно человеку, хоть раз занимавшемуся разработкой динамических серверных страниц. Действительно, для веб-дизайнера HTML является «программой для браузера», а для веб-разработчика тот же HTML выступает в роли данных, которые нужно сформировать в результате работы некоторого серверного кода.

Следует отметить важную особенность метапрограммирования: любая метапрограмма определяет не одну конкретную программу, а целый класс. Ниже приведен пример метапрограммы, которая определяет класс всех документов HTML, содержащих произвольное число параграфов. Текст метапрограммы (ASP.NET, С#) заключен между специальными операторами <%...%> и <%=...%>.

<%foreach(Paragraph p in Document) {%>

<%=p.Content%>

<%}%>

Перейти на страницу:

Похожие книги

Хакеры: Герои компьютерной революции
Хакеры: Герои компьютерной революции

Как-то незаметно получилось, что за последние годы достаточно большое количество значений слова «хакер»: «компьютерный гений — озорник — любитель — специалист — исследователь» постепенно сжалось до «компьютерного хулигана — преступника». Mожно только «порадоваться» за труды журналистов околокомпьютерных и не очень изданий во всем мире, а также голливудских режиссеров, прививших умам неискушенных сограждан именно такое видение мира.Но, к счастью, так было не всегда. Эта книга позволяет вернуться к тем дням, когда все это еще только начиналось. К тем чистым и немного наивным ощущениям первоткрывателей, которым в руки попали удивительные игрушки, гигантские по размерам и стоимости...Как начинал Билл Гейтс? Как зарождался Apple? Замечательная коллекция персонажей шумно исследующих киберпространство, в котором до них еще никто не бывал, будет интересна не только специалистам но и простому читателю.

Стивен Леви

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Цифровой журнал «Компьютерра» № 3
Цифровой журнал «Компьютерра» № 3

ОглавлениеBETT 2010: каким мир видит образование будущего? Автор: Сергей ВильяновКивино гнездо: Подбит на взлёте Автор: БЕРД КИВИПротиворакеты Поднебесной Автор: Ваннах МихаилИнтерактивное видео Автор: Максим РудольскийПочему Google уходит из Китая? Автор: Тимофей БахваловВасилий Щепетнёв: Усмиритель Хаоса или Последний декрет Ильича — 2 Автор: Василий ЩепетневКомпьютер в школе: панацея или плацебо? Автор: Сергей ВильяновNexus One — андроидный провал Автор: Фадеев МихаилWindows Mobile в шкуре Google Android Автор: Андрей КрупинОт 430 до 500 Вт: блоки питания на любой случай, часть 1 Автор: Константин ИвановМедиацентр Boxee: первый социальный Автор: Андрей КрупинГолубятня: Сидр № 1 Автор: Сергей ГолубицкийGoogle в КНР: взгляд с другой стороны Авторы: Алексей Стародымов, Марина ПелепецПочему чаевые не спасут онлайн Автор: Иван КошуриновСервисы деактивации троянов-вымогателей Автор: Андрей КрупинЛестница для предпринимателей Автор: Сергей ЕреминКивино гнездо: Сюжет из «Плейбоя» Автор: БЕРД КИВИВасилий Щепетнёв: Последний декрет Ильича Автор: Василий ЩепетневО судьбах Symbian Автор: Алексей СтародымовPackard Bell Easynote TJ65 — хорошо сбалансированный ноутбук Автор: Игорь ОсколковОнлайновые альтернативы Microsoft PowerPoint Автор: Андрей КрупинPanasonic Lumix DMC-TZ7: ультра-ZOOMО возможности предсказания будущего Автор: Ваннах МихаилЗарядись от солнца Автор: Константин ИвановDefenseWall Personal Firewall: очное знакомство Автор: Андрей КрупинЗа что могут посадить компьютерщика? Автор: Майор МышкинИ для VAS, и для нас Автор: Сергей ВильяновНовинки CES 2010. Избранное Автор: Алексей СтародымовГолубятня: Золотой ключик Автор: Сергей Голубицкий

Журнал «Компьютерра» , Коллектив Авторов , Компьютерра Журнал

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT