Cの老害?

答えなんてでないのは承知の上で、
言及というかスタンスで。

ちょっと前に入門にCはどうよ、というネタで盛り上がっていた、というかネタの拡散に一役買っていた気もするのだけども、ふと自分が以前書いていたネタを思い出したのでリンクを張っておく。

「初心者とC」の話 - odz buffer

Cが初心者に優しくない、ということに対しては誰も異論はないと信じたい。
一番きついと思うのは、抽象化レベルが低すぎて低レベルな部分に関して知らないといけないことが多すぎること。勿論それにはそれなりの理由があるんだけれど、明らかにこれは初心者(とにはさん)の敵。

2007-08-02 - nihaaaaaaaa(のヮッ☆)

Cってそんなに難しいかなぁ、
抽象化もアセンブリに較べたらまともで超がつくほど高級言語だとは思うけどなぁ、
ってそういう話では無いんだろうけど、

Cは言語仕様も小さいし、
不便だからこそ色んなデータ構造を自分でつくろうとできるので、
良いと思うんだけどなぁ。(個人的にはですが)
ハッシュの実装とか楽しいよ。


というか、
真面目に話すとして選択肢が無かった時代は少なくとも「C言語」は易しい部類だったと思う。
普及度から考えて大多数のプログラマC言語を学んだ。
そして、様々なソフトウェアを作り出した。
これは確固たる事実として存在する。
C言語が難しいので素晴らしいソフトが作れません」なんて泣き言はなかっただろう。
時代の流れと共にプログラマが一斉に馬鹿になる筈もないのだから、
今でもそれなりに易しい筈だ。
もっと優しい言語がでてきたので影が薄いだけで。

C言語は言語仕様こそ小さいものの、配列やポインタや何やらが複雑すぎる。アセンブリとか書けちゃう子的には別になんてことではないのかも知れないけれど、現にCのポインタに関する書籍の多さを見れば…

2007-08-02 - nihaaaaaaaa(のヮッ☆)

あと、こんなことを言うとまたYoshioriさんに「Yoshioriの日記: ポインタも再帰も FizzBuzz も出来なくても良いと思うよ」の時のように怒られそうだけど、
まず配列がわからない子はプログラマにならなくて良い。
アルゴリズムとかデータ構造が理解できない子もプログラマにならなくて良い。


どうして配列がわからない子をプログラマにしないといけないの?
運転技術がなく理解もできてない人をタクシーのドライバや旅客機のパイロットにしたい?

熟練できないプログラマが溢れかえるような言語は優れていないのです。
(マニアには他人との差別化ができてご満悦でしょうが。)

と、こんなお言葉があったとわ。
熟練、熟達できない人が溢れかえるのは自然現象のようなもので、
もしそうさせたくないのなら、
きちんと体系だった知識を持っていないとプログラムを組むことさえ困難な言語にせざるを得ないですよね。
とか。
まぁ、そうすると普及しないんですけど。


普及した以上、使いこなせない人が増えるのは当然の帰結で、
みんなマスターになれるわけじゃない。


下層レイヤなんて興味ないし、
意識もしたくないんだよー的な叫びは分からないでもないけど、
そう叫んだところで組み込み機器が一斉にこの世から消え失せる訳でもないので、


「興味ない」と思っている人はWebとか上層レイヤを選ぶ。
「興味ある」と思っている人は組み込みとか下層レイヤを選ぶ。
どうせ、そのレイヤ層の中にも上澄みと沈殿物があるんだから。


著名なプログラマで「C言語しりませーん」なんて人は少数だろうとは思うけど、
無理をしてまで憶えるものでもないのも確か。
不要な人が大多数だろうし。


「学ぶべき」でもないけど「C言語なんて忘れちまおうぜ」ってな感じでもない。
いわば選べるようになっているだけで、
僕たちはただただ自由に選べば良い。


誰も「C言語をやれ」と強制したりはしないのだから。