BT

プログラミング言語Colmの紹介

| 作者: Jean-Jacques Dubray フォローする 3 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2011年6月2日. 推定読書時間: 2 分 |

原文(投稿日:2011/05/26)へのリンク

プログラミング言語が再び盛んに研究の対象になっている。今回は言語の意味論に注目が集まっている。

プログラムは意味を持つ構造物です。構造があるのでプログラムは変換ができます。意味があるのでプログラム同士を比較して変換の有効性を判断できます。意味にはプログラムの外延的な振る舞いと内包的な振る舞いが含まれます。

プログラム変換は新しい研究の成果でもある。既に商用の製品も発表されている

プログラム変換はひとつのプログラムをもうひとつのプログラムに変えます。このプログラム変換という言葉はプログラム変換を実装したアルゴリズムの形式的記述のことも指します。変換されるプログラムをソース言語、変換結果をターゲット言語と言います。

Adrian Thurston氏は Colm (COmputer Language Manipulation)という言語を初めて発表した。 氏ははクイーンズ大学の博士課程で開発した。氏曰く、

変換言語は形式言語に基づいた型システムを持っています。クラスやデータ構造を定義するのではなく、文法を定義するのです。パーサーは文法から自動で生成されます。パーサーの目的はふたつです。入力された言語を解析することと分析を行うプログラムの構造パターンを解析します。文法に基づいた構文解析は重要です。入力と構造パターンが同じ型からツリーへと解析されることを保証するからです。これによって比較が可能になります。

Colmはこの解析の手法を改善する。

Colmの解析エンジンは汎用的で、解析中に利用できる任意のグローバルデータ構造が構築できます。他の汎用的な方法では、グローバルデータ構造を構築するのは細心の注意が必要です。構文解析固有の並列性があるからです。したがって、この方法は使われず、問題は解析後の解析フォレストの曖昧さの排除に持ち越されます。
Colmを使えば、バックトラック法が利用できるなら、最初に入力した段階で正しい解析木を生成できます。グローバルデータの並列更新可否の判断をしなくて済みます。また、間違っている解析木を排除するためだけにあり得る解析木を生成する必要もありません。

言語ワークベンチの開発とColmのような強力な変換技術のおかげでメタプログラミング(または、メタモデル指向プログラミング)はずいぶん進歩した。あなたは既に利用しているだろうか。どうお考えだろうか。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT