アカウント名:
パスワード:
Lispじゃ、UIを作れないって事だな。
つ Kahua Project [kahua.org]
逆に言えばLispベースのアプリケーションサーバーなんぞにもちゃんと需要はあったってことか。Yahooのサービスを作った時のPaul Grahamの話を読むとなんか確かに素晴らしい気はするんだが。
Kahuaといえば継続ベースですなあ。
>Yahooのサービスを作った時のPaul Grahamの話
もちろん言語としての生産性とか自由度の問題も大きいのだろうけど、
Graham氏の「要望が来たらその場でさくさく修正できるんだぜ」という辺りを実現してる要因は、必ずしも言語そのものの強みではなく、どちらかというと「修正後のリロードなんて野暮なことを心配しなくていい」ような処理系エンジンの作りの問題なんじゃないか?
Javaでも(Seasarの人が)ホットリロードとか言っているわけだけど、状態マシンをメモリ内部※にきちんと持つ(持つことを諦めない)ならば、「リロード」とはどこまで行っても喧嘩を続ける羽目になる。
※それをキャッシュに追い出すか否かはどうでもいい。というかキャッシュに追い出す処理を「隠ぺい」できないようでは高級言語の名が廃る。
それが上記Lisp環境とかだと、「外で書いたものをリロード」ではなく「中身から書き換えてしまう」という方式転換により、状態マシンの状態を温存したまま該当コードを直してしまうことが出来るようになる。だからこそ実行中にいじれる。
Smalltalkでいうところのイメージ方式がこれに近い概念かな。
↑別に動的型付けである必要があるわけではない。強型言語のコンパイラを実行処理系内に持ってしまえば同じことは原理的には可能だ。重要なのは型の有無ではなく、今書いた新規コードのコンパイル結果をメモリ上の「どこ」に置く(置き換える)かを明示的にコントロールできるかどうかだ。JVMのLoaderだと一旦全部アンロードしてからでないとその作業が出来ないから、ああなる。
Webアプリといえば状態を持つことを諦めるべし、という宗教も有るようだが、Web「アプリ」を作るにはやっぱり要所要所に状態を持つことが必要(少なくとも便利)で、しかもそれの管理に例えばJavaServletのSessionみたいな野暮なもの(積み替えが全手動だという点で)では疲れてたまらない。
また上記のように処理系のしくみ次第では状態と喧嘩せずにコード修正とかも出来る。
そう思うと、上記のような処理系(兼アプリ鯖)は、もうちょっと普及して、我々にラクをさせてほしいもんだと思う。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
つまり、 (スコア:0)
Lispじゃ、UIを作れないって事だな。
Re: (スコア:0)
つ Kahua Project [kahua.org]
逆に言えばLispベースのアプリケーションサーバーなんぞにも
ちゃんと需要はあったってことか。
Yahooのサービスを作った時のPaul Grahamの話を読むと
なんか確かに素晴らしい気はするんだが。
Re:つまり、 (スコア:0)
Kahuaといえば継続ベースですなあ。
>Yahooのサービスを作った時のPaul Grahamの話
もちろん言語としての生産性とか自由度の問題も大きいのだろうけど、
Graham氏の「要望が来たらその場でさくさく修正できるんだぜ」という辺りを実現してる要因は、必ずしも言語そのものの強みではなく、どちらかというと「修正後のリロードなんて野暮なことを心配しなくていい」ような処理系エンジンの作りの問題なんじゃないか?
Javaでも(Seasarの人が)ホットリロードとか言っているわけだけど、
状態マシンをメモリ内部※にきちんと持つ(持つことを諦めない)ならば、
「リロード」とはどこまで行っても喧嘩を続ける羽目になる。
※それをキャッシュに追い出すか否かはどうでもいい。というかキャッシュに追い出す処理を「隠ぺい」できないようでは高級言語の名が廃る。
それが上記Lisp環境とかだと、
「外で書いたものをリロード」ではなく「中身から書き換えてしまう」という方式転換により、
状態マシンの状態を温存したまま該当コードを直してしまうことが出来るようになる。
だからこそ実行中にいじれる。
Smalltalkでいうところのイメージ方式がこれに近い概念かな。
↑別に動的型付けである必要があるわけではない。強型言語のコンパイラを実行処理系内に持ってしまえば同じことは原理的には可能だ。重要なのは型の有無ではなく、今書いた新規コードのコンパイル結果をメモリ上の「どこ」に置く(置き換える)かを明示的にコントロールできるかどうかだ。JVMのLoaderだと一旦全部アンロードしてからでないとその作業が出来ないから、ああなる。
Webアプリといえば状態を持つことを諦めるべし、という宗教も有るようだが、
Web「アプリ」を作るにはやっぱり要所要所に状態を持つことが必要(少なくとも便利)で、
しかもそれの管理に例えばJavaServletのSessionみたいな野暮なもの(積み替えが全手動だという点で)では疲れてたまらない。
また上記のように処理系のしくみ次第では状態と喧嘩せずにコード修正とかも出来る。
そう思うと、上記のような処理系(兼アプリ鯖)は、もうちょっと普及して、我々にラクをさせてほしいもんだと思う。