Visual Prolog
Turbo Prolog es un completo sistema de desarrollo de software que incluye un compilador y un entorno de desarrollo integrado (IDE) para el lenguaje de programación PROLOG, desarrollado por Borland, dentro de la familia de productos Turbo (Turbo C, Turbo Pascal, Turbo Assembler, Turbo Basic, etc).
| Turbo Prolog | ||
|---|---|---|
| Información general | ||
| Tipo de programa | Entorno de desarrollo integrado | |
| Desarrollador | Borland | |
| Lanzamiento inicial | 1986 | |
| Licencia | Comercial | |
| Versiones | ||
| Última versión estable | 2.0 ( 1988) | |
Versiones
Turbo Prolog
Borland lanzó dos versiones de Turbo Prolog. La versión 1.0 fue lanzada en 1986 para MS-DOS y, posteriormente, la 2.0 en 1988, la cual estaba previsto que saliera también para el sistema operativo OS/2, cosa que no llegó a ocurrir. Como otras implementaciones PROLOG de la época (por ejemplo, micro-PROLOG) no se atenía al estándar propuesto por la Universidad de Edimburgo (que posteriormente daría lugar al ISO-PROLOG como norma para el lenguaje, ISO/IEC 13211-1), produciendo un dialecto muy diferenciado, en el que la programación estructurada impuesta por el lenguaje es una señal distintiva.
PDC Prolog / Visual Prolog
La licencia del programa fue vendida por Borland a la división de la empresa que se había encargado de su desarrollo, la cual había creado en 1984 la compañía PDC (Prolog Development Center) y se hizo cargo del producto; pasó a comercializarlo con el nombre de PDC Prolog (para primero para los sistemas operativos MS-DOS y OS/2, y posteriormente para Windows 3.1) y en 1996 renombró el software a Visual Prolog, actualizando y manteniendo el producto en el mercado hasta la actualidad. A partir de la versión 6.0 (lanzada en 2002) el lenguaje era completamente orientado a objetos.
Ejemplo
El siguiente código fuente corresponde con el clásico problema de las Torres de Hanói:
class hanoi
predicates
hanoi : (unsigned N).
end class hanoi
implement hanoi
domains
pole = string.
clauses
hanoi(N) :- move(N, "left", "centre", "right").
class predicates
move : (unsigned N, pole A, pole B, pole C).
clauses
move(0, _, _, _) :- !.
move(N, A, B, C) :-
move(N-1, A, C, B),
stdio::writef("move a disc from % pole to the % pole\n", A, C),
move(N-1, B, A, C).
end implement hanoi
goal
console::init(),
hanoi::hanoi(4).