관련 포스팅
1. Perl과제 기록
2. Pascal과제 기록
3. Prolog 설치 기록
4. Prolog과제 기록
Prolog는 Programming in Logic의 준말로서 기호 논리연산을 위해서 쓰는 프로그래밍언어이다.
1970년대 초반에 Aix-Marseille대학의 인공지능 그룹에 속한 Alain Colmerauer와 Phillippe Rousel은 Edinburgh대학의 인공지능 학과의 Robert Kowalski와 함께 Prolog에 대한 기본적인 설계를 개발하였다.
Prolog는 1981년 일본 정부가 5세대 컴퓨팅 시스템(Fifth Generation Computing Systems:FGCS)이라는 대형 연구 프로젝트에서 각광을 받게 되었다.
1. Prolog 책을 도서관에서 빌려봄.
책 찾는게 너무나 힘들었다.
국내에 나온 Prolog 책들을 찾기는 매우 미지수 ㅡ,.ㅡ 학교 도서관에 찾아보아도 웬만한것들은 80년대후반 서적들 밖에 없었다. 그런데다가 Prolog란 언어는 논리형 프로그래밍 언어(Logic Programming Language)라서 한글로 공부하기엔 와닿지가 않았다.
그래서 책을 원서로 빌려보게 되었다.
난 이런 원서책을 빌리게 되었다.
Logic Programming with Prolog
Techniques of Prolog Programming
인터넷에서 원서로 된 Prolog를 찾게 되었는데 외국에서도 마찬가지로 최신 책이 없었다.
다행이도 최신으로 나온 책이 있었는데 학교 도서관에도 있었다.
Logic Programming with Prolog (Paperback) by Max Bramer
이 책은 얇으면서도 사용자들에게 알려줄 것들을 다 알려주는 아주 착한책이라고 할까? 거기에 학교 도서관에서 입고된 Prolog책중에서 아주 최신이면서 가벼운 책이다. 예제가 조금 부족하다는 것이 흠이랄까? 그래도 책의 내용이 너무 좋다. 간단한 이론들에 쓸데없는 예제만 넣어서 책의 양만 늘려 파는 책보단 말이다.
혹시나 모르기 때문에 Prolog예제들이 많이 있는 책도 빌려보게 되었다. 그런데 1993년도에 발간되어서 1994년 4월 27일날 입고된 책이다 정말 오래되었도다.
아래는 빌린 Prolog책들을 찍은 것이다.
2. Prolog를 해석할 Compiler를 구함
http://www.freeprogrammingresources.com/
위의 사이트는 대부분의 사람들이 쓰는 언어들에 대한 무료 컴파일러를 제공하는 사이트이다.
윗 사이트에서 Prolog Programming을 찾아서 클릭
Prolog Compilers를 클릭하면 Free로 된 Prolog Compiler의 목록들이 나온다.
여러가지 목록에서 2가지 컴파일러를 쓰기로 결정하였다.
SWI Prolog
SWI Prolog is a Prolog compiler, targeting primarily at research and education.
The GNU Prolog web site
GNU Prolog accepts Prolog+constraint programs and produces native binaries (like gcc does from a C source)
SWI Prolog는 Windows에 설치하기로 하고 GNU Prolog는 SPMachine(Fedora Core 6)에 설치하기로 함.
3. 각각의 OS에 Prolog를 설치한다.
근데 설치했긴 한데 스샷 귀찮아서 패스 ㅡ,.ㅡ
Prolog는 기호 논리의 형식을 이용한 언어이라서 일반적으로 쓰는 C, C++, JAVA, PHP, Perl, Python, Pascal과 구문이 아예 다르다.
Logic Programming with Prolog 에 있는 예제들을 보면
dog(fido).
dog(rover).
dog(henry).
cat(felix).
cat(michael).
cat(jame).
animal(X) :- dog(X).
?- dog(fido).
yes
?- dog(jane).
no
?- animal(felix).
no
맨 처음에 소스들을 보면 이해가 안간다. 왜 저렇게 써야하는지 C랑 달라서 헤메었다.
저정도는 약과이고 이거보다 어려운 자료구조들을 구현하려 하니까 정신이 어질어질 하다.
(Binary Tree, Fibonacci Sequence, Quick Sort, Dijkstra Algorithm, hanoi tower)
이번 Prolog과제를 하는데 개념들이 너무나 생소해서 매우 공부하기가 어려울 듯 하다 ㅡ,.ㅡ
이번 프로그래밍언어는 Prolog과제를 했나 안했나에 A가 왔다갔다하는 소문도 =_=;;
'컴퓨터' 카테고리의 다른 글
Prolog과제 기록 (2) | 2007.05.19 |
---|---|
이것이 프로그래밍언어를 배워야 하는 이유군요. -_-;; (12) | 2007.05.16 |
Pascal과제 기록 (3) | 2007.04.14 |
JAVA의 문법이 이상한가? (5) | 2007.04.02 |
[site] ANSI C Yacc grammar (1) | 2007.03.27 |