Как стать автором
Обновить

Где используется кодогенерация

Время на прочтение3 мин
Количество просмотров10K
Меня поразило то, что так много людей в комментариях к предыдущей статье высказывают мнение о том, что кодогенерация — это неправильная техника. Давайте посмотрим на некоторые примеры того, как она используется сейчас.

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 является средой для разработки собственных шаблонов.

Это те примеры, которые вспомнились в первую очередь. Вы сами можете дополнить список.
Теги:
Хабы:
Всего голосов 24: ↑20 и ↓4+16
Комментарии47

Публикации