カテゴリ:LISP


2006年01月17日

豊沢さんと連絡が取れて嬉しい。更なる数式処理部の高機能化。

実はひそかに狙っていたのだが、豊沢さんがこのサイトの該当エントリに気づいてくださり、豊沢さんと久しぶりにコンタクトを取ることができた。また会いたいと強く思っている人に連絡がついたことは(あっちの気があるわけではないがw)本当に嬉しい。東京に行く機会があったら是非一緒に飲みたいと思っている。

で、別システムでも利用すると思われる数式処理部だが、少しずつ機能を向上させ、他のパッケージとの依存性もかなり少なくなってきた。ただその分、大きな修正も必要で、今はリファクタリングの真っ最中だ。もうちょっとなんだけどなぁ。

さらに、10年前にX-Windowシステム用に自分が設計した汎用グラフライブラリが、仕様レベルで再び日の目を見ようとしている。10年前に作った仕様ではあるが、かなりきちっとオブジェクト指向で設計しているので、ユーザから見ると、APIは実にシンプルにできている。5種類以上のグラフがたった10個未満のAPIで同じように自在に操れる。当然Xイベント処理もサポートしている。たとえばリサイズ処理にも追従してグラフの大きさが自動的に変動する。これまで設計した中でも5本の指に入る自信作だ。しかも、オリジナルはCで実装しているのだからね。今度はJavaでの実装になるので、当然全くそのままのAPI仕様にするわけではない。シンタックスがオブジェクト指向に対応しているのだから、仕様もそれに沿った修正を行う。元の出来が良いので、基本的な考え方はいじる必要はないから、使い勝手も悪くはならないだろう。現実に実装されるのが楽しみだ。

Posted by masamic at 21:01 [Java, LISP, 日記・コラム・つぶやき] | 固定リンク | コメント (2) | トラックバック (0)


2005年11月15日

やっと一画面完成

やっと一画面間完成した。何のことはない画面だが、ほとんど仕様がないに等しいし、独自なWebフレームワークのドキュメントもないし。ほとんど試行錯誤しながらの作成なので、ずいぶんと時間がかかってしまった。しかも仕様検討者との口頭レベルでの合意仕様になっているため、ドキュメントに残された仕様とは違う動作になっているw。いいんかそれで。後のテスト工程でバグ票になって帰ってくるか、その前にテスト実施担当から事前に仕様確認があるかもしれない。また、いくつかクリティカルでない既知の問題点も残っているので、これらはいずれ対応する必要があるだろう。

明日からは、あと一画面(厳密にはモードの違いで2種類の表示方法があるので、実質二画面)の残りの作業を終わらせなきゃ。提供されているデータモデルクラスに、どうデータを持たせればいいか悩む。お世辞にも良いクラス設計とは言えない。いろいろ話して、取り繕うことは出来そうだが、設計が良くなるわけではないのがつらいところ。自分か設計したところではないため、直接手が出せないのが悩ましい。つーか、全体構造を把握しきっていないので、逆に手を出す方が危ない。設計した人(相談相手)も別にデザインパターンならちゃんと知っているレベルの人なので、今の設計が今ひとつ使い勝手が悪いことは理解しているようで、ちょくちょく手直ししてはいるようだが、さすがに抜本的に手を入れるのは難しいんじゃないかなぁ。出来たら神。

ラムダ計算の出来ないLISPもどきといったつくりの計算処理部は、結局「分かち書きをする」という制限をつけることで合格できそうだ。いつか時間があれば、きちっとした(分かち書きなしの)中間記法⇒S式パーサを書きたいものだ。多分、フリーで作成中のflisp-jでのパーサで実現できるだろう(実現したい)。

Posted by masamic at 22:11 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月11日

体調が悪い

ここ最近体調が悪い。どうも風邪を引いているようだ。巷でも風邪がはやっているようだ。土日は予定もないし、ゆっくり養生しますか。

仕事のほうも若干遅れ気味ながら着々と進んでいる。特に無理をせずに作業は出来ているが、ほかの同僚に若干負担が大きいのが、申し訳ないような。とはいっても自分も無理は出来ないので、仕方ないんだけどね。

計算処理系の問題はやはりS式の取り扱いに一貫性のない部分があって、Consリスト以外は基本的にAtomとするように整理したら、ちゃんと動くようになった。よりLISPに近づいたわけだw。単体レベルのリグレッションテストでJUnitを使っているので、多分品質は以前より悪いということはないだろう。

Posted by masamic at 21:11 [Java, LISP, xUnit, 仕事, 心と体] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月10日

計算処理部に思わぬ不具合が見つかった。

