Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Prolog
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== History == {| class="wikitable floatright" style="padding-left: 1.5em;" |+Timeline of Prolog language |- ! Year ! Aix-Marseille ! ISO/IEC Standard |- | 1972 | Prolog 0 | {{n/a}} |- | 1973 | Prolog I | {{n/a}} |- | 1982 | Prolog II | {{n/a}} |- | 1990 | Prolog III | {{n/a}} |- | 1995 | {{n/a}} | 13211-1 |- | 1996 | Prolog IV | {{n/a}} |- | 2000 | {{n/a}} | 13211-2 |- | 2007 | {{n/a}} | 13211-1:1995/Cor 1:2007 |- | 2012 | {{n/a}} | 13211-1:1995/Cor 2:2012 |- | 2017 | {{n/a}} | 13211-1:1995/Cor 3:2017 |} [[File:Early Prolog timeline.svg|thumb|upright=2|Timeline of some early Prolog systems, up to the ISO Standard]] The name ''Prolog'' was chosen by Philippe Roussel, at the suggestion of his wife, as an abbreviation for ''{{lang|fr|'''Pro'''grammation en '''log'''ique}}'' ([[French language|French]] for ''Programming in [[logic]]'').<ref> Colmerauer, A. and Roussel, P., 1996. The birth of Prolog. In History of programming languages---II (pp. 331-367).</ref> It was created around 1972 by [[Alain Colmerauer]] with Philippe Roussel, from the ''Artificial Intelligence Group'' of the [[Aix-Marseille University Faculty of Sciences|Faculty of Sciences of Luminy]] of [[University of the Mediterranean|Aix-Marseille II University]] of [[France]]. It was based on [[Robert Kowalski]]'s procedural interpretation of [[Horn clause]]s, and it was motivated in part by the desire to reconcile the use of logic as a declarative knowledge representation language with the procedural representation of knowledge that was popular in North America in the late 1960s and early 1970s. According to [[Robert Kowalski]], the first Prolog system was developed in 1972 by Colmerauer and Phillipe Roussel.<ref name="Kowalski">{{Cite journal |last1=Kowalski |first1=R. A. |year=1988 |title=The early years of logic programming |journal=[[Communications of the ACM]] |volume=31 |page=38 |s2cid=12259230 |url=http://www.doc.ic.ac.uk/~rak/papers/the%20early%20years.pdf |doi=10.1145/35043.35046}}</ref><ref>{{Cite journal |last1=Colmerauer |first1=A. |last2=Roussel |first2=P. |title=The birth of Prolog |journal=[[ACM SIGPLAN Notices]] |volume=28 |issue=3 |page=37 |year=1993 |url=http://alain.colmerauer.free.fr/alcol/ArchivesPublications/PrologHistory/19november92.pdf |doi=10.1145/155360.155362}}</ref><ref>{{cite web |url=https://www.mta.ca/~rrosebru/oldcourse/371199/prolog/history.html |title=Prolog: a brief history |access-date=21 November 2021}}</ref> The first implementation of Prolog was an interpreter written in [[Fortran]] by Gerard Battani and Henri Meloni. [[David H. D. Warren]] took this interpreter to the [[University of Edinburgh]], and there implemented an alternative front-end, which came to define the "Edinburgh Prolog" syntax used by most modern implementations. Warren also implemented the first compiler for Prolog, creating the influential DEC-10 Prolog in collaboration with Fernando Pereira. Warren later generalised the ideas behind DEC-10 Prolog, to create the [[Warren Abstract Machine]] ('''WAM'''). European AI researchers favored Prolog while Americans favored [[Lisp (programming language)|Lisp]], reportedly causing many nationalistic debates on the merits of the languages.<ref name="pountain198410">{{cite news |last=Pountain |first=Dick |date=October 1984 |url=https://archive.org/stream/byte-magazine-1984-10/1984_10_BYTE_09-11_Databases#page/n377/mode/2up |title=POP and SNAP |work=[[Byte (magazine)|Byte]] |access-date=23 October 2013 |page=381}}</ref> Much of the modern development of Prolog came from the impetus of the [[Fifth Generation Computer Systems project]] (FGCS), which developed a variant of Prolog named ''[[KL1|Kernel Language]]'' for its first [[operating system]]. Pure Prolog was originally restricted to the use of a [[resolution (logic)|resolution]] theorem prover with [[Horn clause]]s of the form: H :- B<sub>1</sub>, ..., B<sub>n</sub>. The application of the theorem-prover treats such clauses as procedures: to show/solve H, show/solve B<sub>1</sub> and ... and B<sub>n</sub>. Pure Prolog was soon extended, however, to include [[negation as failure]], in which negative conditions of the form not(B<sub>i</sub>) are shown by trying and failing to solve the corresponding positive conditions B<sub>i</sub>. Subsequent extensions of Prolog by the original team introduced [[constraint logic programming]] abilities into the implementations. === Impact === Although Prolog is widely used in research and education,<ref>{{Cite web |title=Computer science - Programming Languages, Syntax, Algorithms {{!}} Britannica |url=https://www.britannica.com/science/computer-science/Programming-languages |access-date=2023-07-12 |website=www.britannica.com |language=en}}</ref> Prolog and other logic programming languages have not had a significant impact on the computer industry in general.<ref name="RealWorld">Logic programming for the real world. Zoltan Somogyi, Fergus Henderson, Thomas Conway, Richard O'Keefe. Proceedings of the ILPS'95 Postconference Workshop on Visions for the Future of Logic Programming.</ref> Most applications are small by industrial standards, with few exceeding 100,000 lines of code.<ref name="RealWorld"/><ref name="The Prolog 1000 database">{{Cite web |url=http://www.faqs.org/faqs/prolog/resource-guide/part1/section-9.html |title=FAQ: Prolog Resource Guide 1/2 [Monthly posting]Section - [1-8] The Prolog 1000 Database |website=Faqs.org}}</ref> [[Programming in the large]] is considered to be complex because not all Prolog compilers support modules, and there are compatibility problems between the module systems of the major Prolog compilers.<ref name="cs.kuleuven.ac.be"/> Portability of Prolog code across implementations has also been a problem, but developments since 2007 have meant: "the portability within the family of Edinburgh/Quintus derived Prolog implementations is good enough to allow for maintaining portable real-world applications."<ref>Jan Wielemaker and VΔ±tor Santos Costa: [http://www.swi-prolog.org/download/publications/porting.pdf Portability of Prolog programs: theory and case-studies]. [http://www.floc-conference.org/CICLOPS-WLPE-accepted.html CICLOPS-WLPE Workshop 2010] {{Webarchive|url=https://web.archive.org/web/20100716184811/http://www.floc-conference.org/CICLOPS-WLPE-accepted.html |date=2010-07-16}}.</ref> Software developed in Prolog has been criticised for having a high performance penalty compared to conventional programming languages. In particular, Prolog's non-deterministic evaluation strategy can be problematic when programming deterministic computations, or when even using "don't care non-determinism" (where a single choice is made instead of backtracking over all possibilities). Cuts and other language constructs may have to be used to achieve desirable performance, destroying one of Prolog's main attractions, the ability to run programs "backwards and forwards".<ref name="rethinking">{{cite conference |first1=Oleg |last1=Kiselyov |first2=Yukiyoshi |last2=Kameyama |title=Re-thinking Prolog |conference=Proc. 31st meeting of the Japan Society for Software Science and Technology |year=2014 |url=http://okmij.org/ftp/kakuritu/logic-programming.html#vs-prolog}}</ref> Prolog is not purely declarative: because of constructs like the [[Cut (logic programming)|cut operator]], a procedural reading of a Prolog program is needed to understand it.<ref>{{citation|first=Torkel|last=Franzen|date=1994|url=http://dtai.cs.kuleuven.be/projects/ALP/newsletter/archive_93_96/comment/decl.html|title=Declarative vs procedural|journal=Association of Logic Programming|volume=7|issue=3}}</ref> The order of clauses in a Prolog program is significant, as the execution strategy of the language depends on it.<ref>{{cite journal |title=Complexity and Expressive Power of Logic Programming |journal=[[ACM Computing Surveys]] |first1=Evgeny |last1=Dantsin |first2=Thomas |last2=Eiter |first3=Georg |last3=Gottlob |first4=Andrei |last4=Voronkov |year=2001 |volume=33 |issue=3 |pages=374β425 |doi=10.1145/502807.502810|citeseerx=10.1.1.616.6372 |s2cid=518049}}</ref> Other logic programming languages, such as [[Datalog]], are truly declarative but restrict the language. As a result, many practical Prolog programs are written to conform to Prolog's [[depth-first search]] order, rather than as purely declarative logic programs.<ref name="rethinking"/> === Use in industry === Prolog has been used in [[Watson (computer)|Watson]]. Watson uses IBM's DeepQA software and the Apache [[UIMA]] (Unstructured Information Management Architecture) framework. The system was written in various languages, including Java, {{nowrap|C++}}, and Prolog, and runs on the [[SUSE Linux Enterprise Server]] 11 operating system using [[Apache Hadoop]] framework to provide distributed computing. Prolog is used for [[pattern matching]] over natural language parse trees. The developers have stated: "We required a language in which we could conveniently express pattern matching rules over the parse trees and other annotations (such as named entity recognition results), and a technology that could execute these rules very efficiently. We found that Prolog was the ideal choice for the language due to its simplicity and [[Expressive power (computer science)|expressiveness]]."<ref name=lally/> Prolog is being used in the Low-Code Development Platform [[GeneXus]], which is focused around AI.{{Citation needed|date=November 2022}} Open source [[graph database]] [[TerminusDB]] is implemented in Prolog.<ref>{{Citation|title=terminusdb/terminusdb|date=2020-12-13|url=https://github.com/terminusdb/terminusdb|publisher=TerminusDB|access-date=2020-12-15}}</ref> TerminusDB is designed for collaboratively building and curating [[knowledge graph]]s.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)