Меня поразило то, что так много людей в комментариях к предыдущей статье высказывают мнение о том, что кодогенерация — это неправильная техника. Давайте посмотрим на некоторые примеры того, как она используется сейчас.
Кодогенерация активно используется в интернете. В данный момент стандартом предоставления информации для Web-сайтов является HTML. Но раскладывая статические HTML-страницы на сайте мы не получим динамический сайт, отвечающий современным требованиям, поэтому разработчики сайтов пишут программное обеспечение (движки сайтов), цель которых состояит в генерации HTML кода для браузера пользователя. Примеры систем, помогающих программистам в этом нелегком деле: PHP, Perl, ASP.NET, Java, RubyOnRails и т.д.
Более того, не только серверные технологии генерируют HTML код, но и клиентские скрипты (в частности JavaScript) часто занимаются тем же самым.
Начиная с Microsoft Visual Basic пошли визуальные редакторы Windows-форм. Стоило перенести на форму кнопку и заботливый генератор запишет в специальном файле ее свойства и местоположение. Сначала генерировался код на специальных языках разметки (Visual Basic, Delphi), но потом стали генерировать формы на том же языке, на котором пишет программист. Позже этот же подход стал применяться и в программировании Web-приложений. Сейчас сложно представить серьезную среду программирования без визуальных редакторов, которые и являются кодогенераторами.
Такие платформы как Java и .NET генерируют низкоуровневый код на основе высокоуровневого. В .NET эта техника активно используется для многоязычности. Много языков высокого уровня генерируются в один язык низкого уровня, что несомненно является удобным. К тому же сейчас в WWW чем-то похожая ситуация: много разных языков генерируют HTML. И результаты подобны: кроссплатформенность.
В последнее время очень большую популярность приобрели MVC (Model-View-Controller) фреймворки. Неотъемлимыми компонентами этих фреймворков являются скрипты-кодогенераторы. Одни скрипты генерируют Модели на основе БД, другие генерируют Контроллеры и Виды на основе Моделей и т.п. Без кодогенерации работа в таких фреймворках была бы довольно рутинной. Примеры MVC фреймворков: RubyOnRails, CakePHP.
В C# версии 3 появился LINQ (Language Integrated Query). Это довольно удобное дополнение к C#, которое избавляет программиста от массы рутинной работы. В общем подходе (LinqToObject) используется генерация анонимных методов и классов, а в подходе LinqToSql используется генерация SQL кода для Microsoft SQL Server. Готовится реализация LINQ для Oracle и многих других источников данных. Идея отличная — из одного высокоуровневого языка генерируются реализации под конкретные типы данных.
Приведу простой пример использования:
CodeSmith — это профессиональный кодогенератор на основе шаблонов. Результат работы не привязан к какому-то определенному языку программирования. Так, например, в дистрибутив включены шаблоны для генерации кода на C#. VB.NET и T-SQL. Программа состоит из двух частей: бесплатный Code Smith Explorer и платная Code Smith Studio. С помощью Explorer выполняется генерация кода, а Studio является средой для разработки собственных шаблонов.
Это те примеры, которые вспомнились в первую очередь. Вы сами можете дополнить список.
World Wide Web
Кодогенерация активно используется в интернете. В данный момент стандартом предоставления информации для Web-сайтов является HTML. Но раскладывая статические HTML-страницы на сайте мы не получим динамический сайт, отвечающий современным требованиям, поэтому разработчики сайтов пишут программное обеспечение (движки сайтов), цель которых состояит в генерации HTML кода для браузера пользователя. Примеры систем, помогающих программистам в этом нелегком деле: PHP, Perl, ASP.NET, Java, RubyOnRails и т.д.
Более того, не только серверные технологии генерируют HTML код, но и клиентские скрипты (в частности JavaScript) часто занимаются тем же самым.
Визуальные редакторы в средах разработки
Начиная с Microsoft Visual Basic пошли визуальные редакторы Windows-форм. Стоило перенести на форму кнопку и заботливый генератор запишет в специальном файле ее свойства и местоположение. Сначала генерировался код на специальных языках разметки (Visual Basic, Delphi), но потом стали генерировать формы на том же языке, на котором пишет программист. Позже этот же подход стал применяться и в программировании Web-приложений. Сейчас сложно представить серьезную среду программирования без визуальных редакторов, которые и являются кодогенераторами.
Java, .NET и подобные платформы
Такие платформы как Java и .NET генерируют низкоуровневый код на основе высокоуровневого. В .NET эта техника активно используется для многоязычности. Много языков высокого уровня генерируются в один язык низкого уровня, что несомненно является удобным. К тому же сейчас в WWW чем-то похожая ситуация: много разных языков генерируют HTML. И результаты подобны: кроссплатформенность.
MVC фреймворки
В последнее время очень большую популярность приобрели MVC (Model-View-Controller) фреймворки. Неотъемлимыми компонентами этих фреймворков являются скрипты-кодогенераторы. Одни скрипты генерируют Модели на основе БД, другие генерируют Контроллеры и Виды на основе Моделей и т.п. Без кодогенерации работа в таких фреймворках была бы довольно рутинной. Примеры MVC фреймворков: RubyOnRails, CakePHP.
LINQ
В C# версии 3 появился LINQ (Language Integrated Query). Это довольно удобное дополнение к C#, которое избавляет программиста от массы рутинной работы. В общем подходе (LinqToObject) используется генерация анонимных методов и классов, а в подходе LinqToSql используется генерация SQL кода для Microsoft SQL Server. Готовится реализация LINQ для Oracle и многих других источников данных. Идея отличная — из одного высокоуровневого языка генерируются реализации под конкретные типы данных.
Приведу простой пример использования:
var onlineUsers = from user in DB.Users where user.LastActivity > DateTime.Now.AddMinutes(-5) orderby user.LastActivity descending select user;
CodeSmith
CodeSmith — это профессиональный кодогенератор на основе шаблонов. Результат работы не привязан к какому-то определенному языку программирования. Так, например, в дистрибутив включены шаблоны для генерации кода на C#. VB.NET и T-SQL. Программа состоит из двух частей: бесплатный Code Smith Explorer и платная Code Smith Studio. С помощью Explorer выполняется генерация кода, а Studio является средой для разработки собственных шаблонов.
Это те примеры, которые вспомнились в первую очередь. Вы сами можете дополнить список.