<< Kwartzで実行時にテンプレートをコンパイルする方法 | main | CharcoalPHP 0.6.0リリース >>
CharcoalPHP1.0はActorModelをベースに
CharcoalPHP1.0に向けて構想を練っています。 その間の縫って、Runkitを使ってプロファイラを作って見たり、ChacoalPHPの設定ファイル周りが余りに遅いのでparse_ini_fileと spycのベンチを取ってみたり、いろいろしていました。


プロファイラの方はWindows版で落ちてしまうため、あえなく断念。うまくすれば AOPもいけるよねと期待していただけに残念でした。


parse_ini_fileとSpycのベンチはもちろんparse_ini_fileの圧勝でしたが、その結果は標準の設定ファイル形式としてYAMLとPHPを捨てさせるのに十分なものでした。というわけで、次期リリースではparse_ini_fileを使い、Javaのプロパティファイルっぽいフォーマットにしようかと画策中。


ところで最近Scalaというプログラミング言語に興味を持っているのですが、Scalaは「アクター」 (Actor)というものが使えるらしいと知り、調べて見ました。


アクター(Actor)とは、もともと並列処理のための計算モデルである「Actor Model」 からきています。Scalaのそれは並列処理指向言語であるErlangから拝借したものらしい です。


Actor自体はメッセージを受け付けるスレッドのようなもので、内部で何らかのトリガーが発生するか、外部からのメッセージを受け取って 処理を行う処理体のことをいいます。


この考え方自体は並列コンピューティングの世界で古くからあるものですが、昨今スケー リングやらCPUのマルチコア化などで再度注目を浴びています。


調べていくうち、この考え方ってCharcoalPHPの方向性(タスク)とそっくりだなーと 感じるようになりました。実際には細かいところで考え方や実装の 異なる点があるようには感じています。 大まかに「プログラムに並列性を導入することでロジックを簡略化する」という点は 一致しますが、アクターモデルでは「それにより並列性を上げる」のが目的であるの に対し、CharcoalPHPでは「それにより再利用性を高める」のが目的である点が違いと 言えるでしょう。


というわけで、CharcoalPHPでは「アクターモデル」を中心概念として採用します。 DI+AOPも採用する可能性がありますが、型付けの弱い言語であるPHPでは費用対効果が少ないという 見通しをしているので、採用されたとしてもあくまで補助的な扱いになるでしょう。


| comments(0) | trackbacks(0) | by stk2k
コメント
コメントする









この記事のトラックバックURL
http://devlog.sazysoft.com/trackback/862502
トラックバック