コンセプトプログラミングはHewlett Packard(HP)社でChristophe de Dinechin氏が2000年に始めたプライベートプロジェクトであり、
ソフトウェアがどのように着想され、また作られたのかに関する新たな見解を提供することによって、ソフトウェア内の複雑性を対処する方法の一つである。
コンセプトプログラミングはたくさんの方法でドメイン使用言語と同じ問題を解消している。しかしながらそのアプローチは異なったものである。ある特定のプログラミング言語を使用するよりもむしろ、Christophe氏は通常のプログラミング言語であるXL(source)を作成している。その理由はRegDeveloperの記事(source)に記載されていて彼は下記のように述べている。
既存のノーテーションの制限はそれらにエレガントな拡張機能を付加する方法を見つけるのが困難だったことである。Lispとその派生物のような言語を拡張することはできるのだが、問題はその拡張機能のあなたのしたいように見せるというところである 。
更に、その記事は下記のように続いている。
XLの興味深い側面の一つはフィックスされたキーワードがないところである-Dinechin氏が説明するところによると、"shape"は、”XLはキー ワードを使用していません-何でもパースできる単一のシンタックスのみです。その外観は標準的ですが、それは大変少数のパースツリーに依存していてキーワー ドの代わりにパースツリーの形に基づいているのです。これはあなたがそれで遊ぶことができて、またそれにものを付加して実験することができるという意味なのです。”hristophe de Dinechin氏のプレゼンテーション(PDF・英語)において、自身はシンプルな問題でさえも今日のプログラミング言語においては実装するのが困難であることを述べている。
下記の要素間に隙間が存在している。
- あなたの頭の中にあるコンセプト
- コード内のコンセプト表示
コンセプトプログラミングはこのギャップが一番重要なのである
そして彼はコンセプトプログラミング下記のように進展すると続けている。
コードをそのコンセプトのように”見せろ”
- 構造、ビヘイビア、ローカル性における類似点
- 驚き最小の法則
そのコンセプトと一緒にChristophe氏は擬似メトリックを定義した。これらは大変主観的で簡単には測定できないけれど情報をコミュニケートする方法を提供する。彼は擬似メトリックを下記のように概説している。
シンタクティックノイズ
- 問題スペースにマップしないフォーム
セマンティックノイズ
- 問題スペースにマップしないことを意味している
バンド幅
- 問題スペースがどのくらいの範囲でカバーされているのか?
シグナル・ノイズ率
- 実際にどれくらいのコードが問題を処理しているのか?
XLとコンセプトプログラミング、XLプロジェクトの更なる詳細は下記のリンクにて参照して欲しい。
原文はこちらです:http://www.infoq.com/news/2008/01/concept-programming