Java屋さんのコメントがレベル高すぎて困る

Velocity/JSPが遅い件について、Java屋さんからびっくりするようなコメントをもらった。


最初のコメントは、よく意味がわからなかった。

はなこ 2010/06/04 14:37
JSP 勘違いしてない?

JSP を初めて読み込むと、開発サーバーによって Java ソース コードに変換され、その Java ソースが Java バイトコードコンパイルされます。Java ソースとコンパイル済みのクラスは、一時ディレクトリに保存されます。元の JSP ファイルに変更を加えると、JSP が自動的に再生成されてコンパイルされます。

JSP の使用 - Google App Engine - Google Code
http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/usingjsps.html

JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記

JSPServletに変換されて実行されるくらい、ワシでも知っとる。このコメントだけでは、ワシのどの文章が『JSPを勘違いしている』と思ったのかわからない。


2つ目のコメントから、雲行きが怪しくなる。

はなこ 2010/06/04 19:00
書いてる通りですけど、JSP や Velocity は実行前にはすでにサーブレットに変換され、コンパイルされており、インタプリタ言語のように JSP の構文を解析しながら実行されるものではありません。
コンパイルするのでこの時点で構文エラーもチェックされており、
ここで仰っている動的、静的で言うならば、静的だと思います。

JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記

まず、『インタプリタ言語のように JSP の構文を解析しながら実行されるものではありません』という文章から、インタプリタ構文解析をしながら実行していると勘違いしている。しかしシェルスクリプトならともかく、今ドキのインタプリタ (Ruby/Python/Perl/PHP/...) は構文解析してから実行するので、『構文解析しながら実行』というのは間違い。

また『コンパイルするのでこの時点で構文エラーもチェックされており、ここで仰っている動的、静的で言うならば、静的だと思います。』という文章から、明らかに動的言語・静的言語を誤解していることがわかる。コンパイルする・しないことと、言語が動的・静的ということは、別に関係はない。Pythonは動的な言語だが事前にコンパイル可能だし、Rubyならコンパイルできるかどうかは処理系に依存する (RubiniusはできるがMatz Rubyではできない)。

さらに、『Velocity は実行前にはすでにサーブレットに変換され』ると書いてあるが、そんな事実はない。確かにVelocityではVelocityServletというクラスが用意されているが、それはVelocityをサーブレットに変換するわけでもないし、変換されたものでもない。まあさすがにこの間違いは自分で気づいたようで、次のコメントで訂正している。

はなこ 2010/06/04 19:16
Velocity はコンパイルされないようですね。

JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記

つうかそのくらい知っとこうぜ、Java屋さんなら。Velocityは歴史ある有名ライブラリなんだから。


次のコメントもボロがでてる。

はなこ 2010/06/04 20:29
先に
> Velocity はコンパイルされないようですね。
と書いてます。Velocity のしくみはおっしゃる通りのようですが、
Velocity と JSP はしくみが違います。

Velocity - You make the decision - Generation?
http://www.jajakarta.org/velocity/velocity-1.2/docs-ja/ymtd/ymtd-generation.html

> Perl/PHP/Python/Ruby/JavaScriptといった現代のインタプリタはどれも、実行に先立って構文解析を済ませてから実行されます。

承知しています。

言いたかったのは、
"JSP は実行前にサーブレットに変換されスタンバイしてます。" っていうことです。
JSP が遅いということは、サーブレットが遅いと言っていることと同じに思えたのでコメントしました。

JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記

『承知しています』なんて書いてあるけど、理解してたら『インタプリタ言語のように JSP の構文を解析しながら実行されるものではありません。』などど書くわけがない。明らかに理解しているふりをしてるだけ。

また『JSP が遅いということは、サーブレットが遅いと言っていることと同じに思えた』と書いてあるのだが、この人は元記事を読んだのだろうか。JSPが遅いのは動的な言語を導入したからだと元記事に書いてあるのに、なぜServletのことを持ち出すのだろうか。関係ないだろうに。


ここまできてようやく気づいたのだが、どうもこのJava屋さんは「動的な言語」というのを勘違いしているようだ。恐らく、事前にコンパイルするのが「静的な言語」で、そうでないのを「動的な言語」と思い込んでいるらしい。だから「JSPは動的な言語を導入したから遅い」という主張に対し、「JSPは事前にコンパイルするから静的である。JSPを勘違いしてない?」というアサッテな反論をしているわけだ。

いやいやいや、勘違いしているのはそちらですから。

はなこ 2010/06/06 01:00
jsp は遅延評価使わなければ静的では。jsp 使う時 el 必須とは思ってない。el 限定の話ならタイトル変えて欲しい。最初から読まないから。

JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記

『遅延評価』などと言っているが、これも明らかに勘違いだわな。遅延評価をバリバリ使っているHaskellが静的なのに『遅延評価使わなければ静的』とかアホか。聞きかじった用語でコメントされても困る。いや違うな、聞きかじった用語で*エラそうに*コメントされても困る。

他のJava屋さんは誰も見てないのかなあ。こんなコメントするやつを放置するなんて、身内には甘いよね。

しかしなあ、『el 限定の話ならタイトル変えて欲しい。最初から読まないから。』と言い出すとか、逆切れだろ。Java屋さんのほうが勝手に勘違いしてただけのくせに、そこを謝ることは一切しない。自分の間違いや勘違いは正そうとせず、相手のせいにするんだから、まあマスゴミモンスターペアレントの類いと一緒だわな。


やっぱこんな国は一度バルスされちゃったほうがいいよ。まじで。


#「はなこ」なんて名乗ってるけどこれで男だったら笑える