アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
まぁ、驚いたのは (スコア:0)
指摘されても問題が何か理解出来ていない編集にはビックリだな
Re: (スコア:2, 興味深い)
自分でプログラミングすることなんか全く無いんでしょうね。
Re: (スコア:1, すばらしい洞察)
ポインタがいまいち理解できない人には朗報だ。
Re: (スコア:0, すばらしい洞察)
それで正しいと思います。
Cのポインタは、
- スカラ値への参照
- 配列への参照
- 動的オブジェクトの所有権管理
- 反復子
これら全然違う概念を一個で実現しようとする、そもそも無茶なキメラですよ。
私はC++使いなんですが、C++なら、状況によって参照やスマートポインタや反復子を使い分けるところです。
理解しようとするとかえって遠回りだと思います。
Re:まぁ、驚いたのは (スコア:3, 参考になる)
> これら全然違う概念を一個で実現しようとする、そもそも無茶なキメラですよ。
別コメントにもあるけど、C言語には「反復子」「所有権」という概念はありません。アセンブラ的発想で考えれば理解は速いです。逆にアセンブラの経験がなければ難しいのかな?アセンブラの経験なくCを覚えるとどうなるか?は私には想像が付かないです。私がCを覚えたときにはCの吐き出したアセンブリを見て覚えましたが、当然ポインタで悩んだりつまずいたことはありませんでした。
> 配列の参照、スカラの参照
配列だって単にスカラー値がメモリ上に連続で並んでいるだけなのでその参照はスカラー値の場合と変らない、というのがCの概念。むしろC言語で「配列への参照」と言うと配列型へのポインタ(すなわちインクリメントするとメモリ上は配列の大きさ分飛ぶ)を指すと思います。例としては、
int (*)[3]
という型のこと。
Best regards, でぃーすけ
Re: (スコア:0)
アセンブラをやってからCを学んだ人は、アセンブラを学ぶときに苦労しC言語を学ぶとき「なんだ一緒じゃないか」と思い、C言語を学んでからアセンブラをやったひとはC言語を学ぶときに苦労しアセンブラを学ぶとき「なんだ一緒じゃないか」と思う。それだけの差だと思う。C言語も各種アーキテクチャのアセンブラも言語本体は非常に小さく、理解が必要なのはむしろ両者に共通したコンピュータの仕組みの方なので。
ただ、CからアセンブラかC++からアセンブラかの差は大きいかもしれない。C言語はコンパイルしたらどんなアセンブラになるか想像しながら書くような場面で使われることも多いのに対し、C++ではシンボル名の命名ルールが標準化されていないためアセンブラと組み合わせて書くことが難しく、アセンブラレベルのことは考えないでプログラムを書くのが一般的なように思う。
# by C言語をやってからアセンブラをやったAC
Re: (スコア:0)
そうでしょうか?
私は逆に、プログラマが必要とする反復子や所有権、参照の概念を、Cではポインタを使って
実装していると考えます。一部、#1323484 [srad.jp]に書きましたが、これらは本来
別のふるまいをする別のものなのに、C言語の制限から、同じ書き方をせざるをえなくなっているだけです。