На самом деле нет четкого различия между «генератором кода» и «языком программирования». Если вы используете программное обеспечение для генерации кода, вы занимаетесь программированием, даже если вы не понимаете деталей. C ++, Java и C # являются «генераторами кода» в том смысле, что они компилируются в языки более низкого уровня, и сами эти языки более низкого уровня можно кодировать вручную, если программист решит это сделать. Многие языки программирования начинаются как макро инструменты, и написание скрипта с использованием инструмента на основе XML не делает его менее «программным», чем если бы тот же скрипт был написан на Perl, Python или Ruby.
Вообще говоря, экономия времени за счет использования программного обеспечения для генерации повторяющегося кода - хорошая идея. Потенциальным недостатком является то, что вы можете заблокировать себя на платформе - то есть вы ограничены функциональностью, которую предоставляет генератор кода. Стоит ли полностью использовать генератор кода (или язык программирования), зависит от того, насколько он эффективен для данной проблемы.
Не поддавайтесь ментальной ловушке, думая, что некоторые форматы, такие как XML или даже HTML, являются мертвыми «данными», а другие форматы, такие как C ++ и Python, являются «кодом». Данные и код являются взаимозаменяемыми. Нужен пример «кода» в HTML? Учтите следующее:
HTML является декларативным языком. В нем вы указываете вещи, которые существуют, в виде «здесь параграф, здесь заголовок» и так далее. Python и другие языки программирования имеют обязательные части, в которых вы указываете «теперь добавьте x и y, теперь напишите x в память» и т. Д.
Однако вы можете изменить это отношение. В случае HTML это становится обязательным при подаче через браузер. «Вот абзац с этими свойствами» интерпретируется Firefox как «теперь отображать текст с этими параметрами». Как файл, HTML - это просто мертвые данные, но в контексте интерпретатора он становится живым кодом. То же самое происходит в обратном порядке с Python. Во время выполнения ваши инструкции Python становятся директивами для интерпретатора, но сам файл Python является просто мертвым текстом. В некотором смысле ваша Python-программа находится там как набор потенциальных инструкций в форме данных, пока вы не запустите ее через интерпретатор Python. Точно так же и HTML хранится в виде данных в файле, пока браузеру не придет время действовать над ним.
XML - это формат данных, но инструкции - это тип данных. Вы можете использовать XML, чтобы содержать императивные операторы, такие как математические операции или вызовы функций. Интерпретируете ли вы этот XML как данные или код, полностью зависит от контекста; В каком-то смысле все компьютерные данные являются одновременно данными и кодом. Различие между данными и кодом является человеческим соглашением, а не реальностью, присущей компьютеру.
Редактировать : Полагаю, здесь следует признать, что на уровне архитектуры процессора часто существует очень конкретное различие между кодом и данными. Код - это то, что подается через ядро процессора и меняет состояние машины. Типичная архитектура хранит биты, ожидающие выполнения, в отдельной области памяти от других данных, которые не представляют исполняемый код. Но это различие быстро стирается, когда вы начинаете говорить о переводчиках.