Previous Page | Next Page

[ADP開発日誌]Windows開発版のプレ公開

 先週からちまちまブログとドキュメントページを書いていたのですが、
本日みましたところアクセス数が地味に伸びていたので、今のうちにWindows版だけですが、開発版(Ver 0.4)をプレ公開します。

ドキュメントも充分でないですが、ドキュメントの一部に実行例を出しているので、ものがあればイメージがつかみやすいかと思います。

ADPのドキュメントページをADP(正確にはADPのWEBページ拡張)で構築しているのですが、やはりというかなんというか細かいバグおよび仕様変更を行っており、まだまだ改修をしています。
ので、このあたりはお含みおき頂ければと思います。
2010-06-21 | コメント:0件

[ADP開発日誌]ADPとPrologとの違い

ADPは、Prologからユニフィケーションとバックトラックを借りてきていますが、構文等については、皆様(というか私自身が)とっつきやすいように、普通の言語と同様にしています。

例えば、変数は$で始まるとか、文字列はクオート("や')で囲むとかはPrologとは違います。そのほかホーン節の定義も少し違うのですが、これは私が元としたPrologの方言から来ています。

また、何より決定的に違う面があるのですが、ADPには

・代入
・next述語によるバックトラック後に失敗せずに評価を続ける機能

があります。
代入は副作用を伴いますので、論理型言語であるPrologには代入がありません。しかし、プログラムを作成する上では代入は便利だと考え、ADPは代入をサポートしています。
また、Prologでは、バックトラックで全件を探索するにはfail述語を使い、最終的には失敗でプログラムが終了します。
これはこれでよいのかもしれませんが、ADPではnextという述語を用意し、失敗せずに全件探索を行うことができます。

Prologには、findall述語があり、この述語により全探索の結果をリスト化します。
ADPは代入とnext述語を用いて全探索結果のリスト化ができます。あくまでも私見ですが、代入とnext述語によりADPの方がより表現力が増しているかと思います。

next述語の説明


ADPですが、通常の言語をマスターした人にとって基本的にあまり難しいことを考えなくても良いように、Prologのエッセンス(よいところ)だけを引き出すようにデザインしています。
2010-06-18 | コメント:0件

[ADP開発日誌]開発言語にC++を選んだ理由

私は、職業プログラマですが、プログラミング言語を仕事で作る機会はありませんでした。趣味ではちょこちょこやっていた程度です。今回ADPを作るにあったって以下の2点で、C++の仮想関数を使いました。
・パーサー
・ユニフィケーション
ADPの文法ですが、パーサーが書きやすいように作成しています。つまり、変数は$で始まるとか文字列は"や'で始まるとか最初の一文字を読んだ時点で言語要素が判るようにしています。そのタイミングで対応するオブジェクトを作成し、そのオブジェクトでコンパイルを実行するということをやっています。ユニフィケーションも同様にオブジェクト間のマッチングを仮想関数(マルチメソッド)で行っています。
あと、STLを使っているのですが、vectorとかstringを普通に使用していますので、大変楽に開発ができています。

C++を選んだ欠点ですが、他言語インタフェースでCを呼び出す時、オブジェクトの変換が必要になることです。これはオーバーヘッドになりますので、悩ましいところです。もっともC++を呼び出すようにすればオーバーヘッドはなくなりますがC++しかダメってのもな・・・。
2010-06-17 | コメント:0件

[ADP開発日誌]なぜPrologをベースとするか?

WEB-DB用の言語としてベースにPrologを選んだわけですが、(注)あくまでもベースであって基本的に別ものになっています。
なぜ、Prologを選んだかと言いますと、
 PrologはRDBとの相性が良い ということに尽きるかと思います。PrologとRDBの類似性自体はPrologを知る多くの人が感じていることだと思います。
Prologの教科書を読むと必ずと言っていい程、家系図の例題が出ますが、家系図自体がデータベースそのものでしょう。
 一方で、インピーダンスミスマッチと言わるぐらい、他の言語(主にオブジェクト指向言語)とRDBはあまり相性がよくないです。O/Rマッパーのようなものを誰しも一度は作ると思いますが、私も実際にJavaでO/Rマッパーを作ってみましたが、どうも今一つでありました。もっとも3年程前に、Ruby On Rails(RoR)を触ってみましたが、RoRにはものすごい力を感じました。一時はADPの開発を止めようかと思いましたが、Ruby実行速度がいまいち(特にWindows版)なのとRuby自体は比較的難解な言語なので続けることにしました。

私はPrologには精通していません。学生自体にちょっとかじった程度です。ですので、Prologの文法や規格をきちんと把握していません。その中でPrologの動作についていまひとつ理解できない部分がありましたので、であればということでADPの文法はオリジナルのものとなっています。
2010-06-16 | コメント:0件

[ADP開発日誌]開発版の公開までのToDoリスト

プログラム本体は公開までこぎつけたのですが、
とりあえず、以下の作業が終わったら開発版を公開します。
・ドキュメント
  簡単な説明
  マニュアル
  リファレンス
・ライセンス
・サンプル
  CSVファイルの出力
  ファイルハッシュの作成
  Yahooの株価情報の取得
  CMSのサンプル

以下のURLで公開します(ドキュメント作成途中ですが、まぁその方が完成までのモチベーションが上がるので・・・)。
http://www.adp.la/
2010-06-15 | コメント:0件
Previous Page | Next Page