C言語のポインタ概念が気持ち悪かった。
世界中の初学者と同じく、私をC言語から遠ざけた因子の一つ。
しかしようやく解消された。世の中には良い本がたくさんあるなあ。
30日でできる! OS自作入門 | 川合 秀実 |本 | 通販 | Amazon
この本にとても良いことが書いてあった。つまるところ「アセンブラを理解すれば、ポインタでの躓きは解消される。」とのことであった。さらに、ポインタのうれしさも含めて、飛躍なく、極めて丁寧に説明されている。私の気持ち悪さは解消された。
※この本だけを読んでいるわけではない。この本のポインタの記述に至るまでに、ある程度遠回りをしている。アセンブラとCPUについて多少の読書を経ている。
CPUの創りかた | 渡波 郁 |本 | 通販 | Amazon
はじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス) | 蒲地 輝尚 |本 | 通販 | Amazon
情報処理を学んだが、しかもソフトウェア専攻でハードウェア、また、その周辺の低レイヤデバイス・プログラミングを掘り下げておらず、さらには落ちこぼれもいいところなので、そもそも大してコンピュータを理解していないが、C言語プログラミングの授業が苦痛だった。
ポインタ概念ももちろんそうだが、C言語自体、プログラム自体もそもそも気持ち悪かった。もちろん今もまだ初学者みたいなものでいくらか気持ち悪いのだが、それはさておいて、何が気持ち悪かったかというと、「コンピュータは厳密なもの」、という基本骨子と、「プログラムの書き方はいろいろある」という実態が気分的に相反したこと。
とりわけポインタに関しては、授業中に値の代入や参照の記述方法が複数紹介され、担当教授が「色んな書き方ができるしどれもこれも問題なく動作する」だとか言い始めたうえ、ポインタ概念の抽象性(この本のおかげでもう抽象ではないが)と相まって、非常に気持ち悪かった。
厳密な動作をする機械を動かすために必須だからと、アルゴリズムという面倒で厳格な理屈を飲み込んでいるはずなのに、プログラム自体いろんな書き方ができるとは、厳密なのか曖昧なのかどっちかにしてくれ、なぜそんな無暗にどうとでも書けるようにしてしまっているのか、やりたいことが同じなら一意に書き方を決めれば良いじゃないか、人と人が手をつなぎあうのはそんなに難しいことか、と思っていた。
教授も生徒の自習を促す目的で複数の記述方法を紹介してくれていたものと思うし、
C言語の標準仕様決定に至るまでの紆余曲折や尽力された優秀な方々が議論を尽くした結果であるならそれで良いのだろうと思うし、
情報処理に対して不真面目なこともあり、授業を受けていた時には自分で深く掘り下げることをしなかったのでそれが悪いのだが、結局、卒業しても気持ち悪いままだった。
もちろん、人類が手をつなぐことの難しさは、高校生で歴史を選択した際に気づいてしかるべきだったので、それも結局、ただ私が不勉強だということだ。
卒業してもう5年以上経とうとする。
OSのふるまいについて腑に落ちてないことが気持ち悪く、冒頭の本を買った。
1/4くらい読み進んだあたりで、すんなり標題の気持ち悪さは解消された。この本の記述は、ポインタ概念をあるがまま受け入れるために必要な知識を書き下してくださっていると感じた。
併せて、黎明期の機械語直打ちからアセンブラを経て、C言語を使い始めた当初の先達プログラマ諸氏の目線と感動をいくらか分かち合えた気がして、気分が良い。
ところで、この本は700ページ近くある。まだ半分程度だが、冒頭から詳細・丁寧な説明が続いており、大変愛情が込められた良書と思う。
この本の校正に携わっていらっしゃった方が、近く現代的な内容で本を出版されるらしい。
『ゼロからのOS自作入門』に込めた思い - uchan note
またそのうち、OSわからん、となったころに手に取ってみたい。
なんにせよ、ポインタ概念無くなれなどとは、金輪際思いません。
自分が不勉強でした。すいませんでした。