nabeshinによる
2008年04月01日 14時46分の掲載
あるAnonymous Coward 曰く、
訂正も行われたが、根本的には直っておらず、再レビューとなっているようだ。ZDNetに C/C++のポインタの機能 — 参照渡しのような処理というポインタの解説記事があるのだが、 中身がなかなか香ばしい。コメントにもあるように、記事の間違いを探すということで ポイントを理解させるというネタには使えるのだろうか。
とのこと。現在、本稿には技術的な誤りが存在するため、詳細をレビュー中です。 初めてご覧になる方は、コメント欄もあわせてお読み下さい。 また、読者の皆様には引き続き、コメントなどでご意見を頂けましたら幸いです。
この議論は賞味期限が過ぎたので、保存されている。
新たにコメントを書くことはできない。
騙されました。 (スコア:4, おもしろおかしい)
4/1の記事としては、最高の出来だと思います。
「つまらない」のが最大の問題 (スコア:4, すばらしい洞察)
前向きに有効活用する方法を考える (スコア:4, おもしろおかしい)
署名スパムがウザい?アカウント作って非表示に設定すればスッキリさ。
3分? (スコア:2)
中途採用だと3秒で噴いてくれないと採用できないなぁ。
まぁ今年の新入社員で制限時間30秒だな。
# 甘やかしすぎかなぁ。10秒でいいかも。
親コメント
Re:3分? (スコア:2, すばらしい洞察)
「まさかそんなアホなヘマをやっている筈がない、きっとこれは引っかけ問題だろう」
と深読みしすぎてかえって見落とす可能性があるので3分。
署名スパムがウザい?アカウント作って非表示に設定すればスッキリさ。
親コメント
私が考える初心者向けのhello world!! (スコア:2, 興味深い)
一応書けるよ。
printf()は高機能かつ複雑なので
本当の初学者には向いてないと常々思ってたんだけど、
いい機会なのでさらしておこう。
このバージョンのほうが理解するのに必要な知識が少ないはず。
親コメント
つれたつれた (スコア:3, おもしろおかしい)
,~~~~~~ 、
|\ ( 釣れたよ~・・・)
| \ `~~~v~~~´
し \
゙'゙":"''"''':'';;':,':;.:.,., ヽ○ノ
~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ト>゚++
Re:つれたつれた (スコア:2, おもしろおかしい)
記事書いたライターはそのあたり解ってるのかな。
親コメント
歴史は繰り返す (スコア:2, 興味深い)
あって、買ってはいけないプログラミング教本の第一位に輝いたとか、
新入社員プログラマにはこの本で勉強した経験があるかを最初に確認し、
誤った知識を矯正せよ。
などと言われたものですが。
本のタイトルと著者が思い出せない...
Re:歴史は繰り返す (スコア:5, 参考になる)
「実習C言語」と「応用C言語」も含めた三部作
親コメント
Null 部門名 Exception (スコア:2, おもしろおかしい)
マジネタ (スコア:1)
天琉陳(Teruching)
see also (スコア:1)
Hiroki (REO) Kashiwazaki
これはひどい (スコア:1)
でも、自分がまったく理解していない言語の理解していない概念について、適当に聞きかじりと思い込みだけで記事を書くなよ、とは言いたい。
編集と著者の最低限の誠実さを疑う。
当該編集部と著者の名前は私の中ではブラックリスト入り確定です。
scanf (スコア:1, 興味深い)
さすがにこれは偏執狂ではないかと思うのだが・・・・・
ポインタの概念を教える授業でしっかり時間があれば
それは言及できるだろうが、このポインタの説明においては冗長だと思う。
その指摘を書いた人物は教師であると名乗っているが、
正確さを期そうとして、重要な事を述べる場面で注釈をいくつも付ける授業を行うのだろうか?
突っ込む側もポイントをしぼって突っ込んでもらいたい。
# だいたいからポインタの全てが2ページの記事で解説できるわけないじゃないか
# 概念の入り口の説明という認識にとどめるべき(まあそれも怪しかった訳だが・・)
# それに、俺たちが昔使ってた本にだって間違いは何かとあっただろ?
# 本や解説の間違いで行き詰まるのも勉強だと思うよ。
CとC++ (スコア:1)
単に
int n; // 整数型変数nを定義
int *p; // 整数ポインタ型変数pを定義
n = 5; // nに5を代入
p = &n; // pにnのポインタを代入
*p = 10; // pがポイントする変数に10を代入
見たいに書けば間違いも起こりにくくわかりやすい気がするんですけど。
本当にひどい記事だが (スコア:1)
Re:本当にひどい記事だが (スコア:2, おもしろおかしい)
その昔MS-DOSというメモリ保護のないOSがあってだな(以下3000コメントの懐古レス略)おそるべきことに「なんかnull pointer assignmentとか出てるけど動いてるんだからいいじゃん」という人たちが実在したんですよ。
親コメント
Re:本当にひどい記事だが (スコア:2, 興味深い)
親コメント
Re:本当にひどい記事だが (スコア:2, すばらしい洞察)
int*と書けば、「整数のポインタ型」という型として認識出きるので混乱が少なくなります。typedefとか使ってpintとかにするとより良い感じですね。
TAなどで指導する時にも、そのように説明してるんですけど、如何せん教科書と記法が違うのが最大の問題です。
*の意味が宣言時と参照時?では違うということをきちんと説明してない本や人が多すぎorz
親コメント
オプティマイザの魔法? (スコア:1)
もしかして無意識にオプティマイザに助けられていて意識するのを忘れていたとか?
-- やさいはけんこうにいちば〜ん!
Re:オプティマイザの魔法? (スコア:3, 参考になる)
実はその前の1行: が死ぬほどやばい。
%eax は main() 関数に入ってきて以来、初期化されていない。
その「どこを指しているんだかよく判らないもの」が指している所にドガンッと5を書いちゃってる。
これがヒープを壊しているのか、スタックを壊しているのかは判らないが(なんかヒープのどっかを指しているっぽい)、とにかく、どこかを壊しているのは間違いない。今回は小さなプログラムだったので、破綻が表出する前に終了しているのに過ぎない。
fjの教祖様
親コメント
レジスタ間接アドレッシング (スコア:1)
理解じゃいけないのでしょうか。
と、アセンブラで開発してた人間がつぶやいてみる。
…そもそもCの関数が値渡しなのって、引数を
スタックに積んでcallするからで、参照渡し
「みたいなこと」するにはポインタを値渡しする必要が
あるからだったのでは。
68kってlink,unlinkってそれ用の命令もあるし。
正義なんかじゃない、僕は真実が欲しい -= ありす ゆう =-
Re:まぁ、驚いたのは (スコア:2, 興味深い)
自分でプログラミングすることなんか全く無いんでしょうね。
親コメント
Re:まぁ、驚いたのは (スコア:2, すばらしい洞察)
自分の場合、C/C++ではポインタはメモリのどこかを指しているものという認識しかないですし、配列はメモリ上に連続してとられたスカラ値の集まりという認識しかないです(*1)。
だからポインタを持ってきて「スカラへの参照」「配列への参照」「反復子」として捉えることは無いですね。敢えて表現するならばポインタというものは一種類で「スカラ」「配列の先頭」「配列中のどこか」「ふめいなところ」を指していると捉えてる感覚でしょうか。
*1)なので、必ずしもメモリ上で連続していないようなコレクションの実装を指して「配列(もしくは Array)」と呼ぶのは違和感がある。
親コメント
Re:まぁ、驚いたのは (スコア:2, すばらしい洞察)
Javaが生まれたということはよく分かった。
優秀なエンジニア二人の手を止めてしまう訳か。
# お前らがポインタを知っている事はよく分かった。
# でも人に誤解しないように説明するスキルはそれと別だからな、ということ。
親コメント
Re:まぁ、驚いたのは (スコア:3, 参考になる)
> これら全然違う概念を一個で実現しようとする、そもそも無茶なキメラですよ。
別コメントにもあるけど、C言語には「反復子」「所有権」という概念はありません。アセンブラ的発想で考えれば理解は速いです。逆にアセンブラの経験がなければ難しいのかな?アセンブラの経験なくCを覚えるとどうなるか?は私には想像が付かないです。私がCを覚えたときにはCの吐き出したアセンブリを見て覚えましたが、当然ポインタで悩んだりつまずいたことはありませんでした。
> 配列の参照、スカラの参照
配列だって単にスカラー値がメモリ上に連続で並んでいるだけなのでその参照はスカラー値の場合と変らない、というのがCの概念。むしろC言語で「配列への参照」と言うと配列型へのポインタ(すなわちインクリメントするとメモリ上は配列の大きさ分飛ぶ)を指すと思います。例としては、
int (*)[3]
という型のこと。
Best regards, でぃーすけ
親コメント
Re:まあまあ (スコア:1)
技術系記事のライターって不足しているんですかね? Webの記事なら、「紙面に穴が開いたから急遽代理で…」なんてこともないと思うのですが。
それとも、今更C言語の記事を引き受けてくれるライターがいないってことかな。
親コメント
Re:まあまあ (スコア:2, 興味深い)
編集の人の能力がどうとかいうのはこの際どうでもいいんだけど、
それで終る話でもないんですよ。
笑い者になる/なっていると感じるかどうかは当人やこれらの話題を
見た人の印象しだいだし、この人の著書はこれからは避けようとか
思うのもそれぞれの自由。当人達が恥ずかしいと思ったら
記事を訂正した上で、これから精進すればいいだけの話。
(失った信用はなかなか取り戻せないと思うけど)
しかし、それとは別に、こういうのは見つけたらその都度
(というのもダルい話だが)徹底的にたたいて注意を喚起しとかないと、
気がつくと間違った知識がゴキブリみたいにはびこって大変なことに
なります。
そこらの野良サイトの素人の書きなぐり記事ならともかく、
れっきとした技術系サイトと一般的には思われるであろうZDNetに
載っているような記事だと、影響力が大きいでしょうし。
公共団体のサイトでが無断リンク禁止とか書かれていて
一般サイトでもそれにならってしまう件とか、どこかのサイトで
SSLについての誤った文章が書かれて、それがコピペされて
いろんなところで使われてしまったりとか、そんなところを
見つけて電凸しては指摘しているjbeef高木先生の苦労がしのばれます。
……なんて殊勝なことは考えたことなくて、実はおもしろおかしければ
どうでもいいんですけどね
#いや、それ、エイプリルフールで言ってみただけですから信用しないでね!
親コメント