2009-07-23 4 views
1

내가 대학에 다닐 때 우리는 David Parnas의 초청 강연을 가졌습니다. 그 안에는 루프 (while 루프, for 루프 등)가 어느 시점에서 안전하게 종료되는 것을 보장하는 데 사용되는 메커니즘이 언급되어 있습니다. 그는 아무도 그것이 무엇인지 알지 못했다는 사실에 비웃었습니다. 슬픈 일은 몇 년 후 나도 몰라요. 누구든지이 메커니즘이 무엇인지 알고 있습니까?루프를 보장하는 메커니즘

답변

2

자신의 전문 분야 (정당한 교정 증명 포함)로 판단 할 때 루프 종료를 증명하는 데 사용되는 일반적인 기술인 loop variant을 의미한다고 생각합니다.

+0

나는 이것이 그랬다고 생각한다. 고맙습니다 –

2

이 질문은 비논리적 인 것처럼 보입니다.

루프를 종료하는 데 필요한 한 가지 보장 조치가 없습니다. 즉, 카운터를 증가 시키거나 루프 내부의 카운터를 만지지 말고 최대치를 치는 등 사후 조건을 만드는 것 외에는 종료 할 수 없습니다.

루프가 너무 오래 걸리는 지 확인하기 위해 타이머 나 다른 구조를 만들 수도 있습니다.

여기 Parnas는 무엇을 의미합니까? 논리를 방해하지 않거나 적절한 사후 조건을 설계하지 않는 모든 루프를 보편적으로 종료합니까?

  1. 가 무한으로 쓰지 마십시오 다른 사람이

심각하게 훈련으로 남아 있습니다

  • , 최고 :

  • +0

    "알고있는 게시 조건 만들기"는 "루프 종료를 보장하는 한 사람"입니다. 이것은 모든 경우에 매우 쉽게 설계 할 수 있습니다. 실제로 ** 반드시 종료 조건을 설계해야합니다. –

    1

    루프 안전하게 종료 보장하는 방법에는 여러 가지가 있습니다 방법은 간단하게 유지하고 안정적이고 완전히 테스트 된 종료 조건 (즉, 다른 반복 또는 종료를 실행해야하는지 여부를 확인하는 코드)을 유지하는 것입니다.

    설명한 내용은 해결책이없는 잘 알려진 문제인 halting problem으로 잘 번역 될 수 있습니다.

    또한 구글 검색은 David Parnas가 University of Limerick에서 일하고 있음을 보여줍니다. 전화를 걸어서 대화를 요청할 수 있습니다. 나는 그가 여전히

    +0

    +1 : 해지를 보장하는 디자인 원칙입니다. –

    1

    게스트 강사 Cycle Detection, 무한 루프를 검출하는 방법을 참조되었을 수 있습니다 :) 그가 다시 가르쳐 무엇을 배울려고 기뻐할 것입니다 확신합니다.

    This blog post은 링크 된 목록의 무한 루프 감지를 설명합니다. 흥미롭게도 Wikipedia 기사와 같은 용어를 사용합니다.