読者です 読者をやめる 読者になる 読者になる

C言語は何が難しいのか?

みずしまさんの指摘。

誰かが既に書いてた気もするんだが、「C言語が難しい」と言った時に、C言語特有の腐った宣言周りの構文および配列とポインタに関するセマンティクスが難しいのか、それとも一般的な配列とかポインタなどの概念の習得が難しいのかはちゃんと区別するべきだ。もっと言うなら、C特有の腐った宣言周りの構文やセマンティクスのせいで、配列やポインタなどの概念の習得につまづく可能性もあるだろう。この辺りのことを考慮せずに、(配列やポインタの習得につまづいている)プログラマに対する批判に行ってしまうのはどうなんだろう。

Mac OS X Server

確かにC言語における宣言周りの構文、というのは混乱を招きやすいとは思います。
*の表記などはまさにそうですよね。
宣言と実際に使うときに効果が違う訳で、初心者にとって

int *hoge;
*hoge = ...

の両者は意味が異なるのは理解の妨げとなる事が十二分に考えられます。
が、あえていうなら「決まり事」の範疇には違いないのでいかに構文が腐っていようと習得できない訳ではない、と言えます。
少なくとも僕はここで蹴躓くのならプログラマになることをやめる、ないしはC言語を学ぶ事をやめる事を選んでさえ良いと思います。
大抵の事は決まり事を憶える事から始まるのであって、それが理解できずにいるのであればそれをしないべきと(至極個人的には)思います。
というか、「憶えようと思えば憶えられます。駄目なら諦めましょう」では何故いけませんか?という素朴が疑問があります。(大学の講義だろうと諦めてくださいと言いたいです)
身勝手な意見を述べるなら、セマンティクスと概念を区別するまでもなく「駄目なら諦めましょう」です。


加えて、

あと、これはIsoparametricさんに対する名指しの批判になってしまうのだけど、妥当性に関する検討なしに、

運転技術がなく理解もできてない人をタクシーのドライバや旅客機のパイロットにしたい?

のような異なる分野のたとえ話を持ち出すのはよろしくないと思う。果たして、タクシーのドライバーにとっての運転技術と、プログラマーにとってのポインタや配列に対する理解は同じレベルのものなのだろうか。

Mac OS X Server

とこちらは不適切だったかもしれないです。
ただ、ポインタはさておき(無い言語もあるので)配列がない言語というのはそうそう存在しないわけで、
var1,var2,var3,var4,var5などと宣言しているプログラマがいたとして、
個人的にはこうしたプログラマに何かを作らせたり、作った物を使うのは非常に嫌だという想いがあります。
使う側、作らせる側は実装の詳細が見えないわけで、
これは運転手やパイロットに身を任せる乗客の心理に近しいのではないか、と思った訳です。
理解のレベル云々でなく「不安だ」という一言に尽きます。