デカルト言語も開発を始めてから5周年となりました。 今年もがんばっていきますのでよろしくお願いいたします。 デカルト言語のプログラム例新プログラミング言語のつくりかたデカルト言語を使った、「新プログラミング言語のつくりかた」について説明しましょう。
独自のプログラミング言語を考えている人は多いと思いますが、それをプロトタイプ的にとりあえず作るにはどうすればよいのか、参考になると思います。
ここでは最初に、まずPL/0と呼ばれる良く知られたプログラミング言語を実装します。
PL/0は、「Algorithms + Data Structures = Programs」(ニクラウス・ヴィルト: Niklaus Wirth) で紹介されたもので、Pascalを簡略化した基本的なモデルともいうべきプログラミング言語でした。
このPL/0を基にして、構文を拡張し、Pascalとは異なる構文にしていきます。そして、クロージャ機能を持った言語や純関数型の言語を派生させ、高階関数やプロトタイプベースのオブジェクト指向を導入します。
こうして、最終的にはいろいろな機能を持った独自のプログラミング言語をいくつか実現してしまいましょう。
(更新中)
微分方程式をデカルト言語のODE機能で解くデカルト言語により、微分方程式の解を求める機能について説明します。
常微分方程式を立てることができれば、デカルト言語のODE機能で解を求めることができます。
HTTPクライアント機能によるWWW情報の取得と加工デカルト言語のHTTPクライアント機能とHTMLの加工機能により、任意のインターネット上の情報を取得して加工することが出来ます。
なお、ダウンロードには、実行例のパッケージとして次のものを用意しました。Windows上で動作するプログラムです。
説明については、クライアント機能だけではなく、WWWサーバ上のWWWアプリとするための説明も行います。
(更新中)
日本語プログラミング言語「紫」「紫」は、日本語でプログラムの書ける新しい言語です。
作成されたプログラムは、「紫」により、一階述語論理の関係に分解されてコンパイルされ実行されます。
クロージャをサポートした新言語 Closure Basicの作成クロージャをサポートした新言語のコンパイラをデカルト言語で作成します。
コンパイルした結果は、中間コードに出力しデカルト言語で書かれたVM(バーチャル・マシン)で実行することとします。
基本的な手続き的な処理については、懐かしいBasicの文法を使い、関数・サブルーチンの呼び出し処理と変数のスコープの管理をクロージャ対応としましょう。
また、関数クロージャは、ファーストクラス・オブジェクトとして扱かいます。
(更新中)
スタンドアローン・プログラムの作り方デカルト言語で作成したプログラムを独立したWindowsやLinuxのアプリケーションとして実行するための方法について説明しましょう。
(更新中)
日本語で会話できるキャラクターの作り方日本語での会話を楽しめる『会話キャラクター』プログラムです。猫耳メイドやツンデレ・キャラクターのようなイメージの会話をします。
このプログラムは、デカルト言語(http://sourceforge.jp/projects/descartes/) で書かれたプログラムであり、AI(人工知能)の一つとして作成されました。
人工知能のようで、人工無能のような、デカルト言語で作られた日本語で会話できるキャラクターについて説明しましょう。
LispをつくろうLispをつくろう(その2)デカルト言語を使って、Lispインタプリターを作成しましょう。
できるだけシンプルなLispにします。しかし、それだけではあまりに芸がないので、ちょっとだけひと捻りしてみましょう。
デカルト言語には強力な構文解析機能があるので、それを使って、普通のLispのs式に加えて、lamda関数をλ式として受け付けるように構文を拡張します。
lambda関数を以下のように書けるLispです。
λx (car x) '(a b c)
λxyz (* x (+ y z)) 9 8 7
λx λy λz (+ x (* y z)) 7 40 3
(define f λx (* x 2))
(define (f x) (* x 2))
(define f (λ(x) (* x 2)))
(Lispをつくろう(その2)を更新中) デカルト言語による選択と決断デカルト言語にも選択と決断のような動作を行わせるために、順列と組み合わせの機能を付けることにしました。
限られた実行時間の中でも、多くの可能性を検討し、より優れた結果を選択できるようにします。
デカルト言語によるパズルの解き方デカルト言語を使ってパズルをどのように解いていくかを説明します。
例題としては、広くよく知られているものを集めました。他のプログラム言語で実装されているプログラミング方法と比べてみてください。
デカルト言語によるコンパイラ言語の作成: Tiny Pythonコンパイラの作成デカルト言語によるコンパイラ言語の作成: Tiny Pythonコンパイラの作成(その2)仕様を簡略化した、Tiny Pythonを作成します。
Tiny Rubyと同様に思い切り簡略化した仕様とします。
なお、Tiny Rubyでの記述とオーバーラップする部分もありますが、ここのTiny Pythonについての記述は、こちらを単独で読んでも分かるように記述していきましょう。
Tiny Rubyの記述を既にお読みの方は、共通部分や相違部分について考えながら読んでいくと面白いと思います。
デカルト言語による日本語の形態素解析 : 自然言語の読解デカルト言語による日本語の形態素解析 : 自然言語の読解(その2)デカルト言語で日本語の形態素解析を実行するプログラムを作ります。
日本語の文章の解析を行うことによって、デカルト言語のプログラムで自然言語の処理を行うプリプロセッサとして役立てることを目指しましょう。
デカルト言語の並列コンピューティング : マルチコア対応機能デカルト言語では、マルチコア対応機能をサポートします
マルチコアシステム上での効率の良い並列コンピューティングが可能となりました。マルチコアのシステム上では、N個のコアがあれば、N倍以上の速度のプログラムを書くこともできてしまいます。
デカルト言語による論理的なA.I : 自然言語による論理デカルト言語で、自然言語で論理的な処理を行います。
A.Iとしては極めて初歩的なものですが、発展させていけば未来には実用になるかも?しれません。
デカルト言語によるコンパイラ言語の作成: Tiny Rubyコンパイラの作成デカルト言語によるコンパイラ言語の作成: 続Tiny Rubyコンパイラの作成(2)デカルト言語を使って、プログラム言語のコンパイラを作成しましょう。
Rubyの仕様を簡略化したTiny Rubyコンパイラです。
デカルト言語の構文解析機能(EBNF)を使用するとコンパイラも簡単に作成できてしまいます。
デカルト言語のプログラム:サルとバナナ人工知能風のプログラムをご紹介しましょう。
昔からある有名な問題です。
デカルト言語の基本的な機能のプログラム例デカルト言語の機能を一通り説明しています。
デカルト言語のプログラム:リストの操作デカルト言語を使ってリストの操作をする基本的なプログラムを作成します。
デカルト言語のプログラム:calcデカルト言語の(yacc/lexみたいな)構文解析機能を使って、簡単な電卓プログラムを作成します。
デカルト言語の動的なオブジェクト: オブジェクトの動的操作デカルト言語で動的にオブジェクトを生成して、動的にメソッドや変数を操作します。
マニュアルデカルト言語の操作方法、文法、組み込み述語のリファレンス・マニュアル、および便利な使い方について記述します。
--- |