パスワードを忘れた? アカウント作成
506888 journal

USHの日記: Ruby の楽しさ

日記 by USH

なにげなく「Rubyの生産性の高さはどこまで本当か? 」なるサイトを見付けてしまった。

まあ、ここの機能を取り上げて言語の優劣を論じるのはなかなか難しい。
ただ、Ruby(とLISP)でできて、他の言語でなかなかできない事として、構造を持つデータの埋め込みがあるように思う。

例えば、S式で

  (game
    (stadium "Yokohama")
    (teams
      (team (name "FC Barcelona") (region "Europa"))
      (team (name "SC Internacional") (region "South America")))
    (score 0 1))

というようなデータを、プログラム中に埋め込みたいとする。
LISPなら上の式をそのまま quote すればよいわけだし、Rubyでも、

  [:game,
    [:stadium "Yokohama"],
    [:teams,
      [:team, [:name, "FC Barcelona"], [:region, "Europa"]],
      [:team, [:name, "SC Internacional"], [:region, "South America"]]],
    [:score, 0, 1]]

と書けてしまう。ポイントは、Array ([]) や Hash({}) がシンタックスに入っていて、いちいち new と書かなくてもよいところ。

さらに、上のデータの score が動的に代わるなら、[:score, 0, 1] の所を、[:score, $score1, $score2] とか変数化しておけば、そのときの値を埋め込んでくれる。(LISP でいう back-quote 機能の様な感じ) これ、以外と使えるので重宝しています。

大きなシステムならともかく、やっつけで作る細かいツールなんかは、ちょっとしたデータを埋め込んで置きたくなる。そのデータはできるだけ視覚的にわかりやすい方が、あとあとのメンテナンスが楽なんですよね。(メンテなんて言っている時点で、「やっつけ」と自己矛盾していますが。)

こういうのって、Java や C# ではできるんですかねぇ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...