Dijkstra의 모호한 프로그램 예


12

인사말. Dijkstra는 겉보기에는 단순한 코드 몇 줄조차도 절망적으로 모호 할 수 있다고 썼습니다. 내 생명을 구하기 위해 지금 찾을 수없는 최소한 하나의 작품에서 그는이 모호성을 보여주기위한 작은 예제 프로그램을 제공했습니다. 누구든지이 예제 중 하나를 포함하는 그의 논문을 지적 할 수 있습니까?

답변:


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 )

"휘슬러"는 한 번 또는 무 한번 휘파람 소리를 내나요?

경우] halts()함수는 함수 판단 whistler정지 표시 기능이 whistler정지 할 수 없다.

경우] halts()함수는 함수 판단 whistler중지, 함수 나타나지 whistler가 정지한다.

따라서 halts()함수가 존재할 수 없습니다.


4
세번째 옵션을 잊어 버렸습니다 FILE_NOT_FOUND
FrustratedWithFormsDesigner

2
감사! 내가 읽은 논문에서 Dijkstra가 묘사 한 것은 멈추지 않는 문제가 아닙니다. 간단한 코드 몇 줄에 불과하지만 그 의미를 알 수는 없습니다. 컨텍스트는 Dijkstra가 프로그래밍이 어렵다는 것을 청중에게 설명하기 위해 사용하는 방법에 대해 이야기하고 있기 때문에 프로그래머는 겸손해야합니다. 이 논문은 "The Humble Programmer"라고 말하는 것이 슬프지 않습니다. :)
Dijkstra Reader


다시 감사합니다. 안타깝게도, 그게 아닙니다. 내가 언급 한 논문에서 Dijkstra는 특히 영리한 사람들에게도 프로그래밍이 어렵다고 말합니다. "예를 들어 다음의 작은 프로그램은 무엇을 하는가?"
Dijkstra Reader

아마도 cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html이 아닙니다 . 그러나 나는 프로그래밍이 얼마나 어려운지에 대한 일반적인 인용으로 들어 올린다.
S.Lott

2

논문이 Dijkstra에 의한 것이 확실합니까? Ken Thompson의 Trusting Trust대한 고찰 은 생각했던 것 같습니다. 그것은 소스에서 전혀 보이지 않는 절대적으로 예기치 않은 일을 수행하는 방법이 간단하고 간단하며 올바른 프로그램임을 보여줍니다. 그것이 당신이 생각한 것이 아니더라도 읽을 가치가있는 종이입니다.

다른 방향으로 가고, 놀라운 행동을하는 짧은 프로그램의 훌륭한 예를 원한다면, 언더 핸드 C 콘테스트는 훌륭합니다. 예를 들어 2008 년 우승자를보십시오. 문제는 그림이 시각적으로 완전히 비워 지도록 그림의 일부를 비우는 명령 줄 프로그램을 작성하는 것이었지만 파일에는 이미지의 수정 된 부분에 대한 일부 정보가 유지됩니다. 그리고 코드가 코드 검토를 통과 할 수있는 방식으로. (사진이 저장된 형식을 선택할 수 있습니다.)


감사합니다! 예, Dijkstra의 논문입니다.
Dijkstra Reader 3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.