stringtranslate.com

Charla de registro

Logtalk es un lenguaje de programación lógica orientado a objetos que extiende y aprovecha el lenguaje Prolog con un conjunto de características adecuadas para la programación en grandes . [1] Proporciona soporte para encapsulación y ocultamiento de datos , separación de preocupaciones y reutilización de código mejorada . [1] Logtalk utiliza la sintaxis estándar de Prolog con la adición de algunos operadores y directivas.

La implementación del lenguaje Logtalk se distribuye bajo una licencia de código abierto y puede ejecutarse utilizando una implementación de Prolog (compatible con los estándares oficiales y de facto) [1] como compilador back-end .

Características

Logtalk tiene como objetivo reunir las ventajas de la programación orientada a objetos y la programación lógica. [1] La orientación a objetos enfatiza el desarrollo de unidades de software discretas y reutilizables, mientras que la programación lógica enfatiza la representación del conocimiento de cada objeto de manera declarativa.

Como lenguaje de programación orientado a objetos, las principales características de Logtalk incluyen soporte para clases (con metaclases opcionales ) y prototipos , objetos paramétricos, [2] protocolos ( interfaces ), categorías (componentes, aspectos , hot patching ), herencia múltiple , herencia pública/protegida/privada, programación basada en eventos , programación multihilo de alto nivel, [3] reflexión y generación automática de documentación.

Para los programadores de Prolog, Logtalk ofrece una amplia portabilidad, con espacios de nombres de predicados (que admiten objetos estáticos y dinámicos), predicados de objetos públicos/protegidos/privados, predicados coinductivos , separación entre interfaz e implementación, semántica de metapredicados simple e intuitiva, expresiones lambda , gramáticas de cláusulas definidas , mecanismo de expansión de términos y compilación condicional. También proporciona un sistema de módulos basado en la funcionalidad de módulo central estándar de facto (internamente, los módulos se compilan como prototipos).

Ejemplos

La sintaxis de Logtalk se basa en Prolog:

?-  write ( 'Hola mundo' ), nl . Hola mundo true .

Definir un objeto:

:- objeto (mi_primer_objeto).  :- inicialización (( write ( 'Hola mundo' ), nl )).  :- público (p1 / 0 ). p1 :-  write ( 'Este es un predicado público' ), nl .  :- privado (p2 / 0 ). p2 :-  write ( 'Este es un predicado privado' ), nl .:- fin_del_objeto .

Usando el objeto, suponiendo que se guarda en un archivo my_first_object.lgt:

?-  logtalk_load (mi_primer_objeto). Hola mundo true .?- my_first_object :: p1. Este  es un predicado público verdadero .

Al intentar acceder al predicado privado se obtiene un error:

?- mi_primer_objeto :: p2. ERROR : error( error_permiso (acceso, predicado_privado, p2), mi_primer_objeto :: p2, usuario)

Funciones anónimas

Logtalk utiliza la siguiente sintaxis para predicados anónimos (expresiones lambda):

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

Un ejemplo simple sin variables libres y utilizando un predicado de mapeo de lista es:

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

También se admite el currículo. El ejemplo anterior se puede escribir de la siguiente manera:

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

Compatibilidad con el backend de Prolog

Los compiladores Prolog back-end compatibles incluyen B-Prolog , Ciao Prolog , CxProlog, ECLiPSe , GNU Prolog , JIProlog, Quintus Prolog , Scryer Prolog, SICStus Prolog , SWI-Prolog , Tau Prolog, Trealla Prolog, XSB y YAP . [4] Logtalk permite el uso de bibliotecas de compiladores Prolog back-end desde dentro de objetos y categorías.

Herramientas para desarrolladores

Logtalk cuenta con ayuda en línea, una herramienta de documentación (que puede generar archivos PDF y HTML), una herramienta generadora de diagramas de entidades, un depurador integrado (basado en una versión extendida del modelo tradicional Procedure Box que se encuentra en la mayoría de los compiladores Prolog), un marco de prueba unitaria con análisis de cobertura de código y también es compatible con perfiladores back-end Prolog y trazadores gráficos seleccionados. [5]

Aplicaciones

Logtalk se ha utilizado para procesar modelos de datos STEP utilizados para intercambiar información sobre la fabricación de productos . [6] También se ha utilizado para implementar un sistema de razonamiento que permite el razonamiento de preferencias y la resolución de restricciones . [7]

Véase también

Referencias

  1. ^ abcd Paulo Moura (2003). Logtalk: Diseño de un lenguaje de programación lógica orientado a objetos. Tesis doctoral. Universidade da Beira Interior
  2. ^ Moura, Paulo (2011). Patrones de programación para objetos paramétricos de Logtalk . Aplicaciones de la programación declarativa y la gestión del conocimiento. Apuntes de clase en informática. Vol. 6547. doi :10.1007/978-3-642-20589-7_4. ISBN 978-3-642-20588-0.
  3. ^ Aspectos prácticos de los lenguajes declarativos . Apuntes de clase sobre informática. Vol. 4902. 2008. doi :10.1007/978-3-540-77442-6. ISBN 978-3-540-77441-9.
  4. ^ "Compatibilidad con Logtalk". Logtalk.org. 2016-10-10 . Consultado el 2021-07-06 .
  5. ^ "Herramientas para desarrolladores – Wiki LogtalkDotOrg/logtalk3 – GitHub". Github.com. 2013-02-12 . Consultado el 2013-08-19 .
  6. ^ Programación lógica . Apuntes de clases sobre informática. Vol. 4079. 2006. doi :10.1007/11799573. ISBN 978-3-540-36635-5.
  7. ^ Victor Noël; Antonis Kakas (2009). Gorgias-C: Extendiendo la argumentación con resolución de restricciones (PDF) . Programación lógica y razonamiento no monótono. Apuntes de clase en informática . Vol. 5753. págs. 535–541.

Enlaces externos