Java屋さんのコメントがレベル高すぎて困る
Velocity/JSPが遅い件について、Java屋さんからびっくりするようなコメントをもらった。
最初のコメントは、よく意味がわからなかった。
はなこ 2010/06/04 14:37
JSP 勘違いしてない?JSP を初めて読み込むと、開発サーバーによって Java ソース コードに変換され、その Java ソースが Java バイトコードにコンパイルされます。Java ソースとコンパイル済みのクラスは、一時ディレクトリに保存されます。元の JSP ファイルに変更を加えると、JSP が自動的に再生成されてコンパイルされます。
JSP の使用 - Google App Engine - Google Code
JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記
http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/usingjsps.html
JSPがServletに変換されて実行されるくらい、ワシでも知っとる。このコメントだけでは、ワシのどの文章が『JSPを勘違いしている』と思ったのかわからない。
2つ目のコメントから、雲行きが怪しくなる。
はなこ 2010/06/04 19:00
JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記
書いてる通りですけど、JSP や Velocity は実行前にはすでにサーブレットに変換され、コンパイルされており、インタプリタ言語のように JSP の構文を解析しながら実行されるものではありません。
コンパイルするのでこの時点で構文エラーもチェックされており、
ここで仰っている動的、静的で言うならば、静的だと思います。
まず、『インタプリタ言語のように JSP の構文を解析しながら実行されるものではありません』という文章から、インタプリタは構文解析をしながら実行していると勘違いしている。しかしシェルスクリプトならともかく、今ドキのインタプリタ (Ruby/Python/Perl/PHP/...) は構文解析してから実行するので、『構文解析しながら実行』というのは間違い。
また『コンパイルするのでこの時点で構文エラーもチェックされており、ここで仰っている動的、静的で言うならば、静的だと思います。』という文章から、明らかに動的言語・静的言語を誤解していることがわかる。コンパイルする・しないことと、言語が動的・静的ということは、別に関係はない。Pythonは動的な言語だが事前にコンパイル可能だし、Rubyならコンパイルできるかどうかは処理系に依存する (RubiniusはできるがMatz Rubyではできない)。
さらに、『Velocity は実行前にはすでにサーブレットに変換され』ると書いてあるが、そんな事実はない。確かにVelocityではVelocityServletというクラスが用意されているが、それはVelocityをサーブレットに変換するわけでもないし、変換されたものでもない。まあさすがにこの間違いは自分で気づいたようで、次のコメントで訂正している。
はなこ 2010/06/04 19:16
JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記
Velocity はコンパイルされないようですね。
つうかそのくらい知っとこうぜ、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が遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記
"JSP は実行前にサーブレットに変換されスタンバイしてます。" っていうことです。
JSP が遅いということは、サーブレットが遅いと言っていることと同じに思えたのでコメントしました。
『承知しています』なんて書いてあるけど、理解してたら『インタプリタ言語のように JSP の構文を解析しながら実行されるものではありません。』などど書くわけがない。明らかに理解しているふりをしてるだけ。
また『JSP が遅いということは、サーブレットが遅いと言っていることと同じに思えた』と書いてあるのだが、この人は元記事を読んだのだろうか。JSPが遅いのは動的な言語を導入したからだと元記事に書いてあるのに、なぜServletのことを持ち出すのだろうか。関係ないだろうに。
ここまできてようやく気づいたのだが、どうもこのJava屋さんは「動的な言語」というのを勘違いしているようだ。恐らく、事前にコンパイルするのが「静的な言語」で、そうでないのを「動的な言語」と思い込んでいるらしい。だから「JSPは動的な言語を導入したから遅い」という主張に対し、「JSPは事前にコンパイルするから静的である。JSPを勘違いしてない?」というアサッテな反論をしているわけだ。
いやいやいや、勘違いしているのはそちらですから。
はなこ 2010/06/06 01:00
JSPが遅い理由をJava屋さんはまるでわかってないらしい - kなんとかの日記
jsp は遅延評価使わなければ静的では。jsp 使う時 el 必須とは思ってない。el 限定の話ならタイトル変えて欲しい。最初から読まないから。
『遅延評価』などと言っているが、これも明らかに勘違いだわな。遅延評価をバリバリ使っているHaskellが静的なのに『遅延評価使わなければ静的』とかアホか。聞きかじった用語でコメントされても困る。いや違うな、聞きかじった用語で*エラそうに*コメントされても困る。
他のJava屋さんは誰も見てないのかなあ。こんなコメントするやつを放置するなんて、身内には甘いよね。
しかしなあ、『el 限定の話ならタイトル変えて欲しい。最初から読まないから。』と言い出すとか、逆切れだろ。Java屋さんのほうが勝手に勘違いしてただけのくせに、そこを謝ることは一切しない。自分の間違いや勘違いは正そうとせず、相手のせいにするんだから、まあマスゴミやモンスターペアレントの類いと一緒だわな。
やっぱこんな国は一度バルスされちゃったほうがいいよ。まじで。
#「はなこ」なんて名乗ってるけどこれで男だったら笑える