先日の「JavaとLLをマッシュアップせよ from 丸レク」ですが「JavaのコードがCOOLでない」「Javaを意図的に貶めるのはいかがなものか」という言葉をいただきました。さくらばさんのコメントや、矢野さんのエントリとか。もう、おっしゃるとおりです。
言い訳をすれば「わかりやすさ」を取ったというところで「Javaは手順重視」「LLは直感重視」というところを書いたのですが。せめてクロージャーの話でもすればよかったと思いつつも、そうすると説明長いし…みたいな。ま、比較するようなものではないのでしょう。
ともかく個人的にはすごい反省材料。僕は「自らの言葉とコードで語る」というのは頑なに守っていて、なるべく自分が書いたアプリやコードをデモするようにしています。他人が作ったどっかのサイトみせて「すごいでしょ」っていうのはいかがなものかと。プログラマがデモやコードのないプレゼンをすべきではありません。
その上でビジネスサイドがわかるであろう概念論(前回で言えばドラッカーとかトフラーとかそういうの)と組み合わせて話をしています。
というわけで、ああいった"ゆるいコード"を提示してしまったことは深く反省しておりますです。Javaはさくらばさんの
import java.util.Arrays;
import java.util.List;
public class Sample {
public static void main(String[] args) {
int total = 0;
List
for (int i = 0; i < list.size(); i++) {
total += list.get(i);
}
System.out.println(total);
}
}
が短いですかね。ちゃんとInteger使っているし。一方のGroovyは若干強引ですが、1行で書いて
println( (1..5).inject(0) {t,v -> t+v} )
こんな感じで。特徴はRangeとClosureを使っている点です。これはJavaには真似できませんし十分比較になりますね。
ただ、もちろん、ここはJavaの主戦場ではありません。コンパイル言語の特徴は、型を通じて同時に多人数がコミュニケーションできるところです。LLの良さとは、まだ次元が違います。
コードの書きやすさにおいて比較するというよりも、両方の特徴が見えるようにすればよかったなと反省です。
