3連休の間、Rubyで遊んでました。
Rubyの開発環境って何が定番か分からなかったので、
とりあえず前にInstallしたRadRailsを使ってました。
(途中でEclipseプラグインのRuby Development Toolsに変更)
よくスクリプト言語の良さとして、
「弄って即実行」みたいな話を聞きますが、
個人的に、その辺のメリットはあまり感じられず。
JavaでもEclipseでプログラム書いてる分には、
コンパイルやビルドを意識することが少ないので、
「弄って即実行」なんですよね。
まー、連休で書いてたプログラムは、
サーバーサイドなプログラムじゃないので、
サーバー停止→起動なんてプロセスが入ってくると、
スクリプト言語の恩恵が分かるのかもしれない。
(JavaでもSeasarのHot Deploy使えば無問題ですか)
で、それでも、「ああ、Rubyっていいな」と思ったことを。
例えば、テキストファイルに
Hello,
World!!
と書きたい場合。
Javaだと、
PrintWriter writer = null; try { FileWriter fw = new FileWriter("hoge.txt"); BufferedWriter bw = new BufferedWriter(fw); writer = new PrintWriter(bw); writer.println("Hello,"); writer.println("World!!"); } catch (IOException e) { e.printStackTrace(); } finally { writer.close(); }
こんな感じですかね。
で、これがRubyだと
open('hoge.txt', 'w') do |f| f.puts('Hello,') f.puts('World!!') end
なんですよねぇ。
(この2つのコードがどの程度等価なのかは分かりませんが・・・)
やりたいことやるのに、「余計なこと」を書く量が少ない。
Javaでもラップクラスを作っちゃえば、
同じくらいのコーディング量で済むのかもしれないけど、
Rubyには標準で用意されてるんだな、と。
で、思ったのは、Javaはデザイン指向な感じで、
Rubyはユーザー(プログラマ)指向な感じだな、と。
(7/18追記)
WhiteRabbitさんにご指摘を受けたので、J2SE5.0を使用。
PrintWriterで直接ファイルを指定してみました。
ちょっと短くなったかな。
PrintWriter writer = null; try { writer = new PrintWriter("hoge.txt"); writer.println("Hello,"); writer.println("World!!"); } catch (IOException e) { e.printStackTrace(); } finally { writer.close(); }