вторник, 8 июля 2008 г.

Статьи о метапрограммировании ...

Вчера сохранил ссылки на цикл из трех статей по метапрограммированию

Искусство метапрограммирования, Часть 1: Введение в метапрограммирование
Искусство метапрограммирования, Часть 2: Метапрограммирование с использованием Scheme
Искусство метапрограммирования: Часть 3. Корпоративное метапрограммирование

Выдалось немного времени и просмотрел краем глаза

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

... если у вас есть большое приложение, в котором множество функций включает длинный стереотипный код, вы можете создать мини-язык, который будет создавать стереотипный код вместо вас и даст вам возможность кодировать только важные части программы. Здесь, если вы сможете, лучше всего абстрагировать стереотипные фрагменты в функцию. Но часто эти фрагменты не столь приятны. Возможно есть список переменных, которые нужно объявить в каждом экземпляре, возможно есть необходимость зарегистрировать обработчики ошибок, возможно существует несколько стереотипных фрагментов, которые должны включать код в определенных обстоятельствах. Все это делает создание простой функции невозможным. Часто в таких ситуациях хорошей идеей является создание мини-языка, что позволит вам работать с таким кодом более простым способом. Этот мини-язык затем конвертируется в исходный код на обычном языке программирования перед компиляцией.

... Мы определили проблемы, которые лучше всего решаются при помощи генерирующих код программ, включая:
  • Программы, нуждающиеся в предварительно сгенерированных таблицах данных
  • Программы, имеющие много стереотипного кода, который нельзя абстрагировать в функции
  • Программы, использующие технологии, которые слишком многословно выражаются на языке программы
По двум первым абзацам можно сказать: "Так это же БублеГум AOP!". По второй части, что Sheme очень похож на Lisp.

А вот третья часть все-таки немного заинтересовала. Заинтересовала тем, что там представлена генерация объектов БД и объектов программы на основе диаграмм, полученных из программы Dia.

PS

Да как-то давно смотрел книжку Сode Generation in Аction может кто найдет там чего интересного по теме. И в ресурсах к статьям рекомендуют посмотреть на AndroMDA.

PS2

Лазая по AndroMDA нашел там и бизнес-процессы bpm4struts