실제로 컴퓨터 프로그램을 생성하는 시스템 (단순한 예제가있는 종이에 대한 소프트웨어 또는 자세한 설명)을 작성한 사람이 있습니까? I 입력 그것을 나열 소수 10 미만있는 프로그램을 만들어 간단하게 정의 교수들은 그들이 할 수는 있지만 실제적으로 완전한 예를 제시하는 사람은 아무도 없다고 말합니다.
실제로 컴퓨터 프로그램을 생성하는 시스템 (단순한 예제가있는 종이에 대한 소프트웨어 또는 자세한 설명)을 작성한 사람이 있습니까? I 입력 그것을 나열 소수 10 미만있는 프로그램을 만들어 간단하게 정의 교수들은 그들이 할 수는 있지만 실제적으로 완전한 예를 제시하는 사람은 아무도 없다고 말합니다.
답변:
프로그램 생성의 완전한 자동화에는 본질적인 한계가 있지만 (인간은 더 나을까?) 매우 유망한 연구 주제이다. 그러나이 아이디어는 많은 단계를 기계화하고 프로그램 생성의 정확성을 자동으로 확인하여 프로그램 작성을 상당히 지원하는 데 여전히 유용합니다.
이것은 컴퓨터 프로그램과 수학 증명이 매우 유사하다는 것을 보여주는 Curry-Howard 대응 (또는 동형) 이라는 논리의 결과와 밀접한 관련이 있습니다 .
아이디어는 시스템이 증명할 정리로 프로그램 사양을 취한다는 것입니다. 예를 들어, "비공식적으로": "10보다 작은 모든 소수 집합이 있습니다"와 같습니다.
그런 다음 정리를 증명하려고 시도하고 기존 시스템이 증거를 수행하고 일부 부분, 전체 증거를 자동화하고 오류가 발생하지 않도록 도와줍니다.
그런 증거로부터 처음에 지정된 소수의 원하는 목록을 실제로 계산하는 프로그램을 추출 할 수 있습니다.
과거에는 이러한 아이디어를 설명하기 위해 여러 시스템이 개발되었습니다. 잘 알려진 중 하나였다 LCF 에 의해 로빈 밀너 언어 생성, ML 그 목적으로한다. 현재 가장 진보 된 시스템 중 하나는 Coq 입니다.
완전히 해결 된 예가 있으며 그중 일부는 상당히 복잡합니다. 다음 기사 에서 일부를 찾을 수 있지만 간단한 읽기는 아니며 Logic에 대한 고급 지식이 필요합니다.
그 대답은 그렇습니다. 그러나 글을 쓰는 시점에, 대부분의 사소한 프로그램의 경우 사양은 프로그램처럼 작성하고 디버깅하기가 어려운 것 같습니다.
더 심각한 것은 babou의 대답은 좋지만 종속 유형의 영역을 확인하는 것이 좋습니다. Coq를 사용하는 다소 좋은 책 이 있습니다 (면책 조항 : 내 친구가 작성) Epigram, Agda 및 Idris도 있습니다. Isabelle / HOL도 체크 아웃 할 가치가 있습니다.
이것들은 모두 건축의 미적분학을 기반으로합니다. 이론적 근거를 알고 싶다면 Martin-Löf 유형 이론을 찾아보십시오. 주변에 좋은 소개가 있습니다.
논리 프로그래밍 ,보다 일반적으로 선언적 프로그래밍 은 제안한 것을 정확히 전제로합니다. 즉, 논리 사양에서 해당 사양을 충족하는 결과를 반환합니다.
당신이 제공하는 "10 미만의 프라임"예제를 구체적으로 다루는 것 중 하나는 Constraint Programing (제한 프로그래밍) 입니다.
그러한 시스템의 특정 (오픈 소스) 구현 을 위해 ECLiPSe 를 사용해 볼 수 있습니다 .