caitsith

文法を一日ででっち上げる

やっぱり yacc は書いてて楽しいね。LR だと LL よりも素直にかけてストレスが少ない。 微調整は必要だと思うけど、まあ追々直していこう。 %{ package caitsith.parser; import java.io.*; public class Parser { %} // 構造キーワード %token ACTOR, PROCE…

アクタの継承は断念

アクタは継承できないものとする。理由は、アクタを継承するには内部構造を外部へと通信するか、あるいは内部に閉じた系を構成したいにもかかわらず外部へと処理を委譲しなければならないからだ。 ということで、id:SiroKuro:20090719:1247985650 の実現には…

やっぱり欲しい無名アクタ

id:SiroKuro:20090717:1247850345 を考えている最中で思ったんだけど、やっぱり Timeout アクタをこの記法で書くのは限界があると思う。 Timeout アクタのネットワークトポロジは、大きく分けて2種類で、 Operator -> Timeout -> Catcher Timer -> Timeout …

アクタのネットワーク

前の Timeout アクタ作っているときに思ったけど、もっとアクタ間の繋がりを意識した記法を考える必要があるかもしれない。さて、どういう風に書こうかな。 A から B にメッセージを送る A に「処理を行い、B に「結果」を送る」が届く (TODO) A から B にメ…

やっぱり無名アクタには惹かれるなぁ

状態を持たないアクタ Add に 1 と 2 を渡し、その結果をアクタ Receiver に送信してもらうメッセージ式は、 Add 1 2 [Receiver result]みたいになるのかな。意味は Receiver.result(Add(1, 2)) みたいな感じ。 次に、Timeout アクタを実装してみる。まずは…

早めに決めなければならないこと

Caitsith の仕様が、頭の中で大まかに固まってきて、決めかねている部分が幾つか出てきた。 できれば他の人の意見も貰いたいけど……そもそも誰か見てるのかな、このブログ。 TODO: アクターに届かなかった or リジェクトされたメッセージはどうするのか考える…

map & reduce

アクタベースの計算機で map-reduce ってどうやって作るんだろう。 map は死ぬほど簡単にできるけど、reduce は……?

TODO

Actor 周りのインターフェース階層をどうするのか考える 案1:Actor が全ての親 + Actor + MarshalByRef + ActorObject + Catcher + Delay + Primitive + CaInteger + CaString 案2:CaObject が全ての親 + CaObject + Actor + ActorObject + Catcher + De…

前にも言ったけど、JUnit で非同期メソッドのテストはどうやって行うのがセオリーなんだろう

アクタモデルの計算なら、最終的にメッセージを受け取るアクタが xUnit ならば良いという判断なんだろうか。 それとも、簡単なもので良いからアクタモデル用の xUnit を作るべきなのかなー

ThreadPool の拡張

java.util.concurrent.ExecutorService#shutdown は、それ以降のタスク登録を禁止してしまうから強すぎる。Caitsith でほしいのは、それ以降のタスク登録は禁止しないが、タスクが尽き次第シャットダウンするメソッド。さて、どういう風に実装するか……。

色々と悩み中

1. メソッド呼び出しを非同期に行いたい という用途では、java.util.concurrent.ExecutorService を使うのが良いんだけど、 2. 同一オブジェクトのメソッドを複数スレッドが同時に呼び出さないようにしたい という制約をつけると、途端に難しくなる気がする…

そういえば

『ExecutorService を使って、とある処理を非同期実行するメソッド』 を Junit でテストしたいときって、テストクラスをどういうふうに書けばいいんだろうか。

とりあえず断片的な何か

procedure main: args do System.out println: "Hello world"; endprocedure main: args do for i = 1 to 100 do if i % 15 == 0 then System.out println: "FizzBuzz"; elsif i % 3 == 0 then System.out println: "Fizz"; elsif i % 5 == 0 then System.ou…

ところで actor と Active-Object の違いがわかんない。

とりあえずメモメモ

Java は Caitsith からシームレスに扱えるようにする invokedynamic 欲しいなぁ package test; import java.lang.*; actor Server { procedure push(msg) { System.out.println(msg); } } actor Client { msg:String; svr:Server; constructor(msg:String, s…

とりあえずこんな感じにデザインしてみようか

package test; import java.lang.*; type actor Server is procedure push(String msg); end actor Client is String msg; Server svr; constructor(String msg, Server svr); procedure start(); end implementation procedure Main(String[] args) var Ser…

プロジェクト開始

名前取れた。開発開始。 http://code.google.com/p/caitsith/