「コード ジェネレーター」と「プログラミング言語」の間に明確な区別はありません。ソフトウェアを使用してコードを生成する場合は、詳細を理解していなくてもプログラミングを行っています。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 をデータとして解釈するかコードとして解釈するかは、コンテキストに完全に依存します。ある意味では、すべてのコンピューター データはデータであると同時にコードでもあります。データとコードの区別は人間の慣習であり、コンピューター固有の現実ではありません。
編集: ここでは、プロセッサ アーキテクチャ レベルでは、コードとデータの間に非常に具体的な区別があることが多いことを認めるべきだと思います。コードは、プロセッサ コアを介して供給され、マシンの状態を変更するものです。一般的なアーキテクチャでは、実行を待機しているビットを、実行可能コードを表さない他のデータとは別のメモリ領域に保持します。しかし、通訳について話し始めると、この区別はすぐに曖昧になります。