1read 100read
2011年11月2期プログラマー24: ポインタを理解できないプログラマはもういらない (998)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
ポインタを理解できないプログラマはもういらない
1 :10/09/19 〜 最終レス :11/11/24 だそうだ。 42 名前: 仕様書無しさん Mail: sage 投稿日: 2010/09/18(土) 23:00:04 型 = ソケットとプラグの形状 ポインタ変数 = 延長コード ・延長コードは、電源と、電気を使う機器を間接的に繋ぐもの。 ・延長コードは、電源や機材から引き出す事も可能。 ・延長コードを介することで、データを他の部屋に渡すのが容易になる。 (電源も機器も持ちまわる必要が無い) ・延長コードから電力を得る事は可能だが、先が繋がっていなければ当然電気は来ない。 延長コードはあくまで何処にささってるかの情報しか持っていない。 電源を供給するのはあくまでその先にあるもの。 ・延長コードは、初期状態では得体の知れない電源に刺さってて、 下手につなぐと機器が壊れるから、安全の為にまず抜く(0を代入)のが望ましい。 47 名前: 仕様書無しさん Mail: sage 投稿日: 2010/09/18(土) 23:57:46 だからなんで余計わかりにくくするたとえを持ってくるのか それが本気でわかりやすいと思ってるんだろうか 51 名前: 仕様書無しさん Mail: sage 投稿日: 2010/09/19(日) 00:38:36 >47 そう思うなら、例えなくても良いから図解してみてくれ。
2 : わかりにくいたとえ使ってバカジャネーノ?
3 : VBで言うところのByRefみたいなもん?>ポインタ
4 : >3 それは『参照変数』 参照変数だとかならずその変数は別の何かと連動してるでしょ 別の何かと連動していない状態になりうるのがポインタ まず準備として、別の何かと連動させてから、その値をあつかわないといけない ここで『別の何か』はその場であたらしく作ったものでもいい
5 : ポインタが必要ない言語が多いのに覚えるべきと騒ぎ回る奴がいらない
6 : 覚える覚えない以前にこの程度が理解できないヤツは向いてないって話じゃねえの
7 : エンジンの燃費制御の仕組みが解らない奴は運転手やるな みたいな暴論だろ
8 : そんな難しい話か?
9 : 何も言わず去ろうかと思ったけど、別の例えを思い付いたので 専用スレでもあることだしリトライ。 変数(メモリ) … 紙 (あるいは書類) データ … 紙に書かれた内容 型 … 紙や書類の規格(あるいは書式) ポインタ … 全ての紙に自動で付く通し番号 (これもデータの一種) ポインタ変数 … ↑の通し番号専用の紙 (これも紙の一種。普通の紙とは規格が違うだけ) 配列 … 同一規格の紙の束 構造体 … 規格の異なる紙の組み合わせ(の規格) 値渡し = (関数が持ってる紙に)内容を書き写す ポインタ渡し = (関数が持ってる紙に)通し番号を紙に書き写す 参照渡し = 紙をそのまま渡す。 こんな何のヒネリも無い、そのまんまな例えを出し直すのもどうかと思いましたが、 >1みたいな、捻り過ぎで余計分かり辛い下手な例えを放置しておけないので… 批判やバッシングは素直に受ける(明示的に求められるか、説明以外ではレスしない)ので 遠慮せずどうぞ。
10 : 解ってない奴ほど例えたがるよなw 例えた方の奴しか理解してないから
11 : ポインタは熟練プログラマでも脆弱性を作りだしてしまうほど危険だから、近年の言語からは排除されているのであって、難しいからではない。 概念としては、ポインタよりも参照の方が難しい。
12 : 1よりは9のが比較的マシだけど やっぱり元々より分かり辛くなってる点は変わらないね 元々のものよりスマートにできなきゃ例える意味はないよ
13 : そりゃプログラマーじゃなくスクリプターだろ
14 : >>7 C言語ならポインタ解んないってのは、標識の意味わかんねってくらいじゃないか? ちょっといっしょに仕事したくないな。
15 : 標識なんてifやforのレベル
16 : >>15 if, forは、まさに、if, forのレベルだろ。
17 : ポインタ厨は夏休みまでだぞ
18 : ポインタ分からんやつは、Javaプログラマとしても無能。
19 : >>15 ifやforはハンドルとかアクセルのレベルだろ。 使えなかったらプログラムらしいものすら作れないぞ。
20 : 業務言語でポインタなんてもう出てこないし
21 : Javaではオブジェクトを指す変数は全部ポインタのようなものだぞ。 全部ポインタだからわざわざポインタだと明示しないだけで。
22 : メジャーな言語でポインタつかいまくるのはC/C++言語ぐらいしかないが、ポインタがよくわからないやつはマとしては問題外。
23 : >21 正しくは、ポインタは参照の一種で、C系の言語だけ(?)が 参照とポインタを別扱いしてるに過ぎない。
24 : >>9 紙っていきなりなんなんだよっ なんで紙なのか意味がわからん。 >ポインタ … 全ての紙に自動で付く通し番号 (これもデータの一種) 宝くじの事か?
25 : オレはあの娘のポインタをポイントしたい
26 : >24 >何で紙なのか 「例え」とは、「相手が良く知ってる物事になぞらえて説明する事」ですが、 「誰でも知ってそう」なもので、ポインタ他を巧くなぞらえる事ができそうな物として 真っ先に思い付いたのが紙その他だったから、です。
27 : >>26 紙に書き間違えたら破いて捨てるっってこと? シュレッダーにかけたらもうその紙には書けないよね? つまり紙=メモリっておかしくね?
28 : 普通は箱が例えに出されるよね。 固有の番号がふってある箱の中に番号の書いてある札が入っていて その札の番号が書いてある箱の中身はみたいな感じで。
29 : ??箱?番号?よけいにわからん
30 : メモリが箱でデータが紙。 一つの箱には一枚の札しか入らない。 メモリに値を書き込むのを箱に番号札を入れるのに例える。
31 : if (i == c){ と if (i* == c){ ってどう違うのさ?
32 : コンパイルが通る可能性があるかないかが違うんじゃないかな。
33 : 問1 int i=1 と i=1 の違いを答えよ。 問2 char *str = "test" と *str = "test" の違いを答えよ。
34 : こう例えれば良いんじゃないかな。 箱に番号札を入れる → 指定したコンデンサに電荷を充電/放電する 箱から番号札を出す → 指定したコンデンサの電圧を測る
35 : >>33 わかりません 教えて
36 : ていうかポインタなんてどうでも良くね? 全部変数にしときゃいいじゃん。わかりやすくて。
37 : >>33 なんか関係あんの? 書き込むスレ、間違えてねぇ? どっちも初期化と代入で違う。 問2の2つ目は、char **str;
38 : >27 鉛筆と消しゴムという便利な物があります。 >36 「ポインタ」はデータの一種、「変数」はデータを格納する容器です。 「ポインタ変数」を指して「ポインタ」と呼ぶ事はよくありますが、 厳密には両者は区別するべきです。
39 : ポインタが理解出来ないプログラマがいると言う時点で理解出来ん。
40 : ポインタポインタ言うけどメモリポインタの事だろ要するに そこの区別つけないでポインタが(笑)とか言ってる奴は単なるバカ
41 : めちゃポイーン
42 : こういうスレを立てる奴はポインタを最近ちょっと覚えたので 煽りたくて仕方ない奴
43 : >>40 いや、普通はCのポインタだと思うが、何の区別?
44 : Cのポインタってなんだよw Cのポインタには何種類かあってそのうちメモリポインタの話だろ?って事だろ
45 : >>44 「メモリポインタ」でないポインタって何? どんなポインタも、何らかのメモリのアドレスを指すと言うのに
46 : アドレスを指すってのは変だな アドレスが格納されていると言うべきか
47 : >>45 えっ
48 : >>42 すまんね、俺が立てた。 だけど、俺はポインタは全然関係ない。 >>9 のために立てた。
49 : >>44 Cのポインタじゃ分かりづらいか。 C言語の規格票で定義されているポインタだ。 その種類は強いて言えば型か値かが曖昧に使われてるぐらいだし、 少なくともX3010にメモリポインタなんて言葉は出てこない。 >>45 Cインタプリタの実装で変数のアドレス(&で返る値)が 配列のインデックスな処理系があったと思う。 何だったか忘れたけど一応「ANSI準拠」って 書いてあったよーな。
50 : >>45 関数ポインタ
51 : 誰か>>50 の翻訳頼む。
52 : >40 = >44 = >47 = >50 かな? だとしたらそうとう恥ずかしい奴だな。
53 : >>49 が一番見当外れだろ。
54 : ttp://en.wikipedia.org/wiki/Pointer_(computing)より >A memory pointer (or just pointer) is a primitive, >the value of which is intended to be used as a memory address; だそうで。この定義だと関数ポインタもメモリポインタ。 やっぱりメモリポインタでないポインタなんて無いんだね。
55 : ソースはwikipediaキタ━━(゚∀゚)━━ッ!!!!
56 : そういうお前はソースもナシと
57 : Cのポインタってのはおかしい罠
58 : 擁護も批判もしてないのに何のソースが要るのかと
59 : Cにポインタは必須だが、ポインタと言えばCというのは完全な間違い。 あとポインタと言えばメモリのことというのも間違い。
60 : ポインタはメモリだよ。 例えばメモリマップトI/O。 これはメモリにI/Oをマップしているから I/Oがメモリのように見える。 つまり、メモリ
61 : 普及前に訳者が指示子とかの訳語作っちゃえば良かったのにな。 そしたら変な解釈も少なかったかも
62 : >>60 えーと? 「一見メモリのように見えるものは全てメモリである」 と言ってるってことであってる?
63 : Cから始めたときはいくら本読んでも理解できなかったけど 8086アセンブラやってたら鮮明に理解できたな。 Cソースをアセンブラに展開したときのコードが頭に浮ぶぐらいだったし。 ようするに、別の物に置き換える例えほどわかりにくいもんはないってこった
64 : >48 今更ですが、タイトルはもうちょっと大人し目にして欲しかった。 >60 ポインタ≠メモリ ポインタ≒メモリアドレス ただし、例えばCであればポインタに+1すると、 アドレスは型に応じた分だけ増えますね? つまり厳密には ポインタ≠メモリアドレス だと分かるかと思います。 >63 例えってのは物事を教えたり覚えたりするのに、正規の道を歩まず 脇道をショートカットするようなものだから、覚え辛いのはあるかも。 ですが脇道を通らざるを得ない人も居るし、脇道の法が分かり易いって人も居ますから やっぱり良い例えは必要だと思いますよ。 脇道ばっかり薦めるのはアレですが。
65 : ポインタが理解できないんじゃなくて、ポインタを扱うときの演算子の 優先順位や結合方向を理解してないだけじゃない?
66 : >44 :名前は開発中のものです。 [↓] :2010/09/24(金) 19:51:08 ID:lAYv494o0 (20/20) [PC] >ポインタAを20に変更するように指示すれば、 >変数aも20に変更される。 > >変数aを30に変更するように指示すれば、 >ポインタAも30に変更される。 > >なんだが、だったらポインタなんていらないじゃん! >って思うかも知れないが、 >C言語のプログラムは・・というか、プログラムというものを引数という返し値というものを持っています。 > >ifでいう真が1で、偽が0。 > >これが引数(返し値) > >この返し値をポインタに入れるようにすれば、 >すべて丸く収まる。 > >int a=10; > >この場合、10が値 >その返し値は、ポインタに格納しよう。 > >このようにすれば、ポインタを表示するようにすれば、 >引数が表示される。
67 : 酷いなコレ。 どこのコピペ?
68 : >>67 同人3DRPGでググれ
69 : 稀に見る汚いコピペだな、読む気がしない。 誰か3行に要約してくれ。
70 : ポインタ云々の前に、まず日本語の文章としておかしすぎるw
71 : とりあえず6502でいいからアセンブラ書いてみ。 全部ポインタの概念使うから。 個人的にはポインタとlambda算法を理解してないヤツとは一緒に仕事はしたくねぇ。 お荷物なのが明白だからさ。
72 : おまえらスタックとかヒープとか分かってるのか?
73 : メモリに配置されます('A`)
74 : .NET系の人はよく知っているだろう。
75 : >>68 thx. 他の所も思いの他酷かった。
76 : でも今20歳代のプログラマってスタックオーバーフローとかしたことないだろうな、たぶん。
77 : >>76 そんなわけない。
78 : ヒープ:(積もり積もった)山 スタック:(積み重ねられた)山
79 : >>76 無限再帰すればすぐにスタックオーバーフローする。
80 : >>76 ×スタックオーバーフローとかしたことない ○スタックオーバーフローだと気付かない
81 : >>76 メモリなんてあるだけ使うだろ
82 : >>81 君だけは意味分かってない。
83 : >>79 「無限」は不可能。 安易に無限を使うな、と。そもそも可算無限なのか、非可算無限なのか? いずれにせよその無限に達する前に他の要因で止まるか暴走すると 思われるが。
84 : >>83 も微妙に分かってなくね?
85 : 再帰を使うと戻り番地をスタックに積み続けるから あっという間に自分の記憶域をつぶして暴走する 割り込みベクタまで無事に生存してたらリセット掛かってくれるかもね
86 : 最近のOSなら普通に止まると思うが。
87 : >>86 ポインタ大好きな組み込み屋ではないか?
88 : 無限ループって言うだろ、普通に。 スタックオーバーフローして止まるにしても、だ。
89 : >>84 微妙にというよりかなりが適切
90 : 現実的な概念から乖離したたんなる言葉遊び
91 : >>89 だよな 元の話(無限再帰)なんて単なるバグ、初歩的な設計ミスを揶揄してるだけなのに。 それこそ『スタックオーバーフローとかした(見た)ことない』ゆとりプログラマーなんだろう
92 : どんなプロでも、バグ作ったことはあるわけで、 スタックオーバーフローしてないのはありえないわけさ。 それはミスしたらスタックオーバーフローが起こるような たとえば再帰するコードを書いたことがない素人なわけ。
93 : 最近のOSはメモリ保護機能があるからって意味で書いたんだけど
94 : メモリ保護機能がOSにあろうがなかろうが、 スタックオーバーフロー起こすようなプログラムは ただのバグでしかないし、実行してもかならず止まる。 (昔と違うのは、その後の処理がOS上でどう扱われるかだけ) だから昔とか最近とか、結局あまり関係ないんだよ 素人乙
95 : 俺はバグなんて一回も作ったことないが。 さて素人はどっちかどうかね。
96 : そうだな バグじゃなくて仕様だからな 現代の技術では実現できなかっただけだ
97 : 素人さん程、やたらと他人を素人認定したがるよね
98 : すごいな、>>95 。どうやってるんだ?
99 : バグが一度もないだなんて、ホントすごいな どうやったらそんな風になれるんだ?
100read 1read 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