あいまいなプログラムのダイクストラの例


12

あいさつ。ダイクストラは、一見単純なコードの数行でさえ、絶望的にあいまいになる可能性があると書いています。私の命を救うために今は見つけられない少なくとも1つの作品で、彼はこのあいまいさを示すための小さなプログラム例を提供しました。誰かが彼がこれらの例の1つを含む彼の論文に私を指すことができますか?

回答:


11

これを読む:

http://en.wikipedia.org/wiki/Halting_problem#Recognizing_partial_solutions

http://www.cs.ucsb.edu/~pconrad/cs40/08S/notes/にはすばらしい記事があります。「停止問題」の検索

本質的な停止矛盾にはいくつかの形式があります。

def halts( code_block ):
    # Some magical code

def whistler():
    while halts(whistler): 
        sys.whistle( 1 )

「ホイッスラー」は、0回、1回、または無限回鳴りますか?

halts()関数whistlerが停止しているように見えると関数が判断した場合、関数whistlerは停止できません。

halts()関数whistlerが停止していないと判断した場合、関数whistlerは停止します。

したがって、halts()関数は存在できません。


4
3番目のオプションを忘れてしまいましたFILE_NOT_FOUND;)
FrustratedWithFormsDesigner

2
ありがとう!しかし、私が読んだ論文でダイクストラが説明していたのは、停止する問題ではありませんでした。それは単純なコードのほんの数行ですが、それが何を意味するかわかりません。文脈では、ダイクストラは、プログラミングが難しいことを聴衆に示すために使用する方法について話しているため、プログラマーは謙虚でなければなりません。この論文は「謙虚なプログラマー」ではないことに注意してください。:)
ダイクストラリーダー


再度、感謝します。悲しいことに、それはそうではありません。私が言及している論文の中で、Dijkstraは、プログラミングは難しいと言っています。賢い人でさえ、「たとえば、次の小さなプログラムは何をするのでしょうか?」
ダイクストラリーダー

おそらくcs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.htmlではありませ。しかし、プログラミングがいかに難しいかについての一般的な引用として取り上げています。
-S.ロット

2

論文はダイクストラによるものだと確信していますか? ケン・トンプソンによる信頼への反省は、あなたが考えていたものであるように思えます。絶対に単純で、簡単で、正しいプログラムが、ソースにはまったく表示されない絶対に予期しないことを実行する方法を示しています。あなたが考えていたものではない場合でも、読む価値のある論文です。

別の方向に進んで、驚くべき振る舞いをする短いプログラムの優れた例が必要な場合、人手不足のCコンテストは素晴らしいです。たとえば、2008年の受賞者を見てください。課題は、画像の視覚的に完全に空白になるように、画像の一部を空白にするコマンドラインプログラムを作成することでしたが、ファイルには画像の編集部分に関する情報が保持されます。 そして、あなたのコードは、コードレビューに合格するような方法インチ (画像を保存する形式を選択できます。)


ありがとうございました!はい、それは間違いなく私が言及しているダイクストラの論文です。
ダイクストラリーダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.