C++ | 23:17 前回の記事『プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ』でポインタの教え方を書きました。ソレに対して「そもそもどうしてポインタっていう仕組みがあるの?」という質問をもらったので、つらつらと書こうと思います。本稿は「ポインタがある理由の教え方」ではなく「ポインタがある理由」です。分かっている人には相当に退屈な文章ですのでそういう人は読まずにお帰りください。 で、えーと、結論だけ先に言うと省メモリ化のため、次に速度アップのため、そして生産... > このページを見る
最終更新時間:
2012年06月17日11時09分
みんなのブックマーク 人気(10) 新着
- しかしそれで良いのです。用途に応じて適切なプログラミング言語を使えば良いだけです。/だよなあ。ポインタの無い言語だけにしろとか道路上で走るものを全部スクーターにしろって言うようなもんなのに。
- 高級アセンブラだからで終わりませんか
- そもそもUNIXを開発するための作られた言語なんだからハードに近い仕様は当然なんじゃ。
- どっちかというとピュアなCは関数に参照渡しできない仕様なのでポインタがないと書き換えができないというのが本質的な理由じゃないか。返り値はあるが一つだけだし。コピー効率は最適化でなんとでもなりそう。
- デバックで中間ファイルのアセンブラを覗くとプログラムの根元にポインタがあるのがわかるんだけどね。
- ちょっと複雑なデータ構造やオブジェクトっぽい事をやろうとするとポインタ使うしかなくなるから、無理に最初から教える必要はないと思う。省メモリ化高速化は最後のチューニングでよくない?
- 「なんでC言語が必要なんですか?」みたいな事を100回疑問に思う暇があるなら、マイコンで簡易OSでも作った方が良い。手を動かせ!手を!
- この記事を読んだあと前回の記事を読み直したら合点がいった。プログラムって与えられたパラメーターを論理的にどう処理するかって事だけじゃなくて物理に近い層でどう扱うかまで指定する意味もあるんだね。
- いっそアセンブラ講座とかやると、いいのかもしれないなあ。 1 RT
- 俺が学生の時これ先に説明して欲しかったわ。いやほんとCPU設計やアセンブラから学ぶほうが理解速いのかもしれん。
- 最近は情報系の大学でCを教えないのかな?だから日本のソフトウェアはダメになったんじゃないかな。
- C言語が設計されたときの用途と時代背景を考えれば、ポインタを入れるのは自然だと思う。
- Cできないが参考になる。『コンピュータを使う以上、ぎりぎりまでハードウェアの能力を引き出したいという要求があるので、その領域を C 言語が担っていて、だからこそポインタという仕組みが搭載されているのです。
- この導入部分はすばらしい。ポインタ==空気な人にはポインタの必要性が説明できない。Q「なんでポインタが必要なの?」A「なかったらコード書けんだろ!」
- 「今どきポインタなんか使わざるを得ない C 言語を勉強するなんて終わってる」なんて言う奴は最初からC言語を覚える気なんて無いやつなのに生真面目に回答している点に頭が下がる。
- どんな言語でも、最後は CPU が理解できるマシン語として実行される、という事が実感できないんだろうなぁ。そこが実感出来れば、存在する理由も分かるし、他の言語が必死で隠している仕組みも分かる。
- 『用途に応じて適切なプログラミング言語を使えば良いだけです。』 / OSを作るために作られた言語という前提を抜いて(?)教えているのがいけないような
- 内容自体はちゃんと書かれているんだけど、きっとわからない人にはこの文章は難しいかもな・・・。エンジニアさんが書いた文章の感じ。
- この記事を読んだあと前回の記事を読み直したら合点がいった。プログラムって与えられたパラメーターを論理的にどう処理するかって事だけじゃなくて物理に近い層でどう扱うかまで指定する意味もあるんだね。
- RT C 言語にポインタがある理由は省メモリ化・高速化・開発作業の省力化です - 偏見プログラマの語り!
- C 言語にポインタがある理由は省メモリ化・高速化・開発作業の省力化です - 偏見プログラマの語り!
- 全然違う ヒントはアセンブラとサブルーチン。追記:そうかハードに近い仕様だからポインタが存在するって所の脈絡がわからない人が多いのか。スタックとかプログラムカウンタとか計算機のしくみを知ればわかるよ。
- ポインタは,省メモリと高速化のための仕組みなのか?配列型データ構造を扱うのに便利だからと思ってたよ。
- その3つはあくまで応用で、C言語においては可変長データを扱うのに致し方なくという感じが。
- ポインタを使う理由は、メモリを直接的に、動的に利用したいからでは?/省メモリ化、高速化、はアルゴリズムの影響が大きい。作業の省力化は、開発の仕方。いずれにしろ、ポインタとは遠いところにあるもの。
- ちょっと複雑なデータ構造やオブジェクトっぽい事をやろうとするとポインタ使うしかなくなるから、無理に最初から教える必要はないと思う。省メモリ化高速化は最後のチューニングでよくない?
- pointer
- 「なんでC言語が必要なんですか?」みたいな事を100回疑問に思う暇があるなら、マイコンで簡易OSでも作った方が良い。手を動かせ!手を!
- 俺が学生の時これ先に説明して欲しかったわ。いやほんとCPU設計やアセンブラから学ぶほうが理解速いのかもしれん。