Thursday 31 July 2014

学生の書いた Java

今年は、学生が書いた Java のツケが廻ってきていて。

Java ってのは、Cobol だ

ってのは、ちょっとある。実は割と書きやすいんじゃないか?

ちょっと、ダサく、冗長に書くのに適した言語

だと。それでも、C みたいに、

ヘッダと本体に必ず二回ずつ書く

ってのはないんだけど、Generic とかは、やっぱり、

同じことを繰り返し書く

ことになりがち。SML, Ocaml, Haskell のように型推論してくれるなら複雑な型を書いても良いのだが、

Java で自分で型推論した型を、いちいち書かせるのはやめてくれ

Haskell や Scala はコンパイラが頑張ってくれるが Java は、そういうことはないから。なので自分で書く羽目に。Scala がやっていることを手動でやるくらいなら、

なぜ、Scala で書かなかったんだ?

実際、Haskell で書いてもらったらJavaの 1/10 ぐらいの大きさに。もっとも、Haskell には Haskell 固有の問題があって、それに付き合うのは、

金輪際、御免こうむる

的なところがあるんだけどね。遅延評価のあらゆる可能性を考えつつ、seq とかで制御していくのはつらすぎるよ。何が起きているのか、さっぱりわからない。プログラムしやすい言語とは、

実行が予測しやすい

ことが重要だと思う。メモリ消費、実行時間、並列実行。ハードウェアはクロックがあるから、

3クロック後に結果が来ることを予測

とかできる。それで req/ack がなくなるので速いんだよね。まぁ、

そういう言語を自分で作ればいいんだろ? わかったよ

ってなところはあります。

学生の書いたソースを refactoring するのは良いのだが、動くのか? これ。動いているので直す必要はないという説もあるが… あるが

Generic と wrapper ばかりで読めないんだよ

そういう問題だな。おそらく、Scala の trait 的に「その場で必要なことしかできない型を実行時に提供する」みたいなことをしたいのだろうとは思うが、

そういうのは、Java ではやらないから。

つまり、

Java は Java っぽく書けよ

ってことね。もっとも、Java 8 では lambda が入るので、だいぶ変わるようですが。

for 文使うな

って、Java 5 の時に言っていたのと正反対だろ?

今週末は、その Java 8 promotion が沖縄であるようです。

祝☆Java 8 Launch in 沖縄
http://java-kuche.doorkeeper.jp/events/13290

No comments: