DSL (Domain Specific Languages) — языки, специфичные для решения задач какой-либо предметной области (в противовес языкам общего назначения типа Java или C#). Существует три основных типа DSL:
внутренний DSL (internal DSL);
внешний DSL (external DSL) — это DSL, который написан на языке, отличающемся от основного языка программного приложения;
интегрированная среда разработки DSL (Language Workbench).
На мастер-классе я с помощью языка программирования Ruby создам простой DSL на примере простого генератора XML.
Тема близка к метапрограммированию и будет полезна тем, кто уже немного начал изучать Ruby. По сути во время мастер-класса будет написан генератор, который позволит превратить в XML следующий сниппет:Xml.generate(version: '1.1', encoding: 'UTF-8') do library { artist(name: 'Gorillaz') { song(title: 'Feel Good inc.', year: 2005) song { 'Clint Eastwood' } } artist(name: 'Depeche Mode') { song(title: 'Enjoy the Silence', year: 1990) } } end
Что это даст?
Вы более глубоко узнаете и поймёте этот язык.
Вы увидите магию, которая попросту отсутствует в других языках.
Вы узнаете некоторые приёмы метапрограммирования с помощью Ruby и то, как их применять для создания DSL.