InfoQ

News

コンセプトプログラミング

作者 Ian Roughley, 翻訳者 編集部 投稿日 2008年1月31日 午前6時39分

コミュニティ
Architecture
トピック
モデリング,
Domain Specific Languages
タグ
言語

コンセプトプログラミングは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://xlr.sourceforge.net

原文はこちらです:http://www.infoq.com/news/2008/01/concept-programming

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

ファイルシステムでHello World

この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。

Guice(ジュース)を早飲みしすぎていませんか?

あなたのチームが、既存アプリケーションを「シングルトンの入れ子」設計から依存性注入(DI)へ移行しようとしているなら、この論文に心引かれるでしょうが、DIへの移行は難しいことが分かっています。論文にはGoogleのJava DIコンテナ(Guice)の名を入れていますが、Javaや.NET、Python、Rubyなどにも当てはまります。

チームがキュービクルと引き換えにコミュニケーションスキルを得る手助けをせよ

アジャイルの「自己組織化チーム」のパラダイムでは、チームのメンバに新しいスキルが要求されます。この記事では、発展しつつあるチームの自己組織化を壊さずに、新たなスキルを伝えるためのいくつかの戦略を提案します。そして、新しいスキルを身につけるのに役立つ資料のありかを提示しています。

F#の土台を越えて - 非同期ワークフロー

今回の記事では、非同期ワークフローと呼ばれるワークフロー機能の面白い使用法を考察しますが、非同期ワークフローは.NETの非同期プログラミングモデルを単純化することを目的としています。

言語としてのアーキテクチャ: ストーリー

アーキテクチャは一般に、Word文書に主として見られるような極めて実体のない、ソフトウェアシステムの概念的な側面であるか、または完全に技術によって駆動されるものかのいずれかです。そのどちらも間違っています。では、どう対処すればよいでしょうか? この記事ではアイデアを説明します、そしてアプローチのキーポイントを要約します。

メタプログラミングを使ってRubyにプロパティを追加する

Werner Schuster氏が、簡単な例を示しながら、Javaのようなプロパティをメタプログラミングを使ってRubyに追加する方法を示します。

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。