自動プログラミング
[Wikipedia|▼Menu]

自動プログラミング(じどうプログラミング、: Automatic programming)は、人間のプログラマがコードを書くのではなく、何らかの機構によってプログラムを生成するプログラミングの一種である[1]。時代はすでに変わっており[2]、人工知能の専門家は、現時点で自動プログラミングを使えないプログラマーは、使えるプログラマーに取って代わられる可能性が高いと警告している[3]
概要

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

自動プログラミングはコンピュータプログラムの歴史と共にある。より高いプログラミング効率を求めて、より高水準の自動化が長い間推し進められている。

現在のところ、人の指示なしにプログラムを自動生成する技術は実用化されていない。すなわち現在の自動プログラミングは全自動プログラム生成ではなく、抽象度の高いソースコードを基にしたコード生成・変換および記述の省力化と同義である。

以下は自動プログラミングの例である。

紙テープへのコードパンチング自動化(現代でいうタイピングが当時のパンチング。両方ともコードを「打ち込む」)

コード変換

プログラミング言語から機械語へのコンパイル自動化(c.f. ハンドアセンブル。詳しくはアセンブリ言語

プログラミング言語から中間言語(中間表現)へのコンパイル自動化(例:JavaJavaバイトコードC#CIL

プログラミング言語からプログラミング言語へのコンパイル自動化

より高水準な言語からのコンパイル(TypeScriptJavaScript ES6→JavaScript ES5)



ソースコード生成

スキーマ定義言語で書かれたスキーマからプログラミング言語で書かれたclientコードの生成

スキーマ定義言語で書かれたスキーマからプログラミング言語で書かれたserverスタブの生成

スキーマ定義言語で書かれたスキーマからDSLで書かれたバックエンドプロビジョニングコード (Infrastructure as Code) の生成、それによるプロビジョニング

テンプレートと変数セットからのコード生成(テンプレートエンジン)


生成的プログラミング

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

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

Microsoft Visual Studio などの IDE はさらに進んだソースコード生成を行う。プログラマは、ソースコードの「スニペット(snippet、断片)」と呼ばれるものを対話的に選択しカスタマイズできる。プログラム「ウィザード」もソースコード生成の典型的な形態であり、プログラマは対話的にグラフィカルユーザインタフェースを設計し、その結果を自動的に反映したソースコードが生成される。Windows Formsではフォームデザイナーを使って視覚的にGUI部品を配置したり、プロパティを設定したりすると、対応するC#やVB.NETによるプログラムコードが自動生成される。

3次元コンピュータグラフィックスの統合ソフトウェアやグラフィックスエンジンの中には、直感的な操作によって各種視覚効果のノードをつなぎ組み合わせることで、リアルタイムまたは非リアルタイムのシェーダープログラムを自動生成する、「ノードエディター」と呼ばれるオーサリングツールを備えているものもある。
実装例

NConstruct - .NET Framework 環境での開発ツール。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:20 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef