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

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

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

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

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

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

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

Search Words:

  • erlang4 programing2 actor2 language2 the1 model1 programming1 erlan1 ruby1 snmp1 プログラム言語1 ryby1 actorモデル1 smalltalk1

Comments:

Face Fujita 8 months ago.

暴走して、ファイルやメモリに無限にアクセスし続けるとかという場合が起きたら、どうするのでしょう?資源アクセスへはなんらかの制約がすでに課されてるとか?

Png 瀧内元気 8 months ago.

そうですね、制約が課されているべきだと思います。 また、ファイルやメモリに無限にアクセスし続けるようなアクターを書いても、 CPU時間が割り当てられないようなリソース分配を行うことを考えています。 順列都市っぽいものをイメージしてもらえるとわかりやすいかも。

Png あんどうやすし 8 months ago.

Smalltalkは終了状態の無いプログラムかも。

Png 瀧内元気 8 months ago.

ふむふむ。Smalltalkを使ってみます。

Face Fujita 8 months ago.

順列都市

これは初耳です。小説みたいですね。時間があったときに読んでみたと思います。

Png 瀧内元気 8 months ago.

非常に面白かったです。

  • Greg Egan. “Permutation City” (1994年, 邦訳『順列都市』, 早川書房, ハヤカワ文庫SF)
Face takahashim 8 months ago.

Smalltalkもそうですが、Lisp系の人も走りっぱなしプログラムが好きですよね。というかそちらの方が歴史も古いですし。

Png 瀧内元気 8 months ago.

そうみたいですね、Smalltalk勉強会でもEmacs-Lispの話が出てました。 Lispも腰を据えて使ったことがないんですよね。 昔は、高速なRaytracerが書けない言語には魅力を感じなかったのです。 なので、昔からある動的言語はスルーしがちでした。なんか損をしてたかもなあ。

or Preview
Tags
thoughts language idea
Social Bookmarks
  • Delicious
  • B_entry401
  • Clip_16_12_w401