🐼老後の嗜み:ルビーを読む:動的型付けと単一継承のインタプリタな関係2021年06月13日 11:11

老後の嗜み:ルビーを読む:動的型付けと単一継承のインタプリタな関係


ルビーの学習に飽きて2日目(早っ!)。

浮沈子の場合、興味が継続するのは3日が限度だからな。

それでも、ルビー自体に対する興味は継続している。

飽きちまったのは、学習の方だけ。

ネットを徘徊していたら、2005年に書かれた記事を見つけた。

(まつもと直伝 プログラミングのオキテ---目次:途中までしか読めませんけど、浮沈子にはそれでも十分!)
https://xtech.nikkei.com/it/article/COLUMN/20060825/246409/

開発者自身によって書かれた記事だから、まあ、ルビーの宣伝(!?)みたいな感じもするけれど、従来の言語に飽き足らずに、作らずにはいられなかったという思いは伝わる。

浮沈子は、内容の半分も理解できていないし、お勉強したのはモジュールの前までだから、それ以降の話はさっぱり分からない。

それでも、実際に、仕事でプログラムを組む上での使い易さを重視して開発された言語だということは伝わる。

ルビーは、実用的なわけだ。

そもそも、プログラミング言語なんて、コンピューターを使い倒すためのツールの一つなんだから、実用的でなければ意味はない。

何かの思想を表現するためでもなければ、美しい原理原則を実装するための手段でもない。

動くプログラムを書いて、データをぐりぐりするための、手垢に塗れた道具の一つだ。

泥臭いところがあってもいいし、使うのに適した場面が限られるのは当然だ。

それでも、記事を読むと、ルビーが現在のような仕様になっているのには、それなりの意味があることが分かる。

プログラムコードの生産性を上げるなどのために抽象化を指向し、そのために手続きを構造化し、データも取り込み、その具体的な実装としてオブジェクト指向プログラミング言語という手段が採られたという解説は、浮沈子的にはしっくり来たな。

ルビーがなぜ単一継承なのか、なぜモジュール(ミックスイン)という仕掛が必要だったのか、動的型付けと継承の関係、コンパイラとインタプリタの関係も、スッキリ分かった気になる(気のせいじゃね?)。

プログラミング言語作者が、どういう意図で言語仕様を決定し、どういう風に使われることを想定しているのかというのは、なかなか知りえるところではない。

この記事は、その意味では非常に参考になるとともに、オブジェクト指向プログラミング言語に対する理解も助けてくれる。

ルビーについては、他の記事も読んでいる。

(第1章 Ruby言語ミニマム)
https://i.loveruby.net/ja/rhg/book/minimum.html

「うーん、なんだか C.new()という記法はメソッド呼び出しみたいだな、と思った読者は鋭い。Rubyではオブジェクトを生成する式は単なるメソッド呼び出しなのである。」

「つまりclass文とは、新しいクラスオブジェクトを作り、クラス名と同名の定 数にそれを代入する、という操作である。一方インスタンスの生成とは、定数 を参照し、そのオブジェクトに対してメソッド(普通はnew)を呼ぶ、という 操作である。」

「そんなわけでRubyではnewは予約語ではない。」

目からうろこがボロボロ落ちる。

「c = C.new()
result = c.myupcase("content")
p(result) # "CONTENT"が表示される
もちろん慣れればいちいち代入する必要はない。以下のように書いても同じで ある。
p(C.new().myupcase("content")) # 同じく"CONTENT"が表示される」

クラスを作ったら、実態であるインスタンスを作って・・・などと、手続き的に理解しているだけではダメだな。

この記事は、今の浮沈子にはぴったりだ。

モジュールの前まで読んだけれど、ある程度は理解できた。

この他にも、いくつか読みたい記事はある。

お勉強に飽きたら、読み物で気分転換し、さらに学習を進める。

それに飽きたら、飯を食って爆睡する。

プログラミング言語の学習は、浮沈子にとってはお稽古ごとのような感じだ。

三味線みたいなもんか。

モジュールとミックスインが分かれば、また1曲弾けるようになったという感じか(継承のところで足踏み状態)。

別に、ルビーで何かを書くことを目的としているわけじゃない(気が向いたら書くかもしれないけど)。

新しい言語を学習すること自体が目的なわけだ。

水泳(スイミング)、ダイビング、プログラミングは、現在の浮沈子の中では等価だ。

晴読雨読(+爆食爆睡)の生活は続く・・・。