• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

身の回りに溢れているほとんど全てのプログラムは、
静止状態の表現としてソースコードを持ち、
計算機上で実行され、そして終了します。
少なくとも、終了しようと思えばできるように作られています。

しかしながら、近年では、Webサーバやネットワークプログラムのように、
継続的に動作することが当たり前で、停止状態に移行する事自体が
例外とされるようなプログラムが珍しくなくなってきています。

RubyやPerl, Pythonなどの動的言語と呼ばれる言語が普及し、
プログラム言語の価値は、実行速度から開発速度で測られる
比率が高くなりました。
そんな中、去年ぐらいから、静的言語でも動的言語でもない、
新しいプログラミング言語のパラダイムの可能性について考えています。

はてしない物語。終了状態の無いプログラム。

停止することなく、動き続けることが想定されるService型プログラムを
記述することに特化した言語があってもいいのではないか。
そんな事を思うようになったのは、
Rubyistにはお馴染みの
irb

druby
を頻繁に使っていたからかもしれません。

NEPL ≒ irb + druby + Erlang + Sandbox

今のところ、open な druby サーバに対して irbで接続しに行くというのが、
一番それらしいものが得られる方法だと思います。
しかしながら、openなdrubyサーバを用意するのは非常にリスキーです。
ErlangのActorモデルや、エラー処理に関する哲学が参考になりそうです。

NEPL処理系が実現すると、
ソフトウェア開発のスタイルが大きく変わるのではないかと思います。

  • ソースコードを書いて、リポジトリにコミットするのではなく、
    NEPL処理系に接続し、irb的なshellからActorを登録する。
  • 仕様をActorの評価関数(計算機リソースの割り当て比率を決める)として定義する。
  • バグを見つけてソースコードを修正するのではなく、
    バグを定義してActorに対する罰金(ペナルティ)を課し、終息させる。

何かとりあえず動くものを形にしてみるべきですね。
$SAFE = 4なrubyとdrubyをベースにするか、
JavaScriptを使ってやるか、そのあたりを考えています。

See Also

posted by genki genki on Sun 2 Mar 2008 at 17:40 with 8 comments

最近はJavaScriptを使っておれおれスクリプト言語の処理系を
実装するのが流行っていますね。
ちょっとその実用性について考えてみたのですが、
限定されたデータに対してだけアクセス可能な、
サンドボックス的なスクリプト言語というのは、Webサービスの
プラグイン記述言語(サイト内DSLと呼んでみる。
サイト内とDSが被ってる気がするけど気にしない)
としての需要があるきがします。

例えば、次のような特徴を備える言語が考えられます。

  • Cookie情報にはアクセスできない
  • 指定したDOM Elementの子要素にしかアクセスでいない
  • 指定した種類のElementしか作成できない
  • XmlHttpRequestオブジェクトを作成できない
  • 指定した種類のイベントしかObserveできない

どうでしょう。Facebookのようにサードパーティが
アプリケーションを追加できるようなプラットフォームを
作る場合に、JavaScript自体ではなく、JSで実装された、
よりSecureなまったく別の言語を使うことで
より安全性を高めることができるのではないでしょうか。

posted by genki genki on Wed 13 Feb 2008 at 18:37 with 0 comments