점점 더 복잡 해지는 컴퓨터 프로그램과 점점 더 사회에서 컴퓨터의 중요성이 높아짐에 따라 코드가 올바르게 작동한다는 공식적인 증거를 제공해야하는 프로그래밍 언어를 집단적으로 사용하지 않는 이유가 궁금합니다.
이 용어는 '인증 컴파일러'라고 생각합니다 ( 여기서 찾았습니다 ). 코드를 작성해야 할뿐만 아니라 코드의 사양을 명시하고 코드가 코드를 준수한다는 것을 입증하는 프로그래밍 언어를 컴파일하는 컴파일러 사양 (또는 자동화 된 프로 버를 사용).
인터넷을 검색하는 동안 매우 간단한 프로그래밍 언어를 사용하거나 최신 프로그래밍 언어를 적용하려는 프로젝트가 실패했습니다. 이것은 내 질문으로 이어집니다.
완전한 프로그래밍 언어를 구현하는 인증 컴파일러가 있습니까? 아니면 매우 어렵거나 이론적으로 불가능합니까?
또한, 나는 복잡 클래스는 다음과 같은 증명 프로그램과 관련된보고 아직했습니다 '증거가 존재하는 튜링 기계에 의해 모든 언어의 클래스를 decidable가이 튜링 기계가 정지'나는 부를 것이다, 에 아날로그로, , 재귀 적 언어의 집합.
I 이러한 복잡도 종류 공부의 이점을 볼 수있다 : 예를 들어,에 대한 중단 문제가 decidable이다 (I에도 추측 명백한 방식으로 정의 된 것 결정 가능한 언어의 가장 큰 클래스). 또한, 실제로 유용한 프로그램을 배제 할 수 있을지 의심됩니다.
두 번째 질문은 다음과 같습니다.
포함 언어가 특정 속성을 가질 수 있어야하는 복잡성 클래스에 대해 무엇을 알고 있습니까?