Comparação de implementações Prolog - Comparison of Prolog implementations
A seguinte comparação de implementações Prolog fornece uma referência para os conjuntos de recursos relativos e desempenho de diferentes implementações da linguagem de programação de computador Prolog .
Portabilidade
Existem implementações de Prolog que são radicalmente diferentes, com sintaxe e semântica diferentes (por exemplo, Visual Prolog) e subcomunidades foram desenvolvidas em torno de implementações diferentes.
O código que está estritamente em conformidade com a linguagem de núcleo ISO-Prolog é portável em implementações compatíveis com ISO. No entanto, o padrão ISO para módulos nunca foi aceito pela maioria dos implementadores do Prolog.
Os fatores que podem afetar negativamente a portabilidade incluem: uso de aritmética de número inteiro limitado vs. ilimitado, tipos adicionais como objetos de string, tipos numéricos avançados (racionais, complexos), extensões de recursos como Unicode , threads e tabulação. Uso de bibliotecas indisponíveis em outras implementações e organização de bibliotecas:
Atualmente, a maneira como os predicados são espalhados pelas bibliotecas e sistemas integrados difere enormemente. [...] Felizmente, existem apenas alguns casos em que encontramos predicados com o mesmo nome, mas semânticas diferentes (por exemplo
delete/3
)
Principais características
Plataforma | Recursos | Kit de ferramentas | Prolog Mecânica | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Nome | SO | Licença | Gráficos Nativos | Código Compilado | Unicode | Orientado a Objeto | Controle de SO nativo | Executável autônomo | Interface C | Interface Java | Intérprete Interativo | Depurador | Code Profiler | Sintaxe |
AllegroProlog | Unix , Windows , Mac OS X | Comercial, edição gratuita limitada disponível | sim | sim | sim | Sim, via Lisp | sim | Sim, via Lisp | Sim, via Lisp | sim | sim | Sim, via Lisp | Expressões S. Integração completa do Common Lisp. | |
BProlog | Unix , Windows , Mac OS X | Gratuito para usos não comerciais | sim | sim | sim | sim | sim | sim | sim | sim | sim | sim | ISO-Prolog, além de manipulação de eventos, CLP (FD) e tabling | |
tchau | Unix , Windows , Mac OS X | GPL , LGPL | sim | sim | sim | sim | sim | sim | sim | sim | sim | ISO-Prolog, mais extensões | ||
DOS-PROLOG | MS-DOS | Shareware | sim | sim | sim | sim | sim | sim | Edimburgo Prolog | |||||
Eclipse | Linux , Windows , Solaris , macOS | MPL | sim | sim | sim | sim | sim | sim | sim | Prolog estendido, multi-dialeto, incluindo ISO | ||||
GNU Prolog | Unix , Windows , Mac OS X | GPL , LGPL | sim | sim | sim | sim | sim | sim | ISO-Prolog | |||||
JIProlog | JVM , Android | Shareware / Comercial e AGPL | sim | sim | Sim via Java | sim | Sim via Java | sim | sim | sim | ISO-Prolog | |||
JLog | JVM | GPL | sim | sim | sim | sim | ISO-Prolog | |||||||
JScriptLog | Navegador da web | GPL | sim | ISO-Prolog | ||||||||||
jTrolog | JVM | LGPL | sim | sim | sim | sim | Testes ISO-Prolog | |||||||
LPA-PROLOG | janelas | Comercial | sim | sim | sim | sim | sim | sim | sim | sim | sim | sim | sim | Prolog de Edimburgo com extensões |
Open Prolog | Mac OS | freeware | sim | |||||||||||
Poplog Prolog | Linux (32 e 64 bits), Unix , Windows | Código aberto grátis | Somente através do POP-11 , no Linux | sim | sim | sim | sim | sim | sim | Edinburgh Prolog, com interfaces para Poplog Common Lisp e Pop-11 | ||||
SICStus Prolog | Unix , Linux , Windows , macOS | Comercial | sim | sim | sim | sim | sim | sim | sim | sim | sim | sim | sim | ISO-Prolog |
Prolog de morango | Windows , Unix | Freeware , comercial | sim | sim | sim | sim | sim | Extensões não ISO-Prolog + | ||||||
SWI-Prolog | Unix , Linux , Windows , macOS | Licença BSD | sim | sim | sim | sim | sim | sim | sim | sim | sim | sim | ISO-Prolog, Edinburgh Prolog | |
tuProlog | JVM , Android | LGPL | sim | sim | sim | sim | sim | sim | ISO-Prolog | |||||
Visual Prolog | janelas | Freeware , comercial | sim | sim | sim | sim | sim | sim | sim | sim | sim | |||
XSB Prolog | Linux , Windows , Solaris , macOS | LGPL | sim | sim | sim | sim | sim | sim | sim | sim | sim | ISO-Prolog, WFS tabelado | ||
YAP-Prolog | Linux , Windows , Solaris , Mac OS X , HP-UX | GPL ou Artístico (escolha do usuário) | sim | sim | sim | sim | sim | sim | sim | sim | Edimburgo, ISO-Prolog, Quintus e SICStus Prolog compatível |
Relacionado à web | ||||||||
---|---|---|---|---|---|---|---|---|
Nome | Compilação condicional | tomadas | Multi-threading | Tabela | Cliente HTTP | Servidor HTTP | Analisador de HTML | RDF Triple store |
BProlog | sim | |||||||
tchau | sim | sim | sim | sim | sim | sim | sim | |
Eclipse | sim | sim | sim | sim | sim | |||
GNU Prolog | sim | |||||||
LPA-Prolog | sim | sim | sim | sim | ||||
SICStus Prolog | sim | sim | sim | |||||
SWI-Prolog | sim | sim | sim | sim | sim | sim | sim | sim |
Visual Prolog | sim | sim | sim | sim | sim | sim | ||
XSB | sim | sim | sim | sim | sim | |||
YAP-Prolog | sim | sim | sim | sim |
Análise estática
Nome | Verificador de tipo | Verificador de determinação | Verificador de padrões de chamada |
---|---|---|---|
tchau | sim | sim | sim |
GNU Prolog | |||
SICStus Prolog | sim | ||
SWI-Prolog | sim | ||
Visual Prolog | sim | sim | sim |
XSB | |||
YAP-Prolog |
Otimizações
Nome | Otimização Tail-Call | Eliminação de ponto de escolha | Corte de ambiente | Indexação Just-in-Time |
---|---|---|---|---|
tchau | sim | sim | sim | ? |
Eclipse | sim | sim | sim | multi-argumento (tempo de compilação) |
GNU Prolog | sim | sim | sim | ? |
SICStus Prolog | sim | sim | sim | |
SWI-Prolog | sim | sim | sim | sim |
Visual Prolog | Sim (tempo de compilação) | Sim (tempo de compilação) | N / D | N / A (tempo de compilação) |
XSB | sim | sim | sim | ? |
YAP-Prolog | sim | sim | sim | sim |
Liberar
Nome | Versão | Encontro |
---|---|---|
AllegroProlog | 1.1.2 | 1018-12-12 |
BProlog | 8,1 | 23/02/2014 |
JIProlog | 4.1.6.1 | 17/03/2018 |
tchau | 1.20.0 | 31/03/2021 |
DOS-PROLOG | 6,0 | |
Eclipse | 7.0_54 | 26-02-2020 |
GNU Prolog | 1.4.5 | 14/07/2018 |
JLog | 1.3.6 | 13/09/2007 |
JScriptLog | 0.7.5 beta | 10/09/2007 |
jTrolog | ||
LPA-PROLOG | 7,0 | 19/12/2019 |
Open Prolog | ||
Poplog Prolog | V15.65 | 14/10/2015 |
SICStus Prolog | 4.6.0 | 04-05-2020 |
Prolog de morango | 3.0 Beta 4 | 10/12/2013 |
SWI-Prolog | 8.2.4 | 2021-01-27 |
tuProlog | 3.2.1 | 14/02/2017 |
Visual Prolog | 10, Build 1000 | 2021-04-15 |
XSB Prolog | 3,8 | 29/10/2017 |
YAProlog | 6.3.3 | 21/01/2013 |
Benchmarks
- Problemas de benchmarking: benchmarking Odd Prolog , diferenças de desempenho.
- Software de benchmarking: mais antigo , Dobry , Aquarius benchmark suite , (Bothe, 1990), (Demoen et al. 2001) , descrições de benchmark
- Resultados do benchmarking: B-Prolog , SICStus , XSB, SICStus vs Yap vs hProlog
- Resultados do benchmarking: pesquisa de motores de prólogo java por Michael Zeising
- Resultados do benchmarking: benchmark anual de código aberto OpenRuleBench de mecanismos de regras
Referências
links externos
- Visão geral dos sistemas Prolog por Ulrich Neumerkel
- Avaliação de conformidade I: Sintaxe