ポインタは本当に難しく、プログラマになるのに大事な事なのか?

[開発]プログラマーになれる人となれない人
JavaBlack氏が書いておられたので、こそこそ便乗。

ポインタも再帰もそれほど難しいだろうか.いずれも基本中の基本だし,理解するのにさほど手間取った覚えもない.だからこれらが理解できることが,プログラマーの「才能」とか「素質」と呼ぶのに抵抗がある.

自分が昔から違和感を持っていた事、
「ポインタは難しいか?」
ぶっちゃけると難しくないですよね。
ポインタのない言語から入ったときに「参照」と混乱するかもしれないですが。
再帰は……スタック飽和に気をつければ特に悩むところが見あたらない。
(自分自身を呼び出す、っていうのがイメージしづらいのかもしれないですが)


実際何がそんなに難しいのか理解ができない。
演算? アクセス? それとも関数ポインタ?
メモリ上にある関数やデータを考えたとき、やはりそんなに難しい事には思えない。

当初はメモリをうまくイメージできないとしても、
それはC言語を使い続ける限りイメージを余儀なくされるし、
ポインタを扱う上でいったい何が障害になっているのだろう?
(イメージできない、というのはJavaからswitchした子から聞いた話)


まぁ、実ソース上で「ポインタのポインタのポインタのポインタのポインタの……」とかやられると訳がわからないこともあるかもしれないのですが、
そんなことはほぼない筈ですし。(ポインタの概念と関係ないしね……)
どちらかと言えば、汎用的なアルゴリズム、

  • 探索(線形探索/二分探索)
  • ソート
  • O記法
  • リスト(単方向/双方向)
  • ツリー
  • ハッシュ

について淀みなくとは言わないまでも、
正確に把握しており説明できれば「素養」があると言えるんじゃないかなぁとか。
「才能」や「素質」ではなく「素養」ですけども。

「なれる人となれない人」の差はプログラミングを楽しめるかどうか、
そして学ぶ気持ちがあるかどうかで、
なる気がない人がなれないのは当たり前なのかも。


あとは愛ですよ、愛。


このアルゴリズムの列挙は受け売りで、
プログラミング作法よりの抜粋ですけどもね。


プログラマになりたくない人を無理矢理プログラマにするのはやめようジャマイカ。
(誰にとでもなく)


あと確かに、

Fizz-Buzz問題はやりたくない問題の一つだな.あまりにも簡単な問題だから「出来て当たり前」で、「万が一間違えると恥ずかしい」から.

万が一間違えると恥ずかしいですよね^^;
とても共感。

プログラミング作法

プログラミング作法