내가 대학에 다닐 때 우리는 David Parnas의 초청 강연을 가졌습니다. 그 안에는 루프 (while 루프, for 루프 등)가 어느 시점에서 안전하게 종료되는 것을 보장하는 데 사용되는 메커니즘이 언급되어 있습니다. 그는 아무도 그것이 무엇인지 알지 못했다는 사실에 비웃었습니다. 슬픈 일은 몇 년 후 나도 몰라요. 누구든지이 메커니즘이 무엇인지 알고 있습니까?루프를 보장하는 메커니즘
답변
자신의 전문 분야 (정당한 교정 증명 포함)로 판단 할 때 루프 종료를 증명하는 데 사용되는 일반적인 기술인 loop variant을 의미한다고 생각합니다.
이 질문은 비논리적 인 것처럼 보입니다.
루프를 종료하는 데 필요한 한 가지 보장 조치가 없습니다. 즉, 카운터를 증가 시키거나 루프 내부의 카운터를 만지지 말고 최대치를 치는 등 사후 조건을 만드는 것 외에는 종료 할 수 없습니다.
루프가 너무 오래 걸리는 지 확인하기 위해 타이머 나 다른 구조를 만들 수도 있습니다.
여기 Parnas는 무엇을 의미합니까? 논리를 방해하지 않거나 적절한 사후 조건을 설계하지 않는 모든 루프를 보편적으로 종료합니까?
는- 가 무한으로 쓰지 마십시오 다른 사람이
심각하게 훈련으로 남아 있습니다
"알고있는 게시 조건 만들기"는 "루프 종료를 보장하는 한 사람"입니다. 이것은 모든 경우에 매우 쉽게 설계 할 수 있습니다. 실제로 ** 반드시 종료 조건을 설계해야합니다. –
루프 안전하게 종료 보장하는 방법에는 여러 가지가 있습니다 방법은 간단하게 유지하고 안정적이고 완전히 테스트 된 종료 조건 (즉, 다른 반복 또는 종료를 실행해야하는지 여부를 확인하는 코드)을 유지하는 것입니다.
설명한 내용은 해결책이없는 잘 알려진 문제인 halting problem으로 잘 번역 될 수 있습니다.
또한 구글 검색은 David Parnas가 University of Limerick에서 일하고 있음을 보여줍니다. 전화를 걸어서 대화를 요청할 수 있습니다. 나는 그가 여전히
+1 : 해지를 보장하는 디자인 원칙입니다. –
게스트 강사 Cycle Detection, 무한 루프를 검출하는 방법을 참조되었을 수 있습니다 :) 그가 다시 가르쳐 무엇을 배울려고 기뻐할 것입니다 확신합니다.
This blog post은 링크 된 목록의 무한 루프 감지를 설명합니다. 흥미롭게도 Wikipedia 기사와 같은 용어를 사용합니다.
- 1. 메커니즘
- 2. 페이징 메커니즘
- 3. 보관 메커니즘
- 4. for-loop 메커니즘 효율성 팁
- 5. AJAX 인코딩을 보장하는 방법
- 6. Silverlight에서 DB가없는 폴링 메커니즘
- 7. 정책 및 메커니즘
- 8. 내용 지배 구조 메커니즘
- 9. SQL의 drope 테이블 메커니즘
- 10. Facebook 문자셋 탐지 메커니즘?
- 11. Eclipse의 plugin.properties 메커니즘 RCP
- 12. PHP 현지화 메커니즘
- 13. 동기화 메커니즘 - Windows CE
- 14. RichTextBox의 FIFO 메커니즘
- 15. 종속성 삽입 메커니즘
- 16. 자바 캐시 메커니즘
- 17. 데이터베이스 동시성이 작동하는 메커니즘
- 18. 플렉스 4 레이아웃 메커니즘
- 19. 자바 확장 메커니즘
- 20. SCORM - RTE보고 메커니즘 보안
- 21. Grails의 검색 메커니즘
- 22. codeigniter 컨트롤러 메커니즘
- 23. C# 스레딩 메커니즘
- 24. 생성자 호출 메커니즘
- 25. 업데이트 메커니즘 이론
- 26. JSF 용 Acl 메커니즘
- 27. CodeIgniter의 정적 변수 메커니즘
- 28. ASP.NET 캐시 만료의 메커니즘?
- 29. Android 애플리케이션 IPC 메커니즘
- 30. 콤보 감지 메커니즘
나는 이것이 그랬다고 생각한다. 고맙습니다 –