Здравствуйте, smeeld, Вы писали:
S>Я то как раз за, если случается писать на С++ то ухожу в шаблоны сразу, без них код на С++ нелаконичен и убог, откровенно говоря. В треде упоминались те, кто против, кто желает писать на C++ как на Си, так как писать на С++ без шаблонов-это и означает писать на Си. Кстати, многие из противников в треде уже отметились, почитайте их доводы против параметризации и обобщений, типа это выпендрёшь м нечитабельно.
Подобное со стороны любителей Джавы можно услышать. Мол, почему вы вместо того, чтобы делом заниматься, пишете адаптеры абстрактных фабрик для декорации билдеров стратегий? А они тебе: да ты просто не осилил, так получается всё гибко и идиоматично.
Есть такой мужик, Erin Catto. Он создал самый популярный в мире движок 2D-физики. На С++. Чтобы создать качественную симуляцию, надо разбираться в том, как организовать детект коллизий, солвер контактов и констрейнтов, вычислительно устойчивую интеграцию, etc. Можно ли его назвать неквалифицированным программистом? А между тем там не то что шаблонов, там даже RAII толком нет, голый Си с классами и прости господи сырыми указателями, плюс-минус использование std::vector'а какого-нибудь. Зато движок легко читать и понимать, и можно не приходя в сознание портировать на любой JavaScript.
Вот, что автор пишет
по этому поводу:
Why don't you use this awesome C++ feature?
Box2D is designed to be portable, so I try to keep the C++ usage simple. Also, I don't use the STL (except sort) or other libraries to keep the dependencies low. I keep template usage low and don't use name spaces. Remember, just because a C++ feature exists, that doesn't mean you need to use it.
The many ports of Box2D to other languages platforms shows that this strategy has been successful.
Писать с шаблонами любой горазд; я когда на C++ программировал, любил это делать. Но положа руку на сердце: если надо быстро въехать в кодобазу, гораздо приятнее, если там логика написана на if'ах, а не на std::enable_if'ах.