• 追加された行はこの色です。
  • 削除された行はこの色です。
* OCaml をブラウザでクライアント側で実行できたら面白い [#v68c480a]

という話になり、皆で検討した。

そういえば、アラン・ケイもそんなことを言っていた。

http://itpro.nikkeibp.co.jp/a/it/alacarte/interview0626/alan_5.shtml

>Webの技術は遅々として進歩しない。例えば、言語「Logo」のことを記述したWikipediaのページをみても、そこでLogoのプログラムを実行することさえできない。今のコンピュータは、昔の「Apple II」に比べれば1万倍も高速化しているというのに。

どう実装したらいいだろう。検討で出た案。

+ OCamlのソースを Javascript に翻訳して実行。 
+ OCamlにバイトコードを吐いてもらう。それを Jythonみたいに Javaのバイトコードにして、Javaアプレットとして実行。あるいは、javascriptで解釈して実行。

1.の案に集まったアイディア。

- まずは、いきなり OCaml を目指さずに、MinCamlくらいの、単純なソースを読み込むことを目標にしよう。 
- OCamlに構文チェックしてもらって、正しいソースだけを相手にすればもっと楽だ。 
- Scheme2Js が参考になりそうだ。
- [[JavaをJavaScriptに変換するグーグルのツールを使ってみよう:http://www.atmarkit.co.jp/fwcr/rensai/googlewebtoolkit01/01.html]]をOCamlでやろうとしているわけで、壮大な話です。 -- [[げんま]] &new{2006-12-10 (日) 00:22:44};

2.の案には、

- OCamlに、 Java や、 .NET や、 Parrot のバイトコードを吐いてもらえないか。 
- あるいは、SpiderMonkeyのバイトコードとか? -- [[げんま]] &new{2006-12-06 (水) 11:08:46};
- 今日ガリグ先生にこの話をしたら、 [[JavaCaml:http://www.ocaml-programming.de/javacaml/manual/]] を教えてくれました。 OCamlのバイトコードをJavaのバイトコードに変換して、Java アプレットとして実行するのだとか。 -- [[げんま]] &new{2006-12-06 (水) 16:11:00};
- JavaCamlのサイトにも少し書いてありますが、OCamlのバイトコードの命令語は数も少なく難しくありません。JavaCamlを手直しするか、直接バイトコードインタープリターをJavaScriptで書くあたりが一番簡単な気がします。(ただ、それだと、あまり型論理とかの勉強にはならないかも・・・) -- [[ogasawara]] &new{2006-12-06 (水) 18:06:16};
- SPARCをJavaScriptでエミュレートしてMinCamlに吐かせたネイティブコードを実行する、という案もげんまさんからでてましたよ。 -- [[下村]] &new{2006-12-06 (水) 21:39:24};
- うん、言ってはみたものの、バイトコードを解釈するほうがずっといいことに後から気づいた。 -- [[げんま]] &new{2006-12-07 (木) 02:58:07};
- 少しやってみましたが、Toplevelのソースコードをごにょごにょとすると、OCamlにバイトコードを吐かせることはできました。これはパッチとして公開すれば、ライセンス的にも問題ありません。あとはバイトコードインタープリタですが、諸所の事情(これは勉強会でお話します)でJavaScriptだと泣きそうです。せめてJavaAppletの方がいいかも・・・。 -- [[ogasawara]] &new{2006-12-10 (日) 12:55:41};
- OCaml インタープリタを [[-dinstr オプションで起動:http://pauillac.inria.fr/~lebotlan/docaml_html/english/english004.html#env]]すると、バイトコードをプリントしてくれるらしいです。 -- [[げんま]] &new{2006-12-10 (日) 14:51:57};
- Mozillaのjavascriptインタープリタには、[[関数を逆アセンブルする機能:http://developer.mozilla.org/en/docs/Introduction_to_the_JavaScript_shell#dis.28.5Bfunction.5D.29]]があるようです。  -- [[げんま]] &new{2006-12-10 (日) 14:54:59};
- [[OCaml の仕様解説:http://pauillac.inria.fr/~lebotlan/docaml_html/english/index.html]],[[VM命令一覧(ソースコードにgarrigueを発見):http://camlcvs.inria.fr/cgi-bin/cvsweb/ocaml/byterun/instruct.h?rev=HEAD]],[[参考になる日本語サイト:http://wiki.fdiary.net/flamemo/?Ocaml]] -- [[げんま]] &new{2006-12-11 (月) 20:46:46};
- ogasawaraさんの指摘。"VM命令のC_CALLというのは、C言語を呼ぶ命令で、これはMLでできないマジックをやるためにある。これをJavascriptで表現できるかが怪しい。Javaなら表現できそう。この命令は Pervasive でも使われているので、避けて通れない。"とのこと。 -- [[げんま]] &new{2006-12-11 (月) 23:45:39};
- GoogleのJavaからJavaScriptの件がオープンソース化されたので,もし,MLで出来ないマジックがどの程度のマジックかによっては,JavaScript化出来るかも? --  &new{2006-12-14 (木) 02:00:43};

OCamlに別のバイトコードを吐かせる議論は

[Caml-list] Alternative Bytecodes for OCaml

http://caml.inria.fr/pub/ml-archives/caml-list/2004/08/87b02814a0a37006562b51b979dcaf47.en.html

でもあったようだ。
- この回じゃないかもしれませんが,サーバサイドで実行の話が出ましたが,そうした形式で実現されているらしいJavaの教育用のサイトがありました.http://javala.cs.tut.fi/en/ --  &new{2007-01-10 (水) 15:32:06};
- eTShjmkfnPThwMrpaEQ -- [[sknbjjwa]] &new{2008-09-26 (金) 22:49:34};

#comment

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS