понедельник, 1 декабря 2008 г.
Шаблоны и библиотеки
В продолжении темы про кодогенерацию опять нахлынуло на меня несколько мыслей по этому поводу. Многие говорят: "Шаблоны, шаблоны! Generic programming! Создание компонент для настоящего повторного использования". Но как всё обстоит на самом деле? Любой шаблонный класс или шаблонная библиотека скорее всего представляют собой инструмент кодогенерации, а сам механизм шаблонов средство генерации средств кодогенерации :) Т.е. да, у шаблонов и препроцессора много общего. Использовать библиотеки на шаблонах зачастую значит копипастить и плодить код, пусть и потенциально более оптимальный. Конечно важно иметь такую возможность, особенно работая с кодом у которого высокие требования к производительности, но ведь шаблоны сплошь и рядом. То, что можно было смело засунуть в shared object, пихается в header'ы теперь. Понимаю на системах, где даже libc принято линковать статически (да да, я о Windows), там такие штуки никого не удивляют. Но там же и не удивляет никого очередной продукт софтостроения на пару гигабайт весом. А я считаю компоненты предназначенные для повторного использования и должны иметь вид отдельных shared object'ов. По крайней мере надо понимать и однозначно разграничивать, что является Библиотекой с большой буквы, а что является инструментом кодогенерации. А ещё более важно знать на столько ли нужен супер оптимальный код, подстроеный под конкретный тип или может быть по настоящему generic версия в библиотеке сгодится вполне. И ведь вроде так просто называть вещи своими именами. Не все почему-то это делают.
Подписаться на:
Комментарии к сообщению (Atom)
1 комментарий:
Спасибо тебе, ты даёшь мне много идей о построении моей будущей ОС. Пиши ещё :)
Отправить комментарий