codegen?

12/3/08 13:52
singalen: (Default)
[personal profile] singalen
Мне стыдно у вас такое спрашивать... но я всё равно спрошу.

Зачем нужна кодогенерация?
Разве это не автоматизированный копи-пейст?
Ну, исключая случаи, выходящие за пределы возможностей инструмента: там, сериализация в C++ или сгенерировать Data Object по XML-ю.

И просьбочка: если видите что-то полезное в моём аглицком блоге про .NET, немного Java, WiX, OOP, OOD и немного всё остальное - поставьте на него ссылку, пожалуйста.

(no subject)

13/3/08 05:54 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Почему ты всё время говоришь про "дыру в платформе"? Отсутствие рефлекшена - это дыра? Отсутствие замыканий - дыра? Есть ли тогда язык без "дыр"?
Самый распростринённый вариант кодогенерации, ИМХО, макросы Коммон Лиспа (в Схеме есть свои макросы). Там они используются не только для копи-паста, хотя и для него тоже, может даже чаще для него (по сути). На эту тему есть статья "The Art of Metaprogramming". Довольно интересная.
Это не считая использования кодогенерации для всяческой оптимизации.

Кстати, где ссылку ставить?

(no subject)

13/3/08 05:55 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Вспомнил "язык без дыр" - Smalltalk: и рефлекшн есть, и замыкания. :)

(no subject)

14/3/08 04:02 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Ну, про флейм понятно, а про дыры всё ещё нет. Что ты называешь дырами?

В Лиспе главная фича - то, что списком является ВСЁ, и это всё можно модифицировать в рантайме. Правда, не знаю, использует ли эту возможность эоть кто-то в рабочем коде :). Ну, макросы примерно тем же и занимаются...

Вообще, если поискать по википедии, можно найти немало любопытного про кодогенерацию. Например то, что макросы и прочие code snippets во всяких IDE - это тоже кодогенерация. Я эту ммысль вчера недодумал. Хотя, ты наверняка скажешь, что это тот самый копи-паст. На это могу ответить: "включи воображение!" ;).

Ссылку в ЖЖ повесил - заходи посмотри. :)

(no subject)

18/3/08 03:31 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Ну, я-то макросы редакторов использую не особо творчески. В последнее время, для того, чтобы вставлять тэги XML. Кстати, если редактор поддерживает макросы с параметрами - это вообще просто сказка :).

Несколько хороших практичных примеров кодогенерации есть в "Практике программирования" Кернигана и Томпсона.

Что-то я не представляю, каким образом кодогенерацией можно заменить RTTI. Шаблоны, что ли? Я всегда считал, что их смысл несколько в другом, а вообще-то это тоже хороший пример кодогенерации. Если в Java generics сделаны принципиально по-другому, то это зря :).