Content deleted Content added
bolding |
misc. fixes |
||
Line 23:
Gödel is a [[strongly typed]] system based on many-sorted logic with parametric polymorphism. It involves many data types and modules, supports integers and floating-point numbers of an arbitrary precision (including infinite precision. The Gödel language enables to solve constraint problems over finite domains of integers or rationals. It supports processing of finite sets. It offers a flexible computation rule and a pruning operator which generalises the commit of the concurrent logic programming languages. The declarative nature of Gödel programs makes Gödel well suited as a teaching language (because students can concentrate much more on writing down what it is they want to compute without being so concerned about how to compute it). Gödel narrows the gap between theory and practice in logic programming, since it reduces a significant number of non-logical features without useful semantics, and so Gödel language provides a bridge between theory and practice. Gödel's meta-logical facilities provide significant support for meta-programs that do analysis, transformation, compilation, verification, debugging, and so on. Gödel's meta-programs participate in building of some desirable applications: compiler-generators and declarative debuggers to debug Gödel programs (declarative debugging is an attractive debugging technique which only requires that the programmer know the intended interpretation of a program to locate certain bugs and, for example, knowledge of the procedural behaviour of the Gödel system is not needed). Gödel more easily allows a parallel implementation since there are only a couple of non-logical features to complicate matters.
Very detailed overview of Gödel programming language, precise descriptions and formal definitions of the syntax and semantics of the language with many examples and background material on logic can be found in the book
== About the
Patricia M. Hill is a Senior Research Fellow in the Computational Logic Group at the University of Leeds. She has been doing research in logic programming since 1986
John W. Lloyd is a Professor in Research School of Computer Science at the Australian National University; he is the author of ''Foundations of Logic Programming
== General principles of the Gödel programming language ==
Currently in the
The first-order language (as Gödel's intended interpretation) is, roughly speaking, a specific model of computation arising from logic programming paradigm, which is one of the four main paradigms, i.e. fundamental style of computing programming. Other paradigms are [[object-oriented]], imperative and functional (with concrete models of computation, particularly, [[Turing machine]] for object-oriented and imperative programming, λ-calculus for functional [[programming paradigm]]. The [[first-order logic]], sometimes called as first-order predicate calculus, the lower predicate calculus, quantification theory, and less precise as predicate logic, is a formal system used in mathematics, philosophy, linguistics and computer science. Unlike propositional logic the first-order logic uses quantified variables. The first-order logic satisfies several meta-logical theorems that make it open to analysis in proof theory. It is the standard formal logic for axiomatic systems; hence it plays an important role in the [[foundations of mathematics]]. Many common axiomatic systems, such as first-order Peano arithmetic and axiomatic set theory, including the canonical [[Zermelo-Frankel set theory]], can be formalised as first-order theories.
Line 99:
The solution to these semantic problems it to take more seriously the central thesis of logic programming, which is that
It is crucially important that programs can be understood directly as theories. When this is the case, they have simple declarative semantics and be much more easily verified, transformed, debugged, and so on. Each of the problematical aspects mentioned above causes difficulties precisely because it creates an impediment to the understanding of a program as theory. A Prolog program which cannot be understood in some simple way as a theory has only a procedural semantics. This leaves us in no better position to understand the program than if it was written in a conventional procedural language.
Line 185:
(Condition & Formula1) \/ (~Condition & Formula2)
in a body. This approach has the disadvantage that Condition may be computed twice, which is undesirable if Condition is computationally expensive. For these reasons, Gödel also has IF-THEN and IF-THEN-ELSE constructs, called conditionals, which should be implemented in such a way as to avoid this inefficiency.
==Sample code==
Line 223 ⟶ 222:
==External links==
* http://www.scs.leeds.ac.uk/hill/GOEDEL/expgoedel.html
{{DEFAULTSORT:Godel (programming language)}}▼
[[Category:Logic programming languages|Godel]]▼
==References==
Line 232 ⟶ 229:
<ref name=Lloyd>{{cite web|last=Lloyd|first=John W.|title=Home page of John W. Lloyd|url=http://users.cecs.anu.edu.au/~jwl/}}</ref>
<references />
▲{{DEFAULTSORT:Godel (programming language)}}
▲[[Category:Logic programming languages|Godel]]
|