アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
いい方に考えると (スコア:0)
ポインタバリバリ使ってバギーなコード書かれるよりはましかも。
卒業したらJavaに移行して貰えばいいし。
でもコンピュータサイエンティストなら、アセンブラはやって欲しいけどね。
Re:いい方に考えると (スコア:1, すばらしい洞察)
でも、同じ問題は結局JavaだのRubyだのでも生じますよね。ポインタつーか参照については。
単に症状の出方が違う(いきなりコアダンプするか、NullPointerなんたらExceptionが出るか、の違いというか)だけで。
ポインタって、その概念的原理(つまり、なにかがなにかを「参照」する)と、 C独特の構文と、
の2者さえ理解すれば、逆にいえばたいして難関でもないと思います。
あの程度のことを理解*できない*ような人ならば、情報系の学生だろうが仕事だろうが趣味(フリーソフトとか)だろうが
こっちとしてはちょっと
「ポインタ」は「参照」に非ず (スコア:1)
「ポインタ」は「参照」としても利用できるように設計されていますが、「参照」よりも遥かに広いポテンシャルを持った機構です。ゆえにバグの温床となる。
「ポインタ」はメモリアドレスを示す「値」(+型情報)、「参照」はもっと抽象的なオブジェクトやクラスなどを参照することができるデータ。
例えば、言語屋さんから見ると C 言語には "call by reference" がないように見えるそうです。C 言語が "call by reference" と称しているのは、アドレスを渡す "call by value"。
> でも、同じ問題は結局JavaだのRubyだのでも生じますよね。
コンタミは発見の母
Re:「ポインタ」は「参照」に非ず (スコア:2, 参考になる)
>と称しているのは、アドレスを渡す "call by value"。
C言語の文法と挙動を正確に理解できるようになるために学ぶ段階において、
C言語がcall by referenceだなんて考えたらドツボにはまっちゃうわけで。
あくまでcall by valueと考えるべき。
そう考えることで、初学者にもベテランにも言語屋さんにも、誰にとっても
矛盾なく使える(かつ、なにか重要なものを欠落させるわけでもない)モデルが
頭ん中に構築できるわけで。
言語屋さんには見える、
Re:「ポインタ」は「参照」に非ず (スコア:2, すばらしい洞察)
ただ,現実に多くの人がポインタの理解で苦しんでいるのは事実のようです.またC/C++のポインタはプログラムの解析を行う際にも様々な困難を引き起こすのですが,そのことも使うのが難しいということを裏付けていると思います.
Re:「ポインタ」は「参照」に非ず (スコア:1)
そりゃまあそうですが、ポインタについては、難しいですかね?
K&Rを正しく(=変に我流で憶測せずに字面どおりに寸分(?)違わず)理解すれば(^^;、べつに躓いた記憶が無いんですけど。
#逆にいえば、そういう「完全に信頼した上での」読み方が出来る本(や先生)がもし無ければ、辛いですけど。
ポインタの難しさは、なんというか、Fragileというか、触り方を間違えたら壊れる、という難しさは感じますね。
しかし、それは個々の手の動きレベルの問題で、それ以前の概念の段階では、別に難しくないような。
前述の四角モデル以上のものを必要だと感じたことが無いです。
#Cのポインタまわりの文法という意味では、難しいというか、煩雑というか、わけわかだとは思いますけどね(T_T)
>G7さんはおそらくJavaやLispに
>おける参照が,実装レベルでどのように(ある制約にしたがった)ポインタとして扱われているかを理解しているので,あま
>りC/C++でも困っていないのではないでしょうか(憶測モード).
うーん。動く言語(文法も内部表現も)を作った事が有る(実装手段はC)からには、理解してるってことになるんでしょーけど、
そういう問題じゃないような気がするなあ。
CもJavaも、全く同じじゃなく微妙に違うものの、どちらも四角モデルで表現できちゃうわけで。
>ただ,現実に多くの人がポインタの理解で苦しんでいるのは事実のようです.
現象としてそれは真ですが、理由の説明が正しいかどうかは別じゃないかな。
俺は、もっと違う理由によって、ポインタに躓く人が生まれてるんじゃないか、と思っています。
で、俺の邪推では、それは、誤解の伝播なのではないかと。つまり教える側が誤解してて
その誤解が生徒にも伝播する、のサイクルを繰り返してると。
あとは別口でも書いたような「都市伝説」問題かな。誤解を正さないまま放置してるという。
#ポインタは難しいというの自体が伝説だと思いますね。それを聞いた人がポインタの理解を途中で放棄しちゃう。
そしてその根底には、理解を我流の憶測で補完しようとする日本人(?)の悪癖の問題が、横たわっていると思う。
つまり、正しく(かつ出来れば平明に)教えてる人の言葉を、正しく聞けば、
そう簡単にハマらないようなプログラマになれると思うんですけどね。とりあえずポインタについては。
そういや逆にいえば、Cポインタだけじゃなく、Javaとかでいう意味の参照もまた、
理解に苦しんでいる人が結構居るようですよね。うーん。困ったもんだ。
#WWWが流行してるんだから、参照というもの自体が人間に理解しにくい、という訳じゃ無い筈なんだが…
>またC/C++のポインタはプログラムの解析を行う際にも様々な困難を引き起こすのですが,
>そのことも使うのが難しいということを裏付けていると思います.
うーん。解析ってのは、そのプログラムにおけるそのポインタの意味を「読む」ほうの問題ですよね?
一方でプログラマの卵(?)が悩むのはポインタの意味を「書く(作る)」ほうの問題ですよね。
読むのが楽(大変)なものと、書くのが楽(大変)なものとは、必ずしもイコールではない、のではないでしょうか?
Re:「ポインタ」は「参照」に非ず (スコア:0)
わかってるなら、もう少し読みやすく推敲してくれてもいいのに。
# 台風なので AC.