読者です 読者をやめる 読者になる 読者になる

年金ロボットをめざして

FX(外国為替証拠金取引)自動運用ロボットの開発ブログのはずだった

cdr 思想

「年金ロボットをめざして」だって? これ、プログラミング言語のブログだろ。とくに Basic 言語の。うん、まぁ、この頃そうだね。そりゃね、年金ロボットはめざすさ。ただ、急いでいないので、めざしてないように見えるかも。いけないいけない、騙されちゃいけない。ビックカメラを見よ!ビックカメラといいながら、そのうちカメラ売り場はなくなるに違いない。


f:id:fxrobot:20131115142032p:plain

まっ、そんなことはどうでもいいか。
それよりも cdr ってなんだ!?

Lisp の cdr だよ。Contents of the Decrement part of the Register の略だよ。なんのことだかわかんないよ。ぼくもわからない。大昔のハードウェアに由来する名称で今となっては意味不明だ。(そんなことはないんだけどね)

Lisp には cdr と同じ働きの rest もある。car に対しては first がある。だったら、そっちのほうがなんだかわかりやすいよ。car、cdr じゃなくて first、rest がいいよ。

f:id:fxrobot:20131115145628p:plain

それなんだよね。

ぼくは cdr を好むし、cdr じゃなきゃいやだ。これこそが cdr 思想なのだ。

まぁ、ちょっと大げさだね。:P

Basic でも For ~ End For や While ~ While End はいやだ。For ~ Next、While ~ Wend じゃなきゃいやだ。

この Next や Wend があるからぼくは Basic が好きなんだ。
そんな理由かい。
car(カー)、cdr(クッダ)、cons(コンス) があるから Lisp が好きなんだ。
そんな理由かい。

ちなみに cdr は、クダ、クダーなどとも読むが、ぼくは最初のころクッダと覚えたので今でもクッダだ。これも cdr 思想だね。えっ、ただの頑固だって? うん、そうともいう。

(car (cdr exp)) は (cadr exp) と書ける。「カダー」と読む。
(car (cdr (cdr (cdr exp)))) は (cadddr exp) と書ける。「カダダダー」と読む。
(caddddddddddddddddddddddddddddddr exp) は「カダダダダダダダダダダダダダダダダダダダダダダダダダダダダダダー」だ。合ってるか? バカ。:P

うーん、バカバカしい、大好き。というのが「cdr 思想」なのだ。

 ぼくはこの cdr のあるプログラミング言語が好きなのだ。プログラミング言語界をず~っと見渡してみても、そんなにあるもんじゃない。だから Basic なんだよ!このやろぉー!(落ち着きましょ)

elseif も ef とか書けばよかったのにね。でもこれは英語圏の人の発想じゃないね。そういえば、Python じゃ、elif だね。Python にしちゃ頑張ったね。この頑張りは swith をなくすためだったんだろう。

思い出したがそういえば、PureBasic の repeat ~ until は Pascal だよね。QuickBASIC のdo ~ loop のほうが新顔なので、ぼくは repeat ~ until に馴染みを感じるが、Basic 愛好家であるなら、do ~ loop を受け入れるべきか。

do  [ while <exp> | until <exp> ] ~ loop [ while <exp> | until <exp> ]

こりゃ、強力だね。それに直感的だ。

do while ~ loop を使えば、while ~ wend を排除できる。next はよいとしても wend は不合理だからね。wend を使うなら select case ~ case ~ send じゃなきゃ一貫性がない。それを穏やかに避けるためのアイデアだと思う。..ことにしよう。

ぼくはプログラミング言語の形式に一貫性や統一性を求める。と同時に cdr 思想を持っている。さあ、どちらを選ぶんだ。Microsoft が QuickBASIC で導入した方法でよかったのだろう。do while ~ loop があるが while ~ wend はなくさない。

ところで、ぼくにとっては end if か endif かは重要な問題なのだ。FreeBasic は end if と endif の双方を認めることにした。しかし end select は endselect とはできない。PureBasic は endselect(EndSelect)で統一した。PureBasic はフランス製なので QuickBASIC の束縛から逃れることができたのだろう。

おもしろいね。

しかし、この辺りの形式は QuickBASIC で完成したということことなんだね。ぼくは QuickBASIC の頃は仕事がいそがしくていやってなかったし、VisualBasic もほとんど知らないで、C++ などを学んでいた。

今頃になって Basic 愛好家を名乗り始めているというわけなんだ。にわかなのだ。
それでもぼくは Basic を支持する。