このWikiは、OSDNの管理グループが運営しています。
OSDNを利用している開発者の方に、月ごとにインタビューを行っています。
デカルト言語は、論理的な推論を中心とした人工知能プログラムのためのI/Fとして設計しました。しかし、文章やデータを処理する、柔軟なスクリプトとしても役立つことでしょう。名前は有名な数学者・哲学者であるデカルトに因んで名づけています。
変な言語です。
狙っているのは、強力な論理的推論・探索機能があり、関数プログラミング機能を持つオブジェクト群が、人間に近い構文のI/Fによって動く知的なシステムです。
厳密ではないのですが、簡単に言うとデカルト言語のアイデアは、述語論理+関数+拡張バッカス記法+オブジェクト指向です。
まずは、prologのように、バックトラック機構を持った述語論理言語がベースになっています。例えば、prologのリスト処理プログラムは、構文を書き直すだけでそのまま動きます。
しかし、prologとは異なり、引数の中にさらに述語を書くことができる関数述語機能を持ちます。これは、述語の中の引数に述語を記述するとその第一引数を返り値と見做して実現しています。
また、拡張バッカスナウア記法のオア | , 省略可[], 繰り返し{}のような制御構造を拡張しています。そのため、文脈自由文法の生成規則をデカルト言語で記述すると、それが構文解析のパーサになります。
●例3:Tiny Rubyコンパイラの作成, 続Tiny Rubyコンパイラの作成(2)
さらに、オブジェクト指向プログラミングの機能を持ち、継承やポリモフィズムおよびカプセル化の機能をサポートします。
●例4:デカルト言語による論理的なA.I: 自然言語による論理, デカルト言語のプログラム:サルとバナナ
使い方のマニュアルは以下にあります。
http://sourceforge.jp/projects/descartes/wiki/Manual
デカルト言語は、誰でも簡単に使える言語は目指していません。この言語の利用者が深く理解し習熟し工夫を重ねることにより、素晴らしい結果が得られるような言語にしたいと考えています。
だから、ちょと分かり難いし、ちょっと書き難いかもしれませんが(笑)
今までのコンピュータサイエンスは、20世紀末に叫ばれたソフト開発者の不足に対応するために、開発言語や開発手法など、おまりに簡単で大勢に使えることばかりに注力してきたように思えます。しかし、現状を見ればわかるとおり、すでにコンピュータはコモディティな存在となり、そのような目的はもう達成されてしまったように感じます。人を集めてちょっと教育して大量投入すればなんとかなる仕事は現状でもう十分です。
今後のコンピュータサイエンスは、多少扱いが難しくても、より高度でより困難な問題が解決できるような方向に前進すべきではないでしょうか。
ちょっと変な喩えなのですが、大勢を載せた快適な大型旅客船ばかりではなく、キーンと甲高いジェット音を鳴り響かせ、操縦には高度なテクニックが必要ではありますが、高速で高機動な超音速戦闘機が必要なのではないかと考えています。のんびりとした船旅をしている間に、何者にも邪魔されずに地球の反対側まで超音速で到達できるのです。(デカルト言語では、まだその域には達していませんが。)
最近のコンピュータの飛躍的な性能向上と容量拡大により、実現可能な状態になったと感じたからです。
デカルト言語は、とても重い言語になると予想できました。まさにHeavyweight Languageです。前からいろいろとアイデアは持っていたのですが、最近の高性能大容量PCで、ようやく多少の富豪プログラムでも平気で動く環境が整いました。これなら、いけると思ったのです。
昔の第五世代コンピュータ計画で開発されたGHC(Guarded Horn ClausesでHaskellではない)言語の本を見つけて読んで衝撃を受けました。
デカルト言語とはずいぶん異なるのですが、30年も前の容量も少なく性能も低いコンピュータで目指す目標が壮大なのです。今からもう一度、第五世代コンピュータプロジェクトをやり直したら、今度は結果が異なるのではないでしょうか。
GHCと似た系統のガード節やユニフィケーション機能を持つ、HaskellやErlangが最近脚光を浴び始めているのも、やっと時代が追いついてきたということではないでしょうか。
いろいろな人に使ってもらいたいです。
特に、今までのコンピュータではできなかったようなことを、停滞することなく前向きに実現できる人に使ってもらいたいです。
デカルト言語のアイデアがいろいろと次々と思い浮かぶときです。そんなときには、ごりごり書いたプログラムがコンパイルエラー無しで一発でコンパイルできます。
あまり驚くようなことは無かったように思えます。
毎日淡々と機能拡張していくことが楽しみです。
やはり、ドキュメント整備です。
私の頭の中にしかない仕様や機能をドキュメントにしなければならないので、誰かに頼むわけにもいきませんし。
できる範囲で順にドキュメントを書いてきました。
デカルト言語本体も拡張していくのですが、今後はドキュメントとアプリを増やしていきたいと考えています。
ソースコードは、割りとどんどんと書けるのですが、マニュアルや関連ドキュメントがなかなか整備しきれません。
また、アプリケーションを書いていきたいですね。
言語を創っただけではあまりにも意味がないので、デカルト言語で動くアプリケーションを増やしていきたいと考えています。
それと、本体の拡張としては、コンパイラを作り性能を改善したいですね。また、加えてWWWアプリのサーバーサイドやクライアントサイドとしても使えるようにしたいとまだ漠然としてはいますが考えています。
また、マルチコアにも対応しないといけないですね。
他のプログラミング言語とは異なる毛色になっているじゃないかと思えるところでしょうか。
デカルト言語という名前が英字では"descartes"と、長くて打ちにくくて覚えにくいので後悔することがあります。
しかし、デカルトには、心身2言論や普遍言語および機械論的世界観など、デカルト言語と無関係とは思えないような思想や哲学があるので、おそらく名前を変えたりすることは将来もないでしょう。
IT系メーカーの開発者です。
Windows Vista上のcygwin環境と、自分でカーネルとコマンドを入れ替えて元が何かわからなくなったLinuxです。 VMware上でUbuntu Linuxも使っています。
プロジェクト開始から4ヶ月ほどです。開発状況はαです。
2009-04-29:descartes-0.10.0リリース
2009-04-08:descartes-0.9.0リリース
2009-03-15:descartes-0.8.0リリース
2009-02-24:descartes-0.7.0リリース
2009-02-15 descartes-0.6.0リリース
2009-02-08:descartes-0.5.0リリース
2009-02-01:descartes-0.4.0リリース
2009-01-25:descartes-0.3.0リリース
2009-01-17:descartes-0.2.0リリース
2009-01-10:descartes-0.1.0リリース
2009-01-08:プロジェクト開始
デカルト言語を使っていろいろなアプリケーションを書いて公開してください。
また、プロジェクトのwikiのページにあるドキュメントは、転用して知らない人に説明する資料として使ってください。
http://sourceforge.jp/projects/descartes/wiki/FrontPage
特にはないのですが、強いて言えば、具体的には言えなくて申し訳ないのですが、何かドキュメントを書きたくなるような動機付けがあると良いのではないかと思います。
他のプロジェクトの方の面白そうなプロジェクトがあっても、あまりドキュメントが整備されていなくて結局、内容がよくわからないことが多いような気がします。
今月のプロジェクトに戻る
[PageInfo]
LastUpdate: 2009-05-11 13:07:10, ModifiedBy: morihide
[License]
GNU Free Documentation License
[Permissions]
view:all, edit:members, delete/config:members