characteristics/notions of the Visual Prolog 6 programming language
- based on logical programming with Horn clauses
- fully object oriented
- object predicate values (delegates)
- strongly typed
- algebraic data types
- pattern matching and unification
- controlled non-determinism
- fully integrated fact databases
- automatic memory management
- supports direct linkage with C/C++
- supports direct calling of Win32 API functions
The object system is constructed for loose coupling between a provider
and a user. Objects can only be accessed through interfaces,
and interfaces are only loosely coupled to implementations.
Any class can implement any interface with or without inheriting
implementation from other classes.
The combination of strong type check, no-need-for-pointer-arithmetic,
and automatic memory management practically removed access violations.
Visual Prolog has a long reputation for not producing access violations.
As one of our good users once said: That kind of errors is just
not an option in Visual Prolog. We intend to keep it that
way and Visual Prolog 6 is no exception from this principle.
Our goal is that you will have to interface to foreign code or insist
on making pointer arithmetic to provoke access violations.
Algebraic data types, fact databases and pattern matching combined
with non-deterministic search makes Visual Prolog very well suited
for dealing with complex structured knowledge.
All Visual Prolog data except predicate values and objects have
a human readable textual representation that can be written and
read back into programs.