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

벤치마크

참조

  1. ^ 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.
  2. ^ Jan Wielemaker와 Vıtor Santos Costa: 프롤로그 프로그램의 이식성: 이론과 사례 연구.CICLOPS-WLPE 워크샵 2010.
  3. ^ a b C/Java 인터페이스는 그래픽과 OS 제어에도 사용될 수 있다.
  4. ^ B. 데모엔, 그리고 P.Nguyen, Prolog 구현, 제약 조건 및 로직 프로그래밍 시스템 구현에 관한 콜로키움 절차(Colorquium of Constriction and Logic Programming Systems, CICLOPS 2001) 간의 불필요한 성능 차이 정보
  5. ^ Bothe, K. (1990). "A prolog space benchmark suite". ACM SIGPLAN Notices. 25 (12): 54–60. doi:10.1145/122193.122197.
  6. ^ XSB 성능 요약(1993)
  7. ^ 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.

외부 링크