サービス指向言語

というtracemonkey(略してトレモン)のスライドを紹介した記事にブコメ

b:id:kennak これがエントリーなのか…w jsはそもそもWebをちょっと便利にしようっていうところがテーマだし、書きやすさからの生産性も高いし、ブラウザをIDEとする開発環境も優れているよね。実行速度なんてCPUとベンダが頑張れ 2010/03/23


と書いたら

b:id:peppers_white 高速化, javascript, programming, browser id:kennak そんな事言ってるからブラウズで使うためのノートブックが性能不足で逆に使い物にならなくなったりするのではと/邪推でしか無いけど/リッチブラウザゲームは外でプログラム動かすunityがあるから大丈夫だけど 2010/03/24


と返事が来たのでお返事を書く。



正直、ぱっとコメントを見たときはアプリの設計と言語仕様って別の話だけど、どう繋がっているんだろうかと思った。
そのアプリの設計がしょぼいのか、使っている環境がしょぼいのかじゃないの?と。それとは別にその遅くて使い物にならないノートアプリがなんなのか気になるので製品名が知りたい。
JavaScriptは主にブラウザ上で動く、Webを少し便利にしようぜっていうサービス指向言語だと思っている。
サービスというのは、抽象化された技術やモノの上でサービスを与える側と受ける側の理解と協力があって成り立つ。
コンビニ店長ブログのエントリーでもあったけど、きちんと並ばない客はイラっとくるとか、コンビニをよく使う人は速やかに静かに並ぶとか。
モンスターなんちゃらとかは、そのサービスの概念が理解できてない人達なのかなとも思える。
コンビニで車の修理をするっていう人はいない。コンビニの店員は公共サービスの一部を提供するけれど、サービスの経緯や中身までは詳しくは知らないはず(サービスとして抽象化されているから知る必要がない)。
コンビニと併設されてればいいんだけど、それはそれぞれ専門性の高いスタッフやらお店の構造が違うものなので、言語がわかれているのと同じ。
JavaScriptで最新のファイナルファンタジーやOSや地球シミュレータを作ったりはしない。
現在のJavaScriptを高速に動かすにはトレモンのようにJITコンパイラなどで最適化していくしかない。これがベンダがんばれ。あとは物理層であるCPUが早くなるか。
しかし、現状のJavaScript言語だと実行時にしか決まらないことが多すぎるので限界に来ている。
まぁ、そこでぱっと出てくるのはECMAScript3.1ベースのJavaScript2.0。今どうなっているか知らないけど。


実行時にあった自由度を減らして実行前に半生程度にしてしまうことで高速化を計っている。
さらに先のECMAScriptの仕様を見ることでJavaScriptの未来が見えてくる。


JavaScriptはお手軽言語として最適だと僕は思っている。
簡単に書けて、実行できて、Scriptっていうものは書きやすさだといっても過言ではない。
書きやすさというのは実はとても大切で、お気に入りのノートとボールペンですらすら書けるというのは生産性に大きな影響を与える。
JavaScriptが静的言語だったらGreacemonkeyとか出てなかったんじゃないだろうか。それ以前にブラウザに搭載されないか。
仕事でも今はちょっとしたことは全てJavaScriptかVBAScript(エクセルフォーマットが多いから)でやっている。
付箋紙のように気軽に書けて貼れて使えて捨てられる。かわいいヤツだ。
その反面、大規模なサイトをガリガリ書くと辛い(2万行位?かな)。いくら綺麗に書いても後で読みにくいし、改修しにくいし。なんかこーできたものを俯瞰していて、よくわかんないな…というため息が漏れる。
個人的には、関数の中に関数をぼんぼん書いてくと後でパッと見て構造を把握しにくい。と感じている。自分が劣化していて、古いタイプの人間だからなのかもしれない。最近の子はそうでもないのかもしれない。わからない。大きなものを作るのには向いてないなと思う。
IDEとかが整備されてもJavaScriptでOSを書く日は来ないと思う。固まらないセメントでビルは作れない。装飾には最高。