논리 프로그래밍
어떻게 계산할지 적지 않아도 프로그램이 될까?
화면을 누르면 다음 장으로 넘어갑니다
1강에서 본 갈래
이번 강은 논리형 언어입니다
1강에서 언어의 갈래를 보았습니다. 명령형은 변수의 값을 바꿔 가며 계산하고, 함수형은 함수에 값을 넣어 결과를 받습니다. 논리형 언어(logic language)는 사실과 규칙을 적어 두고 물으면 언어가 답을 찾습니다.
논리형의 대표 언어는 Prolog입니다. 이 강의 뒤쪽에서 다룹니다.
명령형과 논리
어떻게 대신 무엇이 참인지
명령형 언어에는 계산하는 순서를 한 줄씩 적습니다. 논리 프로그래밍(logic programming)에서는 무엇이 참인지만 적고 질문을 던집니다. 답을 찾는 일은 언어가 합니다.
예시입니다. father(bill, jake).는 'bill은 jake의 아버지다'라는 뜻이고, 대문자 X는 찾으려는 값의 자리입니다.
선언적
절차가 아니라 결과의 모습을 적습니다
논리 언어의 프로그램은 기호로 쓴 논리식이고, 결과는 논리적 추론으로 얻습니다. 결과를 얻는 절차 대신 결과가 어떤 모습인지만 밝히는 방식을 선언적(declarative)이라고 합니다.
절차를 한 줄씩 적는 방식은 절차적(procedural)이라고 합니다. 추론은 아는 것에서 새로운 것을 끌어내는 일입니다.
이 강의 순서
논리에서 시작해 Prolog로 갑니다
먼저 참인 것을 기호로 적는 법과 거기서 새 참을 끌어내는 법을 봅니다. 그다음 이것을 실제 언어로 만든 Prolog를 읽고, 마지막으로 Prolog의 결점을 봅니다.
술어 논리와 정리 증명이 무엇인지는 그 편에서 풀이합니다.
다음 편