Prolog의 결점
창고에 없는 것을 물으면 Prolog는 뭐라고 답할까?
해결 순서 제어
논리에는 순서가 없지만
순수한 논리 프로그래밍에서는 맞춰 보는 순서가 정해져 있지 않고, 모든 매칭을 동시에 시도합니다. Prolog는 창고에 적힌 순서대로 하나씩 맞춰 봅니다. 그래서 적는 순서가 결과에 영향을 줍니다.
매칭은 목표를 사실이나 규칙과 맞춰 보는 일입니다. 순서에 기대면 '무엇이 참인지만 적는다'는 선언적 방식에서 멀어집니다.
닫힌 세계 가정
창고가 세계의 전부입니다
Prolog는 창고에 있는 것이 지식의 전부라고 가정합니다. 이것을 닫힌 세계 가정(closed-world assumption)이라고 합니다. 그래서 창고에 없는 것을 물으면 '모른다'가 아니라 '거짓'이라고 답합니다.
6편에서 모은 창고의 일부입니다. mary가 shelley의 어머니라는 사실은 있지만, mary가 여성이라는 사실은 적혀 있지 않습니다.
부정 문제
no는 거짓의 증명이 아닙니다
창고에 적히지 않은 것은 모두 거짓으로 가정합니다. 그래서 Prolog의 no는 '증명하지 못했다'는 뜻일 뿐, 정말 거짓인지는 알려 주지 않습니다. 이것이 부정 문제(negation problem)입니다.
man(fred)는 6편에서 본 목표입니다. 창고에는 fred가 남성인지 적은 사실이 없습니다.
내재적 한계
무엇은 적어도 어떻게는 모릅니다
정렬된 리스트가 어떤 모습인지는 논리로 쉽게 적을 수 있습니다. 그러나 Prolog는 정렬하는 방법을 알지 못합니다. 실제로 정렬하게 하기는 어렵습니다.
숫자와 만들어 보는 순서는 예시입니다. ≤ 는 '앞이 뒤보다 작거나 같다'입니다.
15강 정리
무엇이 참인지를 적는 언어
기호 논리가 논리 프로그래밍의 바탕입니다. Prolog의 문장은 사실, 규칙, 목표 셋이고, 해결이 Prolog가 하는 주된 일입니다. 결점이 있지만 여러 분야에서 쓰입니다.
관계형 데이터베이스, 전문가 시스템, 자연어 처리 등에 쓰입니다.
프로그래밍 언어론 전체
언어를 보는 눈에서 다른 갈래까지
1강부터 15강까지 온 길입니다. 언어를 견주는 기준에서 시작해, 언어를 이루는 부품을 하나씩 보고, 명령형과 다른 두 갈래인 함수형과 논리형까지 왔습니다.
프로그래밍 언어론 끝
언어가 왜 그렇게 생겼는지 보는 눈을 얻었습니다
15강을 모두 마쳤습니다. 다시 보고 싶은 강은 목록에서 고를 수 있습니다.
15강 끝 · 프로그래밍 언어론 끝강의 목록으로 15강 목록