The LISP and Prolog are the programming languages intended to serve for the different purpose, where LISP is a functional programming language while Prolog is a completely logic programming language. LISP was considered as the model of computation which is founded on the theory of the recursive functions. Prolog, on the other hand, contains a group of specifications in formal logic which uses first-order predicate calculus.
LISP is faster than Prolog as it easily interpreted by computers.
Content: LISP Vs Prolog
|Basis for comparison||LISP||Prolog|
|Type of language||Functional Programming||Logic Programming|
|Data types||Symbolic and numeric atoms, lists and list structure, property and association lists||Symbolic and numeric atoms, predicate, lists and list structure.|
|Transiting data||Function returns, parameter passing by value, binding of local and global variables.||Variable binding manipulation through unification|
|Program||Function evaluation, conditional evaluation, recursion and looping||Pattern, directed control search, recursion|
|Based on||Function in a global environment, let blocks||Rules and facts in structuring a database|
|Variable||Bound variables, lexical or dynamic scoping of free variables, local variables using Let blocks.||Variable scope scoping confined to a single rule or fact.|
Definition of LISP
Essentially LISP stands for LISt Processing, a functional programming language designed and employed by John McCarthy and the group of MIT in the year of 1960. It was mainly used in computer science research projects like in artificial intelligence (such as robotics, natural language processing, theorem proving, intelligent systems).
The most striking feature of the LISP which distinguishes it with the other languages is the equivalence of forms among program and data, which means that LISP can execute data structure as programs and programs can be modified as data. Furthermore, the other feature of it is that it depends more on the recursion as a control structure inspite of the iteration (looping).
LISP creates an interactive environment for running its programs, where the main program changes its form and the user at the terminal insert the main program as a sequence of expressions to be examined. It does not use block structure or any other complicated syntactic organization. It uses calls for interacting with the other functions executing at a time.
LISP Programming Elements
Initially, two variants of data objects were found in original LISP- Atoms and LISTS.
Atoms: These are the identifiers utilized in imperative languages. Symbols and numeric constants are included in Atoms.
LISTS: Lists are the crucial part of list processing that is the reason the lists are used as a data structure in LISP. Unlike lists in other languages, these lists are specified by delimiting their elements within parentheses rather than using insert and delete operations.
Characteristics of LISP
- Functions in LISP are defined entirely in the form of expressions.
- It restricts data used in the program constructs as it uses just atoms and lists, which is further explained below.
- It offers a wide range of primitives in order to create, modify and remove lists.
- The control structures in LISP are comparatively simpler.
- It emphasizes on the recursive function calls more.
- Comments in LISP starts with a semicolon.
- We can easily implement LISP with software interpreter and software simulation for all primitives. Many implementations also provide compiler which can be used to compile some certain function definitions into machine code. These compiled functions can be executed by the hardware interpreter.
- The notations in LISP are called meta-notation or M-notation.
Definition of Prolog
Prolog is a logic programming language which uses predicate calculus for solving a problem. The main objective of Prolog was to provide the details of the solution, so that the execution of the sequence may be derived by the system instead of defining an algorithm for the solution of the problem. The Prolog stands for “PROgramming in LOGic” developed by Alain Coulmerauer and Philippe Roussel in 1970. However, there are no standards defined by Prolog.
The language Prolog is based on two principles – resolution and unification where program contains a sequence of facts, strong relationships between data objects (facts) and a set of rules. To insert these facts and rules in the database consult operation can be used. facts and rules determine the consistent substitution for variables in the query against the information in the database.
Prolog Programming Elements
The programming in Prolog starts with terms including constants, variables or structures. A constant in prolog can be either atom or integer where atoms are the symbolic value of Prolog similar to LISP. A variable is a string of letter starting with an uppercase letter. The variables are instantiated in the resolution process where the binding of value or type to a variable takes place.
The Prolog interpreter takes input from the user existing in the form of a query (function name). The output of the query can be true or false and the assignments to the variables of the query that generate the true as an output (i.e., that unify the query). To terminate the query semicolon (;) is used so that the other query can also be substituted.
Features of Prolog
- The execution of prolog founded upon the specification of predicates.
- Prolog rules are developed by applying recursive thinking similar to an applicative language.
- It has a simpler syntax and semantics.
- Prolog is a huge collection of data structure in language and human reasoning.
- It is declarative, logical, interpretive, compact and inherently modular in nature.
- It provides a pattern matching and backtracking facility.
Key Differences Between Procedural and Nonprocedural Language
- LISP is a functional programming language. As against, Prolog is a Logic programming language.
- The datatypes of the LISP and Prolog are quite different where LISP does not uses predicates and Prolog does not use property and association lists.
- In LISP the data transits in the program function returns, binding of local and global variables, parameter passing by value. On the contrary, Prolog binds the data or values with the variable through unification.
- The program in LISP includes function evaluation, recursion, conditional evaluation, and looping. Conversely, Prolog program is comprised of patterns, recursion, directed control search, backtracking.
- Prolog is based on rules and facts whereas LISP is based on the function in a global environment.
The LISP uses mathematical properties of functions which are not very easy to program while Prolog uses facts, rules, query, resolution and unification which can be easily programmed. Prolog works like a human brain which uses pattern matching, backtracking, the hierarchical structure can be easily understood by humans. On the other hand, LISP is more easily manipulated by computers.