C言語の呪縛なのか?
添字とかが 0 から始まるのが嫌。1番目は 1 に決まってるでしょ。普通の人の思考では。0 から数える人なんて見たこと無いよ。
例えば、文字列の 5 番目から 10 番目を取り出すコードとかね。str[5:10] でいいじゃん。すげーわかりやすいじゃん。バグ率ほぼ0だよねこれなら。なにがいけないのこれで。
でも違う。str[4:10] になるんかな? 開始は 0 から始めるから 5 - 1 で 4 になって、終わりは +1 になるんだけど 0 からだから 9 + 1 で 10 になるという・・・わかるかこんなもん!ひっかけ問題かっ!
ぷろぐらまー「アドレスのオフセットだかr」
(かぶり気味で)機械の都合なんて知るかよっっ!
絶対バグる自信あるわ。機械の都合に思考を合わせるの無理!!
例えば Smalltalk。古い言語ですわ。Python の大先輩ですよ。
配列オブジェクトの 1 番目の要素を拾えというコードはこう書く。
#(123, "abc", 345, "def") at: 1
あるいは、
#(123, "abc", 345, "def") first
1番目は「1」 と指定する決まってる。
ぷろぐらまー「ループの終了条件で i=0 から i < max まd」
(かぶり気味で)いつまで君らは for 文でループしてんのじゃ!そんなもん未だに使ってるから OOP が身につかないんだろが!!パラダイムシフトしろ!!!心を解き放て!!!!!
さて、Smalltalk では、1 から 10 までを自乗するコードはこんな感じに書く。
(1 to: 10) collect: [:each | each * each]
インスペクタで見てみると
こうなります。
ちなみにループ構文なんて出てきませんよとw
範囲指定してみます。2 番目から 5 番目まで。
(1 to: 10) collect: [:each | each * each] from: 2 to: 5
2 番目は 2 だし、5 番目は 5 だよ。
Index の所にも注目して。「0」なんて無いし。
なんてわかりやすいんだ! 単純明快で素晴らしいでしょう?
複素数の怪
どうして虚数のリテラルを j にしてしまったのか。数学では虚数は i でしょ。意味わかんないよもう。言語の独自仕様で覚える事増やすのやめてくれ。