Что вы думаете о предмете?
Метапрограммирование чаще всего ассоциируется с нединамическими языками, так как труднее достичь определенного поведения (например, реализовать ORM) без большого количества непродуктивных и неинтеллектуальных строк кода.
Но даже в более динамичных языках, таких как PHP, генерация кода может быть действительно спасительной для жизни и значительно увеличить производительность. В современных средах очень часто встречаются леса, которые генерируют большинство общих моделей, форм, тестов и действий для определенного бизнес-объекта, который вы объявляете. Это одна из причин того, что фреймворки, такие как symfony или RoR, имеют такой большой успех, эти инструменты генерации кода очень быстро создают согласованный код и повышают производительность труда программистов.
На веб-сайтах большая часть взаимодействия вращается вокруг четырех основных действий:
- Создать элемент
- Получить набор элементов (с возможной фильтрацией)
- Обновить элемент новыми атрибутами
- Удалить набор элементов
По крайней мере все, что вращается вокруг этих 4 основных действий, может и ИМХО ДОЛЖНО быть достигнуто с помощью инструментов генерации кода для достижения максимальной производительности.
В моей компании мы используем symfony, а его администратор-генератор является исключительным инструментом, который даже генерирует код во время выполнения (и кэширует его), что означает, что нам даже не нужно использовать какие-либо задачи или внешние инструменты для генерировать новый код, нам просто нужно очистить наш кеш. Я настоятельно советую использовать этот вид инструмента для операций CRUD.
Но делать то, что сделали удивительные участники Symfony, задача не из легких. Я сам реализовал некоторые задачи генерации кода, и сделать что-то действительно последовательное и с широкой реализацией, охватывающей большинство угловых случаев, нелегко.
Это то, что действительно увеличит вашу производительность?
Я считаю, что метапрограммирование очень и очень важно на низших уровнях работы (фреймворки, кэширование, компиляторы и т. Д.), Но к этому мы должны подходить с особой осторожностью, если мы делаем что-то на бизнес-уровне.
Использование генерации кода, без сомнения, является основным фактором повышения производительности. Реализация ваших собственных инструментов генерации кода, не так много, если вы сами не создаете фреймворк.
Какие хорошие ресурсы по этой теме, среди книг, блогов, слайд-шоу и т. Д.?
Лучший ресурс для понимания программирования - это всегда хороший и хорошо прокомментированный исходный код. Я бы сказал, что изучать генераторы администраторов RubyOnRails и Symfony - хорошая идея.