見出し画像

配列プログラミングを「写経」した

お疲れ様です。プログラミング文体練習を「写経」しています。

最近の話題

ここ数日、リーダブルコードが話題になってますね。たしか自分も昔読みました。しかし細かい内容は忘れました。本の主張は理解できるし同意しますが、実際にコードを書いたりレビューする際に実現できるかは別問題な気がします。「正しい」書き方は、実際にコードレビューなどを繰り返すことで、身につける物のような気がしました。

そして、どのプログラムの本も読むだけでは理解が深まらず、時間がもったいないと思います。それよりも「写経」をして、理解を深めるほうが良いでしょう。

配列プログラミングーベクトル演算

今日のお題はベクトル演算です。簡単に言ってしまえばNumPyとかMATLABです。最近ではJuliaも人気みたいですね。もちろん深層学習でも巨大なベクトルをバンバン計算しています。

歴史をたどると古くから考えられていたようです。参考文献は1962年の『A Programming Language』が示されていました。アセンブラを数学に近づけようとしたみたいです。今どきのプログラミングとはかなり毛色は違いますが、深層学習の実態はベクトル演算と再確認できたのは良かったです。

しかしこの謙虚な名前の『APL』ですが、Wikipediaを読むとかなりの曲者とわかりました。独自の記号が多数あり、判読性が悪いみたいです。例えば、∇ ∆ ⍒ ⍋ ⍞ ⍝ ∵ ⊖ ⌹ ⍕  ⍫ ⍙ ⍟ ⍎ 、みたいな感じです。オリエンテーリングなどの地図記号に見えるくらい複雑です。見るからに混乱しそうです。

これらの記号はUnicodeで表記できます。昔はタイプライターのリボンを叩くエレメントが存在して、紙に印刷もできたみたいです。けっこう本気だったんだなと感じました。

GNU Octaveで「写経」した

PythonのサンプルコードはNumPyでした。他言語実装は、例えばMATLABかJuliaで、と書いてありました。MATLABはライセンスが無いし、JuliaはわからないのでGNU Octaveを使いました。MATLABと同じ書き方ができるオープンソースです。いつもどおりChatGPT-4で課題を与えてコードを出してから「写経」をしました。

写真は地図ということで、小田原城の地図です。二宮尊徳の神社があることに今気が付きました。こんど遊びに行く機会があったら、二宮金次郎を拝みに行きたい思います。

それではまた!


無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。