自動プログラミング

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

自動プログラミング(じどうプログラミング、: Automatic programming)は、人間のプログラマがコードを書くのではなく、何らかの機構によってプログラムを生成するプログラミングの一種である[1]

概要[編集]

自動プログラミングという用語に関しては、これまでその意味が様々に変化してきたため、定義について明確な合意が得られているとは言い難い。デイビッド・パーナスは公開されている研究成果から「自動プログラミング」の歴史を調査し、1940年代にはそれが紙テープのパンチ処理を自動化することを意味していたとしている。その後、FORTRANALGOLといった高水準言語で書かれたプログラムの変換を指すようになった。実際、初期のコンパイラには Autocode と名づけられたものがあった。パーナスは「自動プログラミングとは、いつの時代もその当時のプログラマが使える言語よりも高水準の言語でプログラミングすることを意味する婉曲表現だった」と結論付けた[2]

生成的プログラミング(Generative programming)とは、ジェネリッククラスプロトタイプベーステンプレートアスペクトコード生成などの技法を使ってソースコード作成を自動化し、プログラマの生産性を向上させるプログラミングのスタイルである。ソフトウェアコンポーネントなどのコード再利用の技法とも連携して使用される。

ソースコード生成(Source code generation)とは、テンプレートなどのオントロジー的モデルを使ってソースコードを生成することであり、テンプレートエンジン統合開発環境(IDE)などのプログラミングツールを使って行われる。これらのツールは、様々なソースコード生成手段を提供する。ソースコード生成器の単純な例としてマクロプロセッサ(例えば、C言語のプリプロセッサ)があり、ソースコード上のパターンを比較的単純な規則に従って置換する。

Microsoft Visual Studio などの IDE はさらに進んだソースコード生成を行う。プログラマは、ソースコードの「スニペット(snippet、断片)」と呼ばれるものを対話的に選択しカスタマイズできる。プログラム「ウィザード」もソースコード生成の典型的な形態であり、プログラマは対話的にグラフィカルユーザインタフェースを設計し、その結果を自動的に反映したソースコードが生成される。

実装例[編集]

  • NConstruct - .NET Framework 環境での開発ツール。C# ソースコードを生成する。
  • MyGeneration - .NET Framework 向けソースコード生成器。ORMアーキテクチャ向けのコードを生成する。データベースのメタデータを MyMeta API を使ってテンプレート化する。

関連項目[編集]

脚注[編集]

  1. ^ Ricardo Aler Mur, "Automatic Inductive Programming", ICML 2006 Tutorial. June 2006.
  2. ^ D. L. Parnas. "Software Aspects of Strategic Defense Systems." American Scientist. November 1985.

参考文献[編集]

  • Generative Programming: Methods, Tools, and Applications by Krzysztof Czarnecki and Ulrich W. Eisenecker, Addison Wesley, 2000.

外部リンク[編集]