Wednesday, April 23, 2008

Построение DSL в Boo

rahien_cover150 Книжку с таким названием я сегодня прикупил. Для тех кто не знает DSL это Domain Specific Language или по русски язык специфический для определенной деятельности. Например есть языки для чатов: "пиши исчо кросавчег". Есть языки на котором разговаривают правильные пацаны, светские львицы а также пьяные матросы. Даже у программиста свой язык от которого его жене хочется зевать и порой - удавиться. DSL это тоже самое но для компьютерных программ. Например как будет выглядеть получение даты через две недели на популярных языках программирования:

С

time() * 1209600;

С#

DateTime.Now.AddDays(14);

Согласитесь что второй вариант читается легче чем первый хотя и он не идеал. Идеал был бы что то вроде: 2.weeks и в этом DSL и является специалистом. Язык написанный для решения спецефической задачи. Я сейчас как раз работаю на проэкте для Xlinesoft который использует целых два DSL. Один язык это макро язык шаблонов который используются для герерации кода или динамической части для вэб приложений который обращается к базе данных и занимается другой логикой в программе и второй smarty для постороения визуальной части тех же самых приложений. Контролов, таблиц и тд. Так что идея использования DSL далеко не нова. Однако писать с нуля компилятор для своей узкой ниши не всегда оправдывало себя пока не появились языки как Ruby или Boo. Boo позволяет обяснять компилятору как компилировать программу определять как должны компилироваться if, foreach и так далее. И все это делается элегантно без залезания в кишки самого компилятора. Я только начал читать и расскажу больше когда прочитаю.

3 comments:

Anonymous said...

Приветствую! С наступающим НГ! Ну и как книжка? Она в электронном виде? ;)

Vlad said...

Привет! С Наступающим! Книжка хороша, пока еще в электронном виде так как она еще не закончена. Скоро выйдет в бумажном

Anonymous said...

Слушай, если не трудно, можешь выслать на yafos_at_yandex.ru. Надеюсь просьба не выглядит наглостью ;)