アカウント名:
パスワード:
>メモリリークなんかのバグがあってもアウトプットが正しければ良い正しいのか?
まあ言いたい事は分かる。「個別の値に誤りがあったとしても定性的な傾向さえあっていれば良い」的な意味なんだろうけど。
公開されるつもりで書いたほうが論理的になるし、あとでバグを潰すことは大変な苦労をする。
「品質は作りこむものです」という言葉もあるしな。
>メモリリークなんかのバグがあってもアウトプットが正しければ良い 正しいのか? まあ言いたい事は分かる。 「個別の値に誤りがあったとしても定性的な傾向さえあっていれば良い」 的な意味なんだろうけど。
ぜんぜん分かってないってことが分かる。 メモリリークは、途中経過にしろ最終結果にしろ、数値の誤りを意味するものではない。 上出来なプログラムに比べれば、メモリリークするプログラムは実行中により多くの メモリを要求する筈だが、それを賄い切れる限り、単なるメモリリークだけでは 間違った数値を出力したりはしない。
上出来なプログラムに比べれば、メモリリークするプログラムは実行中により多くのメモリを要求する筈だが、それを賄い切れる限り、単なるメモリリークだけでは間違った数値を出力したりはしない。
理想的にはその通りですが、現実としてはメモリリークしているようなお粗末なメモリ管理をしているのに間違った数値を出力しないなどという主張には全く説得力がないです。論文の正当性を主張するのであれば、その論拠としているプログラムも説明可能でなければならないと思います。メモリリークしているようなプログラムで正当性を説明できるのか、甚だ疑問です。
> 理想的にはその通りですが、現実としてはメモリリークしているようなお粗末なメモリ管理をしているのに間違った数値を出力しないなどという主張には全く説得力がないです。
ソースを公開したくないのは、まさしくこういう揚げ足取りへの対応が面倒だと思うから。
> 論文の正当性を示すのはその結果のみ
結果ではなくて、手順(操作)が正当性を示すのではないの?
>論文の正当性を示すのはその結果のみであり、プログラムの品質ではないでしょう。
では、その「結果」を出すプログラムの正統性はどうやって示すので?品質が低くても出す結果は正しいです!その根拠は?ぶっちゃけコード公開するしかないよね。
# 読む方はつらいだろうけどさw
むしろ、人間が手作業でメモリ管理するなんて無駄で馬鹿げた間違いの起こりやすい作業にコストを費やしていたら、他の品質にしわ寄せがいっていないか心配になってきます。
動作上の不具合を招くものなら問題ですが、そうでなければ目くじらを立てるほどでもないように思います。C で malloc() はあっても free() がない計算ものとか、計算が終わるまでもてばいいみたいな戦略も理解できないではありません。実行要件として明記されているなら「それは仕様です」
メモリリークしてるようなソースは、他にも怪しいところ多そうだし、ポイント低いよねーぐらいのニュアンスなら諸手を挙げて同意します。
C で malloc() はあっても free() がない計算ものとか、計算が終わるまでもてばいいみたいな戦略も理解できないではありません。実行要件として明記されているなら「それは仕様です」
意図してfreeしない仕様になっているのならば、それはメモリリークではありません。freeしているはずがfreeされていないから、メモリリーク(メモリが漏れている)と呼ぶのです。
>> 理想的にはその通りですが、現実としてはメモリリークしているようなお粗末なメモリ管理をしているのに
研究ジャンルにもよると思いますけど,「科学者」という一般論で.
自分で使うだけであれば,大抵は「入力データの量を知っている→動的確保するメモリの量の見積もりもついている」という条件です.その条件であれば,「オレのPCの搭載メモリ量からすれば問題になるレベルの量じゃないし,この程度のメモリリークであれば気にしない」とか,本来は入力データ数に応じて決定すべき配列サイズを「どうせオレの持ってるデータ数は~しかないし」という理由で決
それは市販品の電卓の計算結果は正しいという暗黙の了解があるからでしょう。
# だからPentiumがバグった時は、一般人にはまず影響の無いレベルだったにも# かかわらず、あれだけ大騒ぎになったわけで。
ときどき聞かれます。「EXCELの数式と電卓の結果が違う、EXCELがおかしいんじゃないか?」実際は1/3*3のような式でEXCELは1、電卓は0.999999…になるというようなの。
あれ?0.9999999…=1だからどちらの計算結果も正しいのでは?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
公開したくないなぁ (スコア:1, 参考になる)
議論で公開しろと言われれば、しますけどね…
公開するならもう少し綺麗なコードにしたいし、その時間があるなら別のことをしたいというのが本音。
一応、プログラムが正しい結果を出すことはチェックしている…つもりなんですが…
学生さんに渡したプログラムに、卒論提出直前にとんでもないミスが見つかったことがあります。
Re: (スコア:0)
>メモリリークなんかのバグがあってもアウトプットが正しければ良い
正しいのか?
まあ言いたい事は分かる。
「個別の値に誤りがあったとしても定性的な傾向さえあっていれば良い」
的な意味なんだろうけど。
公開されるつもりで書いたほうが論理的になるし、あとでバグを潰す
ことは大変な苦労をする。
「品質は作りこむものです」という言葉もあるしな。
Re: (スコア:3, すばらしい洞察)
ぜんぜん分かってないってことが分かる。
メモリリークは、途中経過にしろ最終結果にしろ、数値の誤りを意味するものではない。
上出来なプログラムに比べれば、メモリリークするプログラムは実行中により多くの
メモリを要求する筈だが、それを賄い切れる限り、単なるメモリリークだけでは
間違った数値を出力したりはしない。
Re:公開したくないなぁ (スコア:2)
理想的にはその通りですが、現実としてはメモリリークしているようなお粗末なメモリ管理をしているのに間違った数値を出力しないなどという主張には全く説得力がないです。
論文の正当性を主張するのであれば、その論拠としているプログラムも説明可能でなければならないと思います。
メモリリークしているようなプログラムで正当性を説明できるのか、甚だ疑問です。
Re:公開したくないなぁ (スコア:2, すばらしい洞察)
> 理想的にはその通りですが、現実としてはメモリリークしているようなお粗末なメモリ管理をしているのに間違った数値を出力しないなどという主張には全く説得力がないです。
ソースを公開したくないのは、まさしくこういう揚げ足取りへの対応が面倒だと思うから。
Re:公開したくないなぁ (スコア:1, すばらしい洞察)
リークが発生しているからこの結果は間違っている、信用できない、と言う主張の方が説得力がありませんよ。
Re:公開したくないなぁ (スコア:1)
> 論文の正当性を示すのはその結果のみ
結果ではなくて、手順(操作)が正当性を示すのではないの?
Re: (スコア:0)
>論文の正当性を示すのはその結果のみであり、プログラムの品質ではないでしょう。
では、その「結果」を出すプログラムの正統性はどうやって示すので?
品質が低くても出す結果は正しいです!その根拠は?
ぶっちゃけコード公開するしかないよね。
# 読む方はつらいだろうけどさw
Re: (スコア:0)
>品質が低くても出す結果は正しいです!その根拠は?
他者が同じアルゴリズムでプログラムを作って、追試、検証するんじゃないでしょうか?
#元コメントは「適当に着ている普段着をネットに公開するのは恥ずかしい」っていうのと同じ感覚では?
Re: (スコア:0)
コードを読むよりもずっと簡単ですし、コードを読んでも間違いが見つかるとは限りませんから。
Re: (スコア:0)
オモチャみたいなプログラムならともかく、スパコンぶん回した結果の追試なんてそうそうできるかい。
Re: (スコア:0)
スパコンであろうと特別な物じゃないんだから。
時間がかかる、というのは言い訳にならないよ。
Re: (スコア:0)
Re: (スコア:0)
むしろ、人間が手作業でメモリ管理するなんて無駄で馬鹿げた間違いの起こりやすい作業にコストを費やしていたら、他の品質にしわ寄せがいっていないか心配になってきます。
malloc and free (スコア:0)
動作上の不具合を招くものなら問題ですが、そうでなければ目くじらを立てるほどでもないように思います。
C で malloc() はあっても free() がない計算ものとか、計算が終わるまでもてばいいみたいな戦略も理解できないではありません。
実行要件として明記されているなら「それは仕様です」
メモリリークしてるようなソースは、他にも怪しいところ多そうだし、ポイント低いよねーぐらいのニュアンスなら諸手を挙げて同意します。
Re:malloc and free (スコア:2)
意図してfreeしない仕様になっているのならば、それはメモリリークではありません。
freeしているはずがfreeされていないから、メモリリーク(メモリが漏れている)と呼ぶのです。
Re: (スコア:0)
|間違った数値を出力しないなどという主張には全く説得力がないです。
メモリリークするようなお粗末な処理系(プログラミング言語)を使っている方が問題です
ガリガリ数値計算するならクラシックなFORTRAN使えば良いし、FORTRANで必要十分です
(本当に動的なメモリ・アロケーションをする・出来る処理系使わなきゃいけない数値演算してるのか?)
Re: (スコア:0)
Re: (スコア:0)
#って話でしょ
Re: (スコア:0)
>> 理想的にはその通りですが、現実としてはメモリリークしているようなお粗末なメモリ管理をしているのに
研究ジャンルにもよると思いますけど,「科学者」という一般論で.
自分で使うだけであれば,大抵は「入力データの量を知っている→動的確保するメモリの量の見積もりもついている」という条件です.その条件であれば,「オレのPCの搭載メモリ量からすれば問題になるレベルの量じゃないし,この程度のメモリリークであれば気にしない」とか,本来は入力データ数に応じて決定すべき配列サイズを「どうせオレの持ってるデータ数は~しかないし」という理由で決
Re: (スコア:0)
逆にアルゴリズムが間違ってればどんなに正しくプログラミングしても正しい結果は出ません。
正しいアルゴリズム≠正しいプログラムですよ。
プログラムはあくまで「計算機」でしかないので、
重要なのは計算式とその結果であって「計算機」の動きではないのです。
貴方は電卓で計算する時に「電卓の正当性」を検証はしないでしょう?
Re: (スコア:0)
それは市販品の電卓の計算結果は正しいという暗黙の了解があるからでしょう。
# だからPentiumがバグった時は、一般人にはまず影響の無いレベルだったにも
# かかわらず、あれだけ大騒ぎになったわけで。
Re: (スコア:0)
ときどき聞かれます。
「EXCELの数式と電卓の結果が違う、EXCELがおかしいんじゃないか?」
実際は1/3*3のような式でEXCELは1、電卓は0.999999…になるというようなの。
Re: (スコア:0)
あれ?0.9999999…=1だからどちらの計算結果も正しいのでは?