kなんとかの日記 このページをアンテナに追加

2010-06-11

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

| 08:09 |  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屋さんのほうが勝手に勘違いしてただけのくせに、そこを謝ることは一切しない。自分の間違いや勘違いは正そうとせず、相手のせいにするんだから、まあマスゴミモンスターペアレントの類いと一緒だわな。


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


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

forth83forth83 2010/06/11 09:31 Javaメインでやってるけれど、Java素人のSI屋みたくJava屋なんて呼ばれて面白いわけないだろ?

payopayo54payopayo54 2010/06/11 09:42 Javaは一時はやちゃったから、いろんなレベルの人がいるよね。Javaのレベルで言えば、漏れも底辺だけど。。。SIerではメイン言語でやっているところが多いけど、そういうところのエンジニアってあんまり奥まで勉強してなさそう、SIするのに必死で。
Javaの利点はあくまで、静的な言語で、EclipseなどのIDE環境が整っているため、開発(導入)コストが低いところにあるんじゃないかなー。元ネタのベンチマーク(?)はすごい参考になった。PHPの隠された実力にちょっと使ってみようかなと思った。(私的レベルで)
ただ、Javaメインでやっていると、他の言語を勉強しようとしても、それJavaでできるよなー的に挫折を繰り返している毎日です orz

payopayo54payopayo54 2010/06/11 09:48 続きですいません。JSPとか、確かに動的な言語になっちゃっているよね。自分は開発する上でこれが嫌です。MCは静的なのに、Vが動的でデバッグが面倒。自分がよい開発方法を知らないだけかもしれないけど、ただ、これも、WicketとかGWTみたいなものも出てきて解消されてくのかなーと期待しています。

superaraisuperarai 2010/06/11 12:58 いつも勉強させてもらってます。
私もそのように深い知識を得たいと思っているのですが、そのような知識はどのように収集しているか伺ってもよろしいでしょうか?

kwatchkwatch 2010/06/11 22:06 forth83さん:
> Javaメインでやってるけれど、Java素人のSI屋みたくJava屋なんて呼ばれて面白いわけないだろ?

これまたレベル高いコメント。自分たちのことは省みず他人のせいにしてる。
ところで『Java屋』ってのは気に障るんですか?「PHPer」「コボラー」「Rubyist」と同じでは?

payopayo54さん:
> JSPとか、確かに動的な言語になっちゃっているよね。自分は開発する上でこれが嫌です。
> MCは静的なのに、Vが動的でデバッグが面倒。

同意します。ふうつにJavaをそのまま使えばいいのに、わざわざ静的言語のメリットを捨ててまで動的言語を導入し、物事を複雑にしているんだからあきれます。そのくせ他のスクリプト言語は大いにdisってるし。

superaraiさん:
> そのような知識はどのように収集しているか

単に年寄りなだけです。別に深い知識なんてもってません。相手が無知すぎただけ。
今は若い子のほうがよく勉強して知識を身につけてますよ。

forth83forth83 2010/06/12 00:18 kwatchさんの書く記事は技術的に面白い。特にここ一連の記事の特にVelocity や JSP のイケテ無さには激しく同意するし、的確な分析だと思いました。
だけど、かように幼稚な挑発をする人とは議論を交えたいとは思わなかったってこと。

kwatchkwatch 2010/06/12 09:28 forth83さん:
> かように幼稚な挑発をする人とは議論を交えたいとは思わなかったってこと。

どこまで相手のせいにすれば気が済むんだろう。相手を尊重しているように見せかけて、やっぱり自分たちのことは省みないですね。
今回は「はなこ」さんが「動的な言語」を勘違いしたうえに逆ギレしていることが原因なんだから、まずは身内を反省することが先じゃないでしょうか。
『Java屋』と言われて機嫌悪くしたりとか、ここにコメントするJava屋さんは感情的になって議論ができない人が多いですね。

forth83forth83 2010/06/12 16:42 やはり議論に参加するためには、まずははなこ某さん達に対する責任を果たさなきゃならないんだ。
身内って何ですか?同じ言語使っていたら同じ立場だとでも思っているのでしょうか?

kwatchkwatch 2010/06/13 00:11 『議論に参加』って、何か議論したいことがあったのでしょうか。『議論を交えたいとは思わなかった』と書いているんだから、議論なんかしたくないのでは?

kwatchkwatch 2016/10/01 04:52 全体的にイラっとする.