マクロ言語は、プログラムの実行時にプログラムを生成するメタプログラミングの一形態です。マクロ言語は、コンパイラやインタプリタを使用せずにプログラムのコードを変換することができます。これは、マクロを使用してコードの一部を別のコードに置換することによって実現されます。

マクロ言語は、通常、テキスト処理の自動化や、コンピューターゲームなどのリアルタイムアプリケーション開発、さらには大規模なソフトウェア開発プロジェクトにおける高度なテンプレート処理に使用されます。また、コード生成に必要な再帰的な構造の生成など、高度なプログラミング処理を自動化することができます。

マクロ言語の一般的な例としては、C言語のプリプロセッサマクロが挙げられます。プリプロセッサマクロは、C言語のコンパイル前に実行され、コード内の特定の文字列を別の文字列に置換することができます。これにより、コード内の重複したコードや、定数の定義などを自動化することができます。また、マクロ言語は、LispやSchemeなどの関数型プログラミング言語でも使用されています。これらの言語では、マクロを使用して、コードを生成するための独自の方法を提供しています。