mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-10-03 20:47:16

Prolog


프로그래밍 사이트 선정 프로그래밍 언어 순위 목록
{{{#!wiki style="margin: 0 -10px -5px; word-break: keep-all"
{{{#!wiki style="display: inline-table; min-width: 25%; min-height: 2em;"
{{{#!folding [ IEEE Spectrum 2024 ]
{{{#!wiki style="margin: -5px 0"
<rowcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 SQL
2 Java 2 Python
3 JavaScript 3 Java
4 C++ 4 TypeScript
5 TypeScript 5 SAS
6 SQL 6 JavaScript
7 C# 7 C#
8 Go 8 HTML
9 C 9 Shell
10 HTML 10 C++
}}}
}}}
}}}
[ Stack Overflow 2024 ]
[ TIOBE 2024 ]
||<tablewidth=100%><width=9999><-4><bgcolor=deepskyblue><tablebgcolor=#fff,#222> 2024년 8월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 MATLAB
2 C++ 12 Delphi / Object Pascal
3 C 13 PHP
4 Java 14 Rust
5 C# 15 Ruby
6 JavaScript 16 Swift
7 SQL 17 Assembly language
8 Visual Basic 18 Kotlin
9 Go 19 R
10 Fortran 20 Scratch
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
{{{#!folding [ 21위 ~ 50위 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
21 COBOL 36 Scala
22 Classic Visual Basic 37 Transact-SQL
23 LISP 38 PL/SQL
24 Prolog 39 ABAP
25 Perl 40 Solidity
26 (Visual) FoxPro 41 GAMS
27 SAS 42 PowerShell
28 Haskell 43 TypeScript
29 Dart 44 Logo
30 Ada 45 Wolfram
31 D 46 Awk
32 Julia 47 RPG
33 Objective-C 48 ML
34 VBScript 49 Bash
35 Lua 50 Elixir
}}}}}}}}} ||
[ PYPL 2024 ]

}}} ||
프로그래밍 언어 목록 · 분류 · 문법

?- write('Hello, World!').

1. 개요2. 상세3. 예제4. 여담5. 관련 문서6. 외부 링크

1. 개요

프롤로그(Prolog)는 논리 프로그래밍을 의미하는 프랑스어 programmation en logique의 준말이며 1973년 프랑스 마르세유대학교의 알랭 콜메르(Alan Colmerauer)가 개발한 논리형 프로그래밍 언어다. 논리식을 토대로 오브젝트와 오브젝트 간의 관계에 관한 문제를 해결하기 위해 사용한다.

프롤로그는 아래와 같은 특징을 가지고 있다.[1]
macOS에서는 아래와 같이 프롤로그 구현체 중 하나인 SWI-Prolog를 설치할 수 있다.[2]
brew install swi-prolog
설치 후에는 swipl이라고 입력하면 SWI-Prolog가 실행된다.

2. 상세

프롤로그에서는 술어 논리식을 프로그램, 증명하는 것을 계산하는 것으로 간주하는 관점에서 새로운 계산의 기술 형태를 취하고 있다. 즉, 사실(Fact)과 규칙(Rule)들을 제공하여 데이터베이스를 만들고, 이 데이터베이스에 질의를 함으로써 프로그램을 수행하게 되는 것. 수학에서 정의를 이용해 문제를 증명한다는 식으로 생각하면 쉽다. 추론 기구를 간결하게 표현할 수 있기 때문에 인공지능이나 계산 언어학 분야, 자연어 처리 분야 등에서 많이 사용된다.

3. 예제

아래와 같은 내용을 파일명 father.pl로 저장한다.
father(uranus, cronus).
mother(gaea, cronus).
father(cronus, zeus).
parent(X, Y) :- father(X, Y) ; mother(X, Y).
grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
터미널에서 swipl이라고 입력하면 아래와 같은 프롬프트가 나타난다.
Welcome to SWI-Prolog (threaded, 64 bits, version 9.2.7)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.

For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).

?-
?-은 프롬프트이다. 이후 예제에서 프롬프트를 입력할 필요는 없다. 다음과 같이 consult 명령어로 저장한 파일 father.pl을 불러온다.
?- consult('father.pl').
아래와 같이 프로그램에게 제우스의 조부모가 누군지 질문한다.
?- grandparent(Who, zeus).
대답이 한 줄에 한 명씩 나오는데 이때 ;를 누를 때마다 다음 대답이 나온다.
?- grandparent(Who, zeus).
Who = uranus ;
Who = gaea ;
false.

?-

4. 여담

5. 관련 문서

6. 외부 링크


[1] 언어정보처리를 위한 PROLOG, 4쪽~5쪽. [2] https://stackoverflow.com/questions/21597880/running-prolog-on-a-mac