Rubyな日々 その2 「たのしいRuby」

またやっちゃったかな〜

Rubyネタは、連作ものにするつもりはなかったのだが、勢いで連作ものになってしまった。このパターンは過去にも一度。内部統制の話を書いたときと同様である。共通点は、両トピックとも私自身がよく知らない分野で、それのために書く分量がどのくらいになるのか見当がつかないまま、お勉強のアウトプット代わりに始めた結果である、ということである。
ま、いいや。いけるとこまでいこう!!

たのしくねーぞ

前回エントリにも書いたが、まずは買った「たのしいRuby」のお勉強からスタートなのである。
最初のほうはらくらく。他の言語(ABPA)とはいえ、コーディングの速さと読みやすさでは、かなりのもののはず、という自負を持つ私。まあ楽勝だよね〜と思っていたのだが・・・
ヤバい。なんだかよくわからん。
本自体にどうも問題があるわけではなさそうだ。本の後のほうで出てくるトピックが、練習問題の回答にいきなり使われていたりして、多少面食らうが、多かれ少なかれ言語の解説書ってそんなもんだから、特に問題なし。
原因は単純かつ奥深いものであることに気がつき、少々慄然とする。オブジェクト指向の言語のソースコードを読みなれていないことと、正規表現に慣れていないこと。この二点がひっかかりの原因なのだ。
例えば、である。クラスの中にデータと振る舞いが混在している、という説明がある。ふんふん、と読むのである。ではソースを見てみましょう、となる。その瞬間、????、になるのである。
思えばパソコン少年だった小学生時代にBASICをおぼえてから、私が習得した言語はCOBOLABAP。みんな手続き型言語で、データをまず宣言して、それを順番に処理していくのが基本の言語ばっかり。まあ、20年来、肌にしみこんだ習慣なのである。
ところが、オブジェクト指向ソースコードは、いわば部分の集合を積み上げてプログラムにする、という感覚で組まれている。処理を順番に読んでいくのではなく、まず部品をくみ上げて、部品は正しいですね〜ときて、メインのロジックに入り、そを組み合わせて作っていく。んでもって、変数の中にその部品が入っていたりするので、この記述は前に宣言した部品に飛んでいくのやら、そも変数なのやら、はたまたRubyの「言語」のメソッドなのやら、そういうことが直感的にわからないもんだから、また最初の部品の宣言部分を読み直す。こんな感じなのである。当然生産性もへったくれもあったもんじゃないのである。
COBOLABAPの違いが標準語と大阪弁の違いくらいだとすると、ABAPRubyは英語と日本語くらい違うじゃないかあああああああぁぁぁぁぁ

まあ、慣れなんでございましょうね

しかしそうはいったって、JAVAをはじめ、メジャーな言語は全部オブジェクト指向なわけで、ここは慣れるしかない、と、少々悲壮な決意を固め、Ruby本を読んで、例題のソースコードを打ち込みまくる、ということを延々やってみたのである。
まあそうすると、人間不思議なもんで、そんなもんかしら、と、思えてくるのである。もうちょっと時間はかかりそうだが、なんとかなるかなあ、というところで、連休は終わってしまった。
慣れてくると、こっち(Ruby)のほうが直感的だ、という感じもしてきている。ふうむ、これからプログラムを学ぶ人、その中には、ウチの子供たちも含まれるのだろうが、こんな世界から入るんだねえ・・・*1
Railsへのトライは、次回以降なのであった。

*1:今幼稚園の年長なのだが、やり方を教えたら普通にぐぐって、たまごっちのホームページを見つけて好きに遊んでいる。すでに「調べる」=「ぐぐる」なのであった