python独学してて思うこと

20年かひょっとしたらもっと前の話で、当時比較的真面目な学生やってて、ソフトウェアとかプログラミングとかコンピュータアーキテクチャとかを好んで勉強していた頃。
ニヤニヤしながらCとかC++とかやってたのですが、新しい言語としてJavaってやつが持て囃されていたような時期があった気がします。そしてJavaとセットで語られる「オブジェクト指向」なる考え方もありました。
今も昔も適度に新し物好きな性分なので、「Java」を通して「オブジェクト指向」というやつも独り学習しました。
「あーなるほどそういうことね。あれでしょ。構造体と関数がセットになった型を自分で作るんでしょ。継承?カプセル化? まぁ便利なんじゃない? オーケーオーケー。無問題。オブジェクト指向完全に理解した」というところくらいまでは頑張って勉強したくらいで趣味的プログラミングとは疎遠になりました。

時は流れること20年、イマドキ言語pythonを触っていて思うのですが、もう1行1行がオブジェクトなのです。オブジェクトではないことを書いている行がないくらいです。
かなりびっくりしたのが、例えばpythonで、

n=1
print(id(n))

というコードをはしらせると、10数桁の数値が表示されますが、これはオブジェクトIDと呼ばれるやつで、上の例だとn(すなわち整数の1)というオブジェクトが格納されている場所を示すものです。Cでいうところのポインタみたいなもんですね。(厳密にいうとたぶんちょっと違ういそう)
つまりつまり、pythonでは整数型ですらオブジェクトとして認識しているということです。Cのように、変数の格納領域を宣言してそのなかに「1」という数値を格納する、というのとは結構意味合いが変わってきます。
こういったことを身をもって理解するのって楽しいですね。

ナンチャッテがフワッと思うことですが、この20年でどんな歴史が紡がれたのかはわかりませんが、「オブジェクト指向」が完全に覇権を取ったという理解で良いのでしょうか。pythonについて調べてた時は、「オブジェクト指向」なんて聞かんなあ、流行ってないのかなあ、なんて思ってましたが、流行る流行らない以前に、当たり前すぎて語られないということなのかなと思いました。

素人が中途半端な独学で思ったことを書いているだけなので間違いもあるかもしれませんが、こういった知見が自分の中に積まれていく感覚は、勉強することの醍醐味ですね。

あとついでみたいな話ですが、pythonについて言われている、

  • 同じ内容でもCより短い行数で実装できる
  • 実行速度ではCに比べて圧倒的に遅い

などについても、上辺だけでなく根っこのところまで理解できそうなドキュメントがあれば良いですね。あ、あと、pythonは何でもかんでもオブジェクトですが、そのような環境にすることの意味などもわかりやすい文章どここに落ちてないですかね。
物理層の挙動から、もしくらメモリの使い方から解説して欲しいくらいですが、ネット上をさがしてもあんまりないですよね。
書籍とかオリジナルのドキュメントをあたれば良いのでしょうけど、どちらかというともっとカジュアルに学びたいというか、悪く言うと「知ったか」したいだけというか。

需要がないとしたら結構悲しいことですが、地道に調べて行くのもまた、独学の楽しいところと思って、心のどこかにひっかけておきます。