想定外だったのと、ここ2~3日体調が芳しくないことで、修正作業がはかどらない。
今日もゆっくり寝て、明日は、昨日の修正前の時点まで戻って、再度検討してみよう。

やっぱかなり中途半端なS式実装になっていたので、もう少しキチッと実装するかなぁ。

Posted by masamic at 19:11 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月01日

昨日のいろいろ

計算処理部はそこそこきれいに書き直すことができた。まだかなり効率化の余地はあるが、まあ、パフォーマンスが気になりだしたら考えれば良いだろう。私が対処できない場合に備えて、コメントくらいは書いておくかな。

TP-X40のリカバリーディスク発注完了。3営業日くらいで届くそうだから、金曜日くらいには手に入るだろう。
リカバリ作業は実家でするのか?今週の後半はいろいろと忙しい時期。作業できるかなぁ。今のうちから準備しておくのが吉か。

ここ最近、同僚の仕事場に出没して、ついつい長話をしてしまう。ちょっと悪いかなぁ。趣味的には、私の趣味セット(S)と彼の趣味セット(S')が大きく交わっているわけではないのですが、共通項(S'')から派生する話題が多くて、話が長くなっちゃうんだよね。しばしば邪魔してすまんねぇ。

Posted by masamic at 10:11 [Java, LISP, パソコン・インターネット, 仕事, 文化・芸術] | 固定リンク | コメント (0) | トラックバック (0)


2005年10月28日

計算処理部の大幅書き換え

計算処理部に要求を満たせない項目が見つかったため、コードを大幅に修正している。比較的使いやすいStreamTokenizerを大幅に取り入れた。メソッドの分割などで、かなり、すっきりとした記述に書き直りつつある。単体テスト(コードを書いた)レベルでは今までどおりすべてのテストコードが正常に動作しているので、残るは、懸案となった部分の処理だけだろう。

Posted by masamic at 23:10 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年10月25日

なんとなく様になってきた。

(バックグランドではLISPもどきで動作している)計算式処理部も順調に動いているようだ。その他担当画面も少しずつ形を成し始めている。その中の計算処理もちゃんと動いている。後は分かち書きしなくても良い様にシンボルとして使用できる文字を制限してやる必要があるようだ。

式定義ファイルでの式の定義で、式を複数行に渡っては書けないような仕様にしていたのはまずかったな。
自分もそれを痛感し始めていたところ、ちょうど同僚の開発者からも対応依頼が来た。

トークナイザに StreamTokenizer を使っているので、式の終了に 「;」 を指定しなければならないように仕様を変更し、改行は空白として認識するように3行ばかしの修正で対応できた。StreamTokenizer 結構使える。

Posted by masamic at 21:10 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年10月15日

FLISP-J: 関数定義特殊フォーム "de" をついか。

関数定義特殊フォーム "de" を追加したので、純粋にLISP形式の関数定義が出来るようになった。
まだ、S式はJavaで構築しないといけないが、早く文字列からS式を構築できるようにしないと…。
とりあえず、

S式表現) (de func (x) (+ x x))

をevalすると関数funcが定義される。Javaでは、S式を書くのはちょっと面倒。
アトム func には値として、S式: (LAMBDA (x) (+ x x)) が ConsセルとAtomで書かれている。

で次のS式表現) (func 2)

をevalすると、4.0 (もちろんアトム)が得られる。

Posted by masamic at 00:10 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年10月12日

FLISP-J なんかおかしくなっていたのでちょっと修正

というか、どう修正しようとしていたか忘れていたのと、設計上おかしかったところとかを別に修正しようとしていたから、ごっちゃになっちゃっただけなんだけど。ずいぶんと修正に手間取ってしまった。

通常のS式はリストの中をサブリストも含めてツリーウォークで順に評価していけばいいんだよな。quoteオペレータや一部のスペシャルフォームと呼ばれるオペレータ群はちょっと扱いが違うみたいだけど。

Schemeなどで見られる継続を実装するのはちょっと厄介だなぁ。

Posted by masamic at 23:10 [Java, LISP, プログラミング] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月30日

そろそろ画面を…

(正確にはHTMLをJSPに吐かせたり加工するためのクラス)を書かなきゃ。数式処理のほうはテストもだいぶ進み、バグも減ってきたので、ドキュメントの整理などが重要になってくるけど。あ、数式定義で別の数式くらいは指定できたほうがいいかなぁ?ちょっと考えてみるか。画面関連クラスを作っている合間にでも。

で、Free Lisp Library for Java のほうも、そろそろ S式 くらいはパースせんと遺憾よな。

Posted by masamic at 21:09 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月29日

