Logtalk - Logtalk

Logtalk
Paradigma Programação lógica , programação orientada a objetos , programação baseada em protótipo
Projetado por Paulo moura
Apareceu pela primeira vez 1998 ; 23 anos atrás ( 1998 )
Versão estável
3.48.0 / 6 de julho de 2021 ; 1 dia atrás ( 2021-07-06 )
SO Plataforma cruzada
Licença Licença Artística 2.0 (2.x) / Licença Apache 2.0 (3.01.x)
Local na rede Internet logtalk .org
Influenciado por
Prolog , Smalltalk , Objective-C

Logtalk é uma linguagem de programação lógica orientada a objetos que estende e alavanca a linguagem Prolog com um conjunto de recursos adequado para programação em geral . Ele fornece suporte para encapsulamento e ocultação de dados , separação de interesses e reutilização de código aprimorada . Logtalk usa sintaxe Prolog padrão com a adição de alguns operadores e diretivas.

A implementação da linguagem Logtalk é distribuída sob uma licença de código aberto e pode ser executada usando uma implementação Prolog (compatível com os padrões oficiais e de fato) como o compilador de back-end .

Características

Logtalk visa reunir as vantagens da programação orientada a objetos e programação lógica. A orientação a objetos enfatiza o desenvolvimento de unidades discretas e reutilizáveis ​​de software, enquanto a programação lógica enfatiza a representação do conhecimento de cada objeto de forma declarativa.

Como uma linguagem de programação orientada a objetos, os principais recursos do Logtalk incluem suporte para ambas as classes (com metaclasses opcionais ) e protótipos , objetos paramétricos, protocolos ( interfaces ), categorias (componentes, aspectos , hot patching ), herança múltipla , público / protegido / privado herança, programação orientada a eventos , programação multi-threading de alto nível, reflexão e geração automática de documentação.

Para programadores Prolog, Logtalk fornece ampla portabilidade, apresentando namespaces de predicado (suportando objetos estáticos e dinâmicos), predicados de objetos públicos / protegidos / privados, predicados coindutivos , separação entre interface e implementação, semântica de meta-predicado simples e intuitiva, expressões lambda , definitiva gramáticas de cláusulas , mecanismo de expansão de termos e compilação condicional. Ele também fornece um sistema de módulo baseado na funcionalidade do módulo central padrão de fato (internamente, os módulos são compilados como protótipos).

Exemplos

A sintaxe do Logtalk é baseada no Prolog:

?- write('Hello world'), nl.
Hello world
true.

Definindo um objeto:

:- object(my_first_object).

    :- initialization((write('Hello world'), nl)).

    :- public(p1/0).
    p1 :- write('This is a public predicate'), nl.

    :- private(p2/0).
    p2 :- write('This is a private predicate'), nl.

:- end_object.

Usando o objeto, supondo que seja salvo em um arquivo my_first_object.lgt:

?- logtalk_load(my_first_object).
Hello world
true.

?- my_first_object::p1.
This is a public predicate
true.

Tentar acessar o predicado privado dá um erro:

?- my_first_object::p2.
ERROR: error(permission_error(access, private_predicate, p2), my_first_object::p2, user)

Funções anônimas

Logtalk usa a seguinte sintaxe para predicados anônimos (expressões lambda):

{FreeVar1, FreeVar2, ...}/[LambdaParameter1, LambdaParameter2, ...]>>Goal

Um exemplo simples sem variáveis ​​livres e usando um predicado de mapeamento de lista é:

| ?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys).
Ys = [2,4,6]
yes

Currying também é suportado. O exemplo acima pode ser escrito como:

| ?- meta::map([X]>>([Y]>>(Y is 2*X)), [1,2,3], Ys).
Ys = [2,4,6]
yes

Compatibilidade de back-end do Prolog

Compiladores Prolog back-end suportados incluem B-Prolog , Ciao Prolog , CxProlog , ECLiPSe , GNU Prolog , JIProlog , Quintus Prolog , Scryer Prolog , SICStus Prolog , SWI-Prolog , Tau Prolog , Trealla Prolog , XSB e YAP . Logtalk permite o uso de bibliotecas back-end do compilador Prolog de dentro de objetos e categorias.

Ferramentas de desenvolvimento

Logtalk apresenta ajuda on-line, uma ferramenta de documentação (que pode gerar arquivos PDF e HTML), uma ferramenta de gerador de diagrama de entidade, um depurador embutido (baseado em uma versão estendida do modelo de caixa de procedimento tradicional encontrado na maioria dos compiladores Prolog), uma estrutura de teste de unidade com análise de cobertura de código e também é compatível com profilers Prolog back-end selecionados e rastreadores gráficos.

Formulários

Logtalk foi usado para processar modelos de dados STEP usados ​​para trocar informações de fabricação de produtos . Ele também foi usado para implementar um sistema de raciocínio que permite o raciocínio de preferência e solução de restrições .

Veja também

Referências

links externos

  • Website oficial
  • Logtalking blog
  • Do Prolog Simples aos Objetos Logtalk: Encapsulamento e Reutilização de Código Eficaz (Conversa Convidada). Paulo Moura. Anais da 25ª Conferência Internacional sobre Programação Lógica (ICLP), julho de 2009. LNCS 5649. Springer-Verlag Berlin Heidelberg ". ( Slides )