アカウント名:
パスワード:
動いていても信用ならないバグはコピペで広がる何かあるとOSのせいになる
これまでのIMM32は、このフラグを親切にも無視し続けていた
最近はサンプルがサンプルであるがゆえにセキュリティ上脆弱であることを付記するドキュメントも増えましたが、これからは心あるプログラマは製品と同等にサンプルの品質にも気を配るべきなのでしょう。
サンプルコードには目的があるので、その目的にどれだけ合っているかがサンプルコードの品質として非常に重要です。目的を無視して、そのまま使えるかどうかだけをサンプルコードの品質として見るならば、役に立つサンプルコードは書けなくなるでしょう。目的に合っているかどうかも含めて品質と呼ぶなら、サンプルコードの品質が重要なのはもちろんですし、これまでも重要性は認識されていた
いえ、悪い方法だとおもいます。 このような説明では「どこで読むのをやめてもOK」なものを 示すべきです。
「べき」かどうかはスタンスの違いの問題です。僕は、入門書にもいろいろな種類があって良いと考えています。もちろん、どこで読むのをやめても間違った知識を持つことがないような入門書があっても良いですが、通読することを前提として、途中で読むのをやめたら間違った知識を持ってしまうかもしれないような入門書があっても良いと考えています。
他に書きようがないなら、せめてそこに脚注等をつけ、 後まで読まないとまずいことを明示すべきでしょう。
それも、「明示すべき」かどうかはスタンスの違いです。そのような状況で脚注等を付けない著者がいても、悪いとは僕は思いません。
ユーザが後ろの章まで読まずに、この部分を そもままコピペしたらどうなるのでしょうか? さらにそれが伝言ゲームで他人に伝わっていくとどうなるのでしょうか?
仮にそうなってしまったら不幸なことですね。でも、入門書を途中まで読んだだけでプログラミング言語を理解できたと考えるような人には、その入門書は向いていなかったというだけのことです。そういう人もいるからというだけの理由で、すべての入門書はこうあるべきなどと規定するのは、つまらないと思います。
そもそもあのコードはコンパイル時にウォーニングが出るだろうから、ちゃんと脚注なりなんなりで説明しないとダメだよね。コンパイラの警告を無視するプログラマーを養成するつもりでないなら。
忘れていました。確かに今だと gets なんか使ったら Visual C++ でも gcc でも警告が出るでしょうね。 #1226028 [srad.jp] の例が今の時代に合っていないことはわかりました。ありがとうございます。
当時のコンパイラーでは gets 標準関数を使っても警告は出なかったと思います (少なくとも僕が使っていた Quick C コンパイラーでは、警告レベル最大でも出た記憶がありません)。 #1226028 [srad.jp] は「当時、あのような例を最初の方に載せて、後ろの章で『プログラム 1.3 はじつは駄目だった』と書いていた入門書は、悪くはなかった」という趣旨だとご理解ください。今同じコードを使って同じ説明をしたら、ご指摘のように、コンパイラーの警告が出るのに無視して進めることになってしまうので、当時とは状況が異なります。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー
笑うしかない人と、笑うに笑えない人と (スコア:4, 参考になる)
本文に自分の感想をつらつら書くのもアレだったので省きましたが、個人的には、スライド [impress.co.jp]にある というのが印象的でした。最後のはともかく、上の2つは大変ごもっともで。
また、本文には とありますが、どちらかというと「APIのバグを直したら、そのバグに依存して異常動作を免れていた他のコンポーネントが動かなくなった」という、これまたありがちな事態なのではないかと思います。
Re:笑うしかない人と、笑うに笑えない人と (スコア:2, すばらしい洞察)
プログラミング解説書籍の脆弱性をどうするか
http://takagi-hiromitsu.jp/diary/20051227.html
サンプルというのはその重要性とはうらはらに気軽に書かれ、そのくせ多くの人にコピペされて使われるものです。
最近はサンプルがサンプルであるがゆえにセキュリティ上脆弱であることを付記するドキュメントも増えましたが、これからは心あるプログラマは製品と同等にサンプルの品質にも気を配るべきなのでしょう。
サンプルコードの品質 (Re:笑うしかない人と、笑うに笑えない人と) (スコア:5, すばらしい洞察)
サンプルコードには目的があるので、その目的にどれだけ合っているかがサンプルコードの品質として非常に重要です。目的を無視して、そのまま使えるかどうかだけをサンプルコードの品質として見るならば、役に立つサンプルコードは書けなくなるでしょう。目的に合っているかどうかも含めて品質と呼ぶなら、サンプルコードの品質が重要なのはもちろんですし、これまでも重要性は認識されていた
Re:サンプルコードの品質 (Re:笑うしかない人と、笑うに笑えない人と) (スコア:1, 参考になる)
>初めて「じつは第 1 章に書いてあったプログラム 1.3 には
>問題があったのです」などと説明されるわけです。
>全部一度に説明しても理解できないので、
>これは悪くない方法だと思います。
いえ、悪い方法だとおもいます。
このような説明では「どこで読むのをやめてもOK」なものを
示すべきです。
他に書きようがないなら、せめてそこに脚注等をつけ、
後まで読まないとまずいことを明示すべきでしょう。
ユーザが後ろの章まで読まずに、この部分を
そもままコピペしたらどうなるのでしょうか?
さらにそれが伝言ゲームで他人に伝わっていくとどうなるのでしょうか?
良い説明を書くには、穴がないように細心の注意を払います。
せめて教科書くらいは、そうあってほしいものです。
Re:サンプルコードの品質 (Re:笑うしかない人と、笑うに笑えない人と) (スコア:1)
「べき」かどうかはスタンスの違いの問題です。僕は、入門書にもいろいろな種類があって良いと考えています。もちろん、どこで読むのをやめても間違った知識を持つことがないような入門書があっても良いですが、通読することを前提として、途中で読むのをやめたら間違った知識を持ってしまうかもしれないような入門書があっても良いと考えています。
それも、「明示すべき」かどうかはスタンスの違いです。そのような状況で脚注等を付けない著者がいても、悪いとは僕は思いません。
仮にそうなってしまったら不幸なことですね。でも、入門書を途中まで読んだだけでプログラミング言語を理解できたと考えるような人には、その入門書は向いていなかったというだけのことです。そういう人もいるからというだけの理由で、すべての入門書はこうあるべきなどと規定するのは、つまらないと思います。
Re:サンプルコードの品質 (Re:笑うしかない人と、笑うに笑えない人と) (スコア:0)
Re:サンプルコードの品質 (Re:笑うしかない人と、笑うに笑えない人と) (スコア:1)
忘れていました。確かに今だと gets なんか使ったら Visual C++ でも gcc でも警告が出るでしょうね。 #1226028 [srad.jp] の例が今の時代に合っていないことはわかりました。ありがとうございます。
当時のコンパイラーでは gets 標準関数を使っても警告は出なかったと思います (少なくとも僕が使っていた Quick C コンパイラーでは、警告レベル最大でも出た記憶がありません)。 #1226028 [srad.jp] は「当時、あのような例を最初の方に載せて、後ろの章で『プログラム 1.3 はじつは駄目だった』と書いていた入門書は、悪くはなかった」という趣旨だとご理解ください。今同じコードを使って同じ説明をしたら、ご指摘のように、コンパイラーの警告が出るのに無視して進めることになってしまうので、当時とは状況が異なります。