今日は会社を休んだがFLISP-Jは進展あり。

どうも、全体的に調子良い所為か、ついつい体の疲れを忘れて夜遅くまで何かやってしまう。精神的にはきわめて順調なのだ。その所為かついつい体の疲れがたまり、今日はついに休んでしまった。

いかんよなぁ。うつ病克服での本当の最後の難関なんだよなこれが。

とか何とか言いつつ、自宅で横になりながら、FLISP-J: Free Lisp Library for Java のコードを書いてたりするから遺憾のだろうな。

で、その FLISP-J は、一応やっとラムダ式を処理できるようになった。これが出来ると今度はLISPレベルでの関数の定義が出来るし、関数の戻り値として関数(およびラムダ式)を返すことが出来るようになる。

そろそろ、ユーザーインターフェース(シェル)か、文字列で書かれたS式を内部モデルに再構成する処理を書かなきゃ、テストコードを書くのも大変だ。

今日はこっちの作業が進んだから、今日は早く寝れそうだ。いや早く寝よう!(を

Posted by masamic at 18:09 [Java, LISP, 仕事, 心と体] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月17日

FLISP-J: Free Lisp Library for Java

FLISP-J: Free Lisp Library for Javasourceforge.net にコミットした。

sourceforge.net における本プロジェクト名(unix名)は "flisp-j" になった。
当面は一人でメンテするし、さっきコミットしたやつもまだほとんど動作しないし、anonymous cvs co や Browse CVS ももう数時間しないと出来ない。

ということでおやすみなさい。

Posted by masamic at 00:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月14日

Sourceforge.net にプロジェクト申請

今作っている Free Lisp Library for Java を OSI認定プロジェクトとして、sourceforge.net日本語版もある)に申請してみた。
申請結果は2日くらいかかるようなので、少し待たなければなりません。

おそらく正式なOSIプロジェクトとして認定されなくても、Sourceforge.net自体の利用は出来るはずなので、ま、問題は無いでしょう。

Sourceforge.netはバックアップまでしてくれるフリーのソースコード管理システムを提供してくれるので、重宝します。

Posted by masamic at 23:09 [Java, LISP] | 固定リンク | コメント (1) | トラックバック (0)


2005年09月13日

Free Lisp Library for Java(その2)

最も単純な式のevalは動作した。式のオペレータはjavaのリフレクション機能で、Javaのstaticメソッドにバインドされている。これで、基本的な動作は出来るはずだ。あとはLisp自身で定義した関数の実行だろう。このためにはlambda式の処理が必要で、大きな機能でevalに残っているのはこの処理だ。lambda式の処理をどう実装するかが鍵だろう。

それが終われば、文字列で書かれたS式のConsリスト及びAtomへの変換処理、AtomListの管理、envListの管理(これはlambda式で使うので、先に実装することになるかもしれない。)処理を追加すれば、Lispの核は完成だ。

これに、シェルを付ければ、最低限LISPインタプリタの体裁は整う。

もう少しだ。

Posted by masamic at 23:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月10日

Free Lisp Library for Java

ちょこっとだけ進展。

といってもアンチョコ(「CプログラムブックIII - Lisp処理系の作成 -」 小西弘一/清水剛・著 アスキー出版局 ISBN4-87148-200-6)を見つつ、Will o'Lispの実装を勉強しているわけだが。

やっぱ、(オリジナルに近いという意味での)正統系Lispなら、Deep Bindingな環境リスト方式だよな。うん。

Posted by masamic at 23:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月05日

フリーLISPライブラリ

ぼちぼちと作成中。

まだまだ、評価関数を書くまでにはいたらず。

台風も接近しているし、ここら辺でおやすみなさい。

Posted by masamic at 22:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月04日

LISPライブラリ(その後)

う~ん、きちんとしたLISP処理系を作るにはやはりAtom(アトム)をどのように扱うかが大きな問題となる。Consリストはたいした問題ではない。処理系によってはAtomには任意のプロパティを設定できるため、当然Atomクラスを作る羽目になりそうだが…。

果たしてそれが正しいかどうか。

Atomを評価するとAtomが持つ値が得られる。⇒Atomは値を持つ。
(quote Atom)を評価するとAtomそのものが得られる。Atomには名前がある。
(Atom 1 2)を評価すると3が得られる場合、このAtomは+(plus)という関数である。
'(Atom 1 2)を評価すると、(Atom 1 2)が得られる。これは'Atomが(quote Atom)であるのと同じ理由である。

などなど。出来れば初期のLISP(LISP 1.5など)に近い処理系にしたい。拡張はそれからでも良い。

Posted by masamic at 22:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)