Content deleted Content added
m Reverted edits by 103.25.231.2 (talk) to last revision by Martinjanda (HG) |
→Gödel compared to Prolog: This is an excerpt from the book. Not encyclopedic in any way. |
||
Line 94:
=== Gödel compared to Prolog ===
In general, any programming language should satisfy five properties{{Citation needed}}. It should be: high level (providing concepts as close as possible to those which people like to use to express their thoughts and ideas), expressive (providing concepts that can be used to model real-world situations easily and concisely), efficient (programs run at speeds and memory costs similar to competing languages), practical (that can be used for large-scale, real-world applications), and of a simple (mathematical) semantics (for which programmers can relatively easily verify and debug their programs and be assured of the correctness of program transformations, optimalisations, and so on).
Prolog is high level, efficient and practical. However, it is not sufficiently expressive as the logic it uses is untyped. Then, Prolog's semantics is not satisfactory, for example, provides a little of check, uses unsafe negation and cut, uses non-logical predicates, such as var, nonvar, assert, and retract. These problematical aspects of Prolog cause many practical Prolog programs to have no declarative semantics at all and to have unnecessarily complicated procedural semantics. This means that the analysis, transformation, optimisation, verification, and debugging of many Prolog programs is extremely difficult.
|