답변:
학계 밖에서는 ... AI에서, 때로는 게임에서 더 많이 사용한다고 들었습니다. (Black & White 시리즈에서 AI를 주도했다고 들었습니다). 또한 특정 비즈니스 및 경제 시뮬레이션을위한 규칙 엔진을 실행하는 데 사용되는 변형에 대해서도 들었습니다.
널리 채택되지 않은 것에 대한 나의 추측은 다음과 같습니다.
우리는 그것을 파서 (parser)를 구축하는데 사용했다. lex / yacc보다 작업하기가 더 쉬웠습니다.
왜 산업 사용량이 감지되지 않습니까?
이것은 대답 할 수 없습니다. "감지 가능"은 무엇을 의미합니까? 누가 탐지 메모를 받아야합니까?
http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp
사실을 원한다면 Meridian Software에 프롤로그 제공에 대해 문의하십시오.
그러나 내가 경험 한 몇 가지 장벽이 있습니다.
첫째, 프롤로그가 느려질 수 있습니다. 후보 규칙이 많고 검색 공간을 제한하는 간단한 절단 작업이없는 경우 무언가를 수행하는 데 시간이 걸릴 수 있습니다.
둘째, 프롤로그는 절차 적이거나 기능적이지 않으므로 많은 프로그래머가이를 사용합니다. (재미있게, 일부 프로그래머도 SQL을 사용합니다. 그 문제로 인해 일부 프로그래머는 SQL을 꺼리게 사용하고 조인 작업을 피하거나 COUNT(*)
마술처럼 비효율적 인 주장과 같은 이상한 일을 합니다.)
셋째, 프롤로그는 다양한 사례가 무엇인지에 대한 명확한 생각이 필요합니다. 절차 적 프로그래밍은 느슨 할 수 있으며 여전히 안정적으로 작동합니다. 실행 불가능한 명령문은 허용됩니다.
대부분의 서클에서 다음이 허용됩니다.
b = a + 1
if a > b: # always False
이런 종류의 어리석은 사고는 프롤로그에 어려움을 겪습니다.
한 가지 문제는 Prolog가 실제로 계산하기 어려운 1 차 술어 논리로 프로그래밍되지 않는다는 것입니다. 따라서 단순화입니다.
논리적으로, 제안은 사실로 입증되거나, 거짓으로 입증되거나, 어느 쪽이든 입증되지 않을 수 있습니다. 프롤로그는 단지 입증되고 입증되지 않았으며, "검증되지 않음"은 일반적으로 거짓을 의미합니다. 또한 Prolog 절의 순서는 실행에 영향을 줄 수 있으며 이는 논리 절의 경우에는 해당되지 않습니다. 필자가 사용한 과정에서 Prolog를 논리적 언어 이상의 패턴 일치 언어로 생각하기 시작했습니다.
따라서 프롤로그 프로그래밍은 프롤로그 언어 자체만큼 논리적 정확성에 크게 의존하지 않습니다. 몇 가지면에서 유용한 언어이지만 주류와는 거리가 멀고 C ++과 같은 언어의 도구 및 커뮤니티 이점을 얻지 못했습니다.