Prolog 구현 비교
Comparison of Prolog implementations다음의 Prolog 구현 비교는 Prolog 컴퓨터 프로그래밍 언어의 서로 다른 구현의 상대적 특징 세트와 성능에 대한 참조를 제공한다.
휴대성
구문이 다르고 의미론(예: Visual Prolog)[1]이 다른 Prolog 구현이 있으며, 서브커뮤니티가 서로 다른 구현을 중심으로 개발되었다.[1]
ISO-Prolog 핵심 언어를 엄격히 준수하는 코드는 ISO 호환 구현에서 휴대할 수 있다.그러나, 모듈에 대한 ISO 표준은 대부분의 Prolog 구현자에 의해 받아들여지지 않았다.[1]
휴대성에 악영향을 미칠 수 있는 요인으로는 경계 대 무한 정수 산술 사용, 문자열 개체와 같은 추가 유형, 고급 숫자 유형(합리적, 콤플렉스), 유니코드와 같은 형상 확장자, 스레드, 탭링 등이 있다.[2]기타 구현 및 라이브러리 조직에서 사용할 수 없는 라이브러리 사용:[1]
현재 술어가 도서관 위에 퍼지는 방식과 시스템 내장형식의 방식은 크게 다르다.[...] 다행히 이름이 같지만 의미(예:)가 다른 술어를 찾는 경우는 드물다.
delete/3)
주요 특징
| 플랫폼 | 특징들 | 툴킷 | 프롤로그 역학 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 이름 | OS | 면허증 | 네이티브 그래픽스 | 컴파일된 코드 | 유니코드 | 객체 지향 | 네이티브 OS 제어 | 독립 실행형 실행 파일 | C 인터페이스[3] | 자바 인터페이스[3] | 인터랙티브 인터프리터 | 디버거 | 코드 프로파일러 | 구문 |
| 알레그로프로로그 | Unix, Windows, Mac OS X | 한정된 상업용 무료 버전 이용 가능 | 네 | 네 | 네 | 네, Lisp을 통해서. | 네 | 네, Lisp을 통해서. | 네, Lisp을 통해서. | 네 | 네 | 네, Lisp을 통해서. | S-expressions완전한 Common Lisp 통합. | |
| BProlog | Unix, Windows, Mac OS X | 비상업적 사용을 위한 무료 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | ISO-Prolog, 이벤트 처리, CLP(FD) 및 탭링 | |
| 안녕히 계세요 | Unix, Windows, Mac OS X | GPL, LGPL | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | ISO-Prolog 및 확장 기능 | ||
| 도스-프로로그 | MS-DOS | 셰어웨어 | 네 | 네 | 네 | 네 | 네 | 네 | 에든버러 프롤로그 | |||||
| ECLiPSe | Linux, Windows, Solaris, MacOS | MPL | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 확장 프롤로그, 다중 대화형(ISO 포함) | ||||
| GNU 프롤로그 | Unix, Windows, Mac OS X | GPL, LGPL | 네 | 네 | 네 | 네 | 네 | 네 | ISO-프로로그 | |||||
| 지프로로그 | JVM, Android | 쉐어웨어/상업 및 AGPL | 네 | 네 | Java를 통한 예 | 네 | Java를 통한 예 | 네 | 네 | 네 | ISO-프로로그 | |||
| JLog | JVM | GPL | 네 | 네 | 네 | 네 | ISO-프로로그 | |||||||
| JScriptLog | 웹 브라우저 | GPL | 네 | ISO-프로로그 | ||||||||||
| jTrolog | JVM | LGPL | 네 | 네 | 네 | 네 | ISO-Prolog 테스트[permanent dead link] | |||||||
| LPA-PROLOG | 창문들 | 상업적 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 확장 기능이 있는 에든버러 프로로그 |
| 오픈 프롤로그 | 매코스 | 프리웨어 | 네 | |||||||||||
| 팝로그 프롤로그 | Linux(32비트 및 64비트), Unix, Windows | 무료 오픈 소스 | POP-11을 통해서만, Linux에서 | 네 | 네 | 네 | 네 | 네 | 네 | Poplog Common Lisp 및 Pop-11에 대한 인터페이스가 있는 Edinburg Prolog | ||||
| SICStus Prolog | Unix, Linux, Windows, MacOS | 상업적 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | ISO-프로로그 |
| 딸기 프롤로그 | Windows, Unix | 프리웨어, 커머셜 | 네 | 네 | 네 | 네 | 네 | ISO-Prolog + 확장이 아님 | ||||||
| SWI-프로로그 | Unix, Linux, Windows, MacOS | BSD 라이선스 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | ISO-Prolog, Edinburg Prolog | |
| tuProlog | JVM, Android | LGPL | 네 | 네 | 네 | 네 | 네 | 네 | ISO-프로로그 | |||||
| 비주얼 프롤로그 | 창문들 | 프리웨어, 커머셜 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | |||
| XSB 프롤로그 | Linux, Windows, Solaris, MacOS | LGPL | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | ISO-Prolog, Tabled WFS | ||
| YAP-프로로그 | Linux, Windows, Solaris, Mac OS X, HP-UX | GPL 또는 Artic(사용자 선택) | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | Edinburgh, ISO-Prolog, Quintus 및 SICStus Prolog 호환 | |||
| 웹 관련 | ||||||||
|---|---|---|---|---|---|---|---|---|
| 이름 | 조건부 컴파일 | 소켓 | 멀티스레딩 | 태블링 | HTTP 클라이언트 | HTTP 서버 | HTML 파서 | RDF 트리플 스토어 |
| BProlog | 네 | |||||||
| 안녕히 계세요 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | |
| ECLiPSe | 네 | 네 | 네 | 네 | 네 | |||
| GNU 프롤로그 | 네 | |||||||
| LPA-프로로그 | 네 | 네 | 네 | 네 | ||||
| SICStus Prolog | 네 | 네 | 네 | |||||
| SWI-프로로그 | 네 | 네 | 네 | 네 | 네 | 네 | 네 | 네 |
| 비주얼 프롤로그 | 네 | 네 | 네 | 네 | 네 | 네 | ||
| XSB | 네 | 네 | 네 | 네 | 네 | |||
| YAP-프로로그 | 네 | 네 | 네 | 네 | ||||
정적 분석
| 이름 | 유형체커 | 결정력 검사기 | 콜패턴체커 |
|---|---|---|---|
| 안녕히 계세요 | 네 | 네 | 네 |
| GNU 프롤로그 | |||
| SICStus Prolog | 네 | ||
| SWI-프로로그 | 네 | ||
| 비주얼 프롤로그 | 네 | 네 | 네 |
| XSB | |||
| YAP-프로로그 |
최적화
| 이름 | Tail-Call 최적화 | 선택 포인트 제거 | 환경 트리밍 | 적시 인덱싱 |
|---|---|---|---|---|
| 안녕히 계세요 | 네 | 네 | 네 | ? |
| ECLiPSe | 네 | 네 | 네 | 다변론(수시시간) |
| GNU 프롤로그 | 네 | 네 | 네 | ? |
| SICStus Prolog | 네 | 네 | 네 | |
| SWI-프로로그 | 네 | 네 | 네 | 네 |
| 비주얼 프롤로그 | 예(비교 시간) | 예(비교 시간) | 해당 없음 | 해당 없음(비교 시간) |
| XSB | 네 | 네 | 네 | ? |
| YAP-프로로그 | 네 | 네 | 네 | 네 |
해제
| 이름 | 버전 | 날짜 |
|---|---|---|
| 알레그로프로로그 | 1.1.2 | 2018-12-12 |
| BProlog | 8.1 | 2014-02-23 |
| 지프로로그 | 4.1.6.1 | 2018-03-17 |
| 안녕히 계세요 | 1.20.0 | 2021-03-31 |
| 도스-프로로그 | 6.0 | |
| ECLiPSe | 7.0_54 | 2020-02-26 |
| GNU 프롤로그 | 1.4.5 | 2018-07-14 |
| JLog | 1.3.6 | 2007-09-13 |
| JScriptLog | 0.7.5 베타 | 2007-09-10 |
| jTrolog | ||
| LPA-PROLOG | 7.0 | 2019-12-19 |
| 오픈 프롤로그 | ||
| 팝로그 프롤로그 | V15.65 | 2015-10-14 |
| SICStus Prolog | 4.7.0 | 2021-08-09 |
| 딸기 프롤로그 | 3.0 베타 4 | 2013-12-10 |
| SWI-프로로그 | 8.4.1 | 2021-11-16 |
| tuProlog | 3.2.1 | 2017-02-14 |
| 비주얼 프롤로그 | 10, 빌드 1000 | 2021-04-15 |
| XSB 프롤로그 | 3.8 | 2017-10-29 |
| 야프로로그 | 6.3.3 | 2013-01-21 |
벤치마크
- 벤치마킹 문제:홀수 프롤로그 벤치마킹, 성능 차이.[4]
- 벤치마킹 소프트웨어: 구형, 도브리[permanent dead link], 아쿠아리우스 벤치마크 제품군(Bothe, 1990),[5] (Demoen et al. 2001), 벤치마크 설명
- 벤치마킹 결과: B-Prolog, SICStus, XSB,[6] SICStus vs Yap vs hProlog[7]
- 벤치마킹 결과:마이클 지징에 의한 자바 프롤로그 엔진 조사
- 벤치마킹 결과:OpenRuleBench 연간 규칙 엔진 오픈 소스 벤치마크
참조
- ^ a b c d Wielemaker, J.; Costa, V. T. S. (2011). "On the Portability of Prolog Applications". Practical Aspects of Declarative Languages. Lecture Notes in Computer Science. Vol. 6539. p. 69. CiteSeerX 10.1.1.1030.9396. doi:10.1007/978-3-642-18378-2_8. ISBN 978-3-642-18377-5.
- ^ Jan Wielemaker와 Vıtor Santos Costa: 프롤로그 프로그램의 이식성: 이론과 사례 연구.CICLOPS-WLPE 워크샵 2010.
- ^ a b C/Java 인터페이스는 그래픽과 OS 제어에도 사용될 수 있다.
- ^ B. 데모엔, 그리고 P.Nguyen, Prolog 구현, 제약 조건 및 로직 프로그래밍 시스템 구현에 관한 콜로키움 절차(Colorquium of Constriction and Logic Programming Systems, CICLOPS 2001) 간의 불필요한 성능 차이 정보
- ^ Bothe, K. (1990). "A prolog space benchmark suite". ACM SIGPLAN Notices. 25 (12): 54–60. doi:10.1145/122193.122197.
- ^ XSB 성능 요약(1993)
- ^ Demoen, B.; Nguyen, P. L.; Vandeginste, R. (2002). "Copying Garbage Collection for the WAM: to Mark or Not to Mark?". Logic Programming. Lecture Notes in Computer Science. Vol. 2401. pp. 194–208. CiteSeerX 10.1.1.13.2586. doi:10.1007/3-540-45619-8_14. ISBN 978-3-540-43930-1.
외부 링크
- Ulrich Neumerkel의 Prolog 시스템 개요
- 적합성 평가 I: 구문