Вы уже получили пару ответов, в которых упоминается безопасность типов, и что - это веская причина, но она определенно не единственная. Большая проблема с использованием сценариев для генерации кода заключается в том, что он трудно распространяется по всему циклу сборки и всем программистам, использующим его. То есть, даже имея работающий скрипт, программист , использующий скрипт, должен разумно знать о его существовании. Цикл сборки должен быть написан так, чтобы быть в курсе сценария, и отладка с помощью сгенерированного сценарием кода также имеет тенденцию быть относительно сложной, поскольку вы отлаживаете код, который ни вы, ни кто-либо другой на самом деле не написали. Сгенерированный скриптом код редко пишется так, как обычный человек написал бы то же самое, что затрудняет его отладку вдвойне.
Метапрограммирование имеет тенденцию концентрировать трудности - но даже если это может быть трудно писать, с использованием обычно довольно просто. Что касается отладки, то это зависит от того, можно ли написать код шаблона , чтобы статически проверять его аргументы во время компиляции и (по крайней мере, пытаться) создавать значимые сообщения об ошибках, если / если он используется неправильно. Конечно, некоторые этого не делают, подобно тому, как некоторые функции принимают свои входные данные и пытаются использовать их, не проверяя, что введенные входные данные соответствуют его требованиям.
В то же время, когда код шаблона написан, его использование обычно вполне прямолинейно. Фактически, поскольку шаблоны обычно должны быть в заголовках, сложное метапрограммирование, как правило, является наиболее простым кодом для включения в конечный продукт. Обычно все, что вам нужно сделать, это включить правильный заголовок; вам даже не нужно указывать библиотеку для компоновщика.
Это имеет тенденцию лучше соответствовать реальному распределению талантов среди программистов. * немногие программисты значительно лучше остальных. С TMP у вас гораздо больше шансов позволить нескольким действительно превосходным программистам написать сложный код TMP и значительно упростить жизнь всем средним программистам. С генерацией скриптового кода вы, как правило, ожидаете, что у всех участников будет примерно одинаковый уровень таланта. Использование сценария, написание другого кода, который интегрируется с кодом, сгенерированным сценарием, и т. Д., Примерно одинаково трудны, поэтому вам, как правило, нужно, чтобы ваши программисты были достаточно хорошими, и не могли делать почти так же, как они. много, чтобы использовать несколько хороших программистов, чтобы облегчить жизнь всем остальным.