Prolog 는 논리 프로그램 언어로서, 그 명칭은 programmation en logique (프랑스어로 "logic programming" 이라는 뜻) 에서 따온 것이다. 1972년에 프랑스의 Marseille (마르세이유) 대학에서 Alain Colmerauer 가 발명하였다. 컴퓨터상에서 독특한 명령어를 사용하는 것 대신에 인간이 사용하는 논리적 표현을 가능하게 한 프로그램 언어를 만들려는 시도에 의한 것이다.

lab   paper   site   Lisp

Prolog 는 많은 인공지능 (Artificial Intelligence) 프로그램과 전산언어학 (Computational Linguistics) (특히 원래는 자연어처리 (Natural Language Processing) 를 위해 만들어 졌다) 에서 사용된다. 문법과 의미 (syntax and semantics) 는 매우 단순하고 명확하다고 생각된다. (원래의 목적은 컴퓨터에 문외한 (computer-illiterate) 인 언어학자를 위한 툴을 제공하는 것이었다). Prolog를 현대적인 모습으로 이끈 많은 연구는, 5 세대 컴퓨터 (Fifth Generation Computer) 프로젝트에서 그 운영체제를 위한 핵심언어 (Kernel Language) 로서 다양한 Prolog를 선택하였던 것의 파급효과 (spin-off effects) 이었다.

Prolog 는 술어논리 (Predicate Calculus) (더 정확하게는 일차논리 (First-order Predicate Calculus)) 에 기반한 것이다 ; 그러나 Prolog 는 단지 Horn 절 (Horn clause) 만을 허용하는 제한이 있다. Prolog 프로그램의 실행은 first-order resolution 에 의한 정리증명 (Theorem Proving) 을 효율적으로 응용한 것이다. 기본적인 개념들은 단일화 (Unification), tail recursion, 역추적 (backtracking) 이다 ....... (Wikipedia : Prolog)

Prolog 는 Programming in Logic의 약자로 1971년에 프랑스의 Marseille(마르세이유) 대학에서 Alain Colmerauer 와 Phillipe Roussel 에 의해 고안되어 1972년에 ALGOL-W 로 최초로 구현되었다. 원래는 자연어 처리를 위해서 설계되었지만 AI를 위해 가장 널리 사용되는 언어중 하나가 되었다. 술어논리(predicate logic)로 명제를 표현하고, 논리연산 기능을 겸비한 언어이다. Lisp 과 같이 Prolog는 심볼 처리용으로 만들어지고, 리스트 처리는 매우 효율적이다.  Prolog의 큰 장점은, 입력문을 절 형식으로 나타내고 연역추론을 한다. 패턴 매칭을 입력문의 차례대로 함으로써 도출(resolution)의 전략을 사용자에게 맡겨서 시스템의 복잡성이 해소되고, 속도가 향상된다. 병렬탐색에 적합하게 설계되어 있기 때문에 병렬처리가 주요 요소가 될 미래의 컴퓨터에 적합한 언어로 여겨지고 있다  

video :

Production Prolog : Strange Loop : Michael Hendricks, 2014/09/21