2007年06月13日(水) [過去の今日]
#1 C言語のポインタが難しくて挫折した経験
プログラマーになれる人なれない人 という記事を読んでて、ポインタと再帰が難しいという話が出てきた。
俺が昔、プログラミングができなかった頃、C言語にチャレンジして挫折したのは、やはりポインタだった。
解説書を読み、「ポインタはデータのメモリアドレスが参照できるもの」みたいな説明を読んでああなるほどね、と簡単に理解した。プログラミングができないとはいっても、BASICでゲームを作って遊んでた事はあるし、マシン語でメモリの特定番地から何バイトデータをもってくるみたいな事はやってたから、別にメモリアドレス云々はすぐ理解できた。
が、俺はここで悩み込んでしまった。みんなポインタは難しいって言ってる。理解できないって言ってる。俺はポインタをメモリ番地だと理解したけど、それで合ってるのか? メモリアドレス以外の何かがあるのか? もしかして俺はとんでもない勘違いをしてるのか? どういうことなんだ? わからない、ポインタってなんなんだ!
その後、perlでreferenceという概念に出会い、それと同じようなものかと思ったのだが、C言語を理解してる友人には違うものだと言われた。もうさっぱりわからない。
結局いまだにCを使う機会もなく、ポインタという概念を本当に俺が理解してるのかもよくわからない。OpenSSLのソースを追っかけてて、ポインタの参照先が関数になってたりしてるのを見て、いろんな使い方ができるもんだなあと感心した程度。PerlやJavaScriptでも変数に関数を放りこんだりはできるし、そのメモリ番地にロードされてるものがデータかプログラムかなんてたいした違いでも無いだろうから、別にそのへんは不思議に思ったりはしないけども。
とりあえず俺はいま、スクリプトを書いてお金を頂くようになったけども、プログラマに向いてるのかどうか、プログラマになれているのかどうかはよくわからない。Cを書くことがこれからあるのか、それもわからない。
ただ、これからもキーボードを叩いて生きて行きたいと思っている。
(@083)