3.1 releasea of ai/alife howto

This commit is contained in:
jae 2013-04-01 00:50:57 +00:00
parent f5bd3f781a
commit 35e5b2ef6b
1 changed files with 111 additions and 657 deletions

View File

@ -4,7 +4,7 @@
<title>GNU/Linux AI &amp; Alife HOWTO
<author>by <htmlurl url="mailto:jae@zhar.net" name="John Eikenberry">
<date>v3.0, 15 Dec 2012
<date>v3.1, 31 Mar 2013
<abstract>
This howto mainly contains information about, and links to,
@ -45,6 +45,20 @@ GNU/Linux specifically in mind.
<itemize>
<item>v3.1 -
<p>New entries: <ref id="SimpleAI">.
<p>Deleted the section on "Programming languages". I moved the couple of
agent-oriented domain specific languages, <ref id="2APL"> and <ref
id="APRIL">, into the sections relevant to the work. I removed the rest as
they were all just general purpose languages.
<p>Changed my Copyright/License to <htmlurl
url="http://creativecommons.org/publicdomain/zero/1.0/" name="CC0">. That
is no copyright, it is Public Domain. I no longer wish to take part in
copyright; <htmlurl url="http://questioncopyright.org/">
<item>v3.0 -
<p>New entries: <ref id="ORTS">, <ref id="FANN">, <ref id="OpenCV">,
@ -78,16 +92,15 @@ GNU/Linux specifically in mind.
<item>v2.4 -
<p>New entries: <ref id="Eprover">, <ref id="Player">, <ref id="Logfun">,
<ref id="Livingstone2">, <ref id="Quackle">, <ref id="LingPipe">,
<ref id="GATE">, <ref id="Infon Battle Arena">, <ref id="CLARAty">,
<ref id="Reverend">, <ref id="Shogun">, <ref id="Nanopond">,
<ref id="Polyworld">, <ref id="Fluidiom">, <ref id="NEAT">,
<ref id="Framsticks">, <ref id="URBI">, <ref id="RobotFlow">,
<ref id="Nero">, <ref id="ffnet">, <ref id="Alloy">,
<ref id="Pyke">, <ref id="NuPIC">, <ref id="Simbad">, <ref id="Robodeb">,
<ref id="Loom">, <ref id="PowerLoom">, <ref id="tinygp">,
<ref id="Curry">, <ref id="JGAP">, <ref id="PyCLIPS">,
and <ref id="STELLA">.
<ref id="Livingstone2">, <ref id="Quackle">, <ref id="LingPipe">, <ref
id="GATE">, <ref id="Infon Battle Arena">, <ref id="CLARAty">, <ref
id="Reverend">, <ref id="Shogun">, <ref id="Nanopond">, <ref
id="Polyworld">, <ref id="Fluidiom">, <ref id="NEAT">, <ref
id="Framsticks">, <ref id="URBI">, <ref id="RobotFlow">, <ref id="Nero">,
<ref id="ffnet">, Alloy (removed), <ref id="Pyke">, <ref id="NuPIC">, <ref
id="Simbad">, <ref id="Robodeb">, <ref id="Loom">, <ref id="PowerLoom">,
<ref id="tinygp">, Curry (removed), <ref id="JGAP">, <ref id="PyCLIPS">,
and STELLA (removed).
<p>I chopped the Agents section into two sub-sections, one for <ref
id="Software Agents"> and one for <ref id="Robotics and Simulators">. I
@ -99,15 +112,14 @@ GNU/Linux specifically in mind.
<item>v2.3 -
<p>New entries: <ref id="Yampa">, <ref id="pygene">, <ref id="Push">,
<ref id="ANNEvolve">, <ref id="dgpf">, <ref id="Golly">,
<ref id="IBAL">, <ref id="3APL">, <ref id="OSCAR">,
and <ref id="RobocodeNG">.
<p>New entries: <ref id="Yampa">, <ref id="pygene">, Push (removed), <ref
id="ANNEvolve">, <ref id="dgpf">, <ref id="Golly">, <ref id="IBAL">, <ref
id="3APL">, <ref id="OSCAR">, and <ref id="RobocodeNG">.
<p>Updated information for some entries including <ref id="Yale">,
<ref id="Joone">, <ref id="Drone">, <ref id="Biome">, <ref id="ECLiPSe">,
<ref id="Xtoys">, <ref id="GECO">,
<ref id="Creatures Docking Station"> and others.
<p>Updated information for some entries including <ref id="Yale">, <ref
id="Joone">, <ref id="Drone">, <ref id="Biome">, ECLiPSe (removed), <ref
id="Xtoys">, <ref id="GECO">, <ref id="Creatures Docking Station"> and
others.
<p>I also changed the MIA section to <ref id="Missing &amp; Dead"> which now
groups into subsections entries with bad links that I can't find
@ -122,7 +134,7 @@ GNU/Linux specifically in mind.
<ref id="OpenSteer">, <ref id="Pyro">, <ref id="Robocode">,
<ref id="Trend"> and <ref id="Open BEAGLE">.
<item>v2.1 -
<item>v2.1 -
<p>New entries: <ref id="NLTK">, <ref id="NEURObjects">, <ref id="KANREN">,
<ref id="Neural Networks at your Fingertips">, <ref id="SimWorld">,
@ -135,19 +147,19 @@ GNU/Linux specifically in mind.
entries (please let me know if you know of a new home for them).
<p>New entries: <ref id="Yale">, <ref id="DIET Agents">, <ref id="JASA">,
<ref id="Jason">, <ref id="Noble Ape">, <ref id="Maude">,
<ref id="ECLiPSe">, <ref id="lush">, and <ref id="pygp">
<ref id="Jason">, <ref id="Noble Ape">, Maude (removed),
ECLiPSe (removed), lush (removed), and <ref id="pygp">
<item>v1.9 - One new entry (<ref id="Bond">) and fixed the link below
to the dynamic list (now defunct).
to the dynamic list (now defunct).
<item>v1.8 - Cleaned up bad links, finding new ones where possible and
eliminating those that seem to have disappeared. Quite a few new entries as
well.
<p>New entries: <ref id="Torch">, <ref id="Aleph">, <ref id="AI Kernel">,
<ref id="OpenCyc">, <ref id="HTK">, <ref id="FFLL">, <ref id="JCK">,
<ref id="Joone">, <ref id="scnANNlib">, <ref id="GAUL">,
<ref id="OpenCyc">, <ref id="HTK">, <ref id="FFLL">, <ref id="JCK">,
<ref id="Joone">, <ref id="scnANNlib">, <ref id="GAUL">,
<ref id="Cougaar">, and <ref id="RoboTournament">
<item>v1.7 - Another 9 new entries, a bunch of links fixed, and a few items
@ -202,53 +214,13 @@ will find this document helpful.
<sect1>Copyright/License
<p>
Copyright (c) 1996-2009 John A. Eikenberry
LICENSE
<htmlurl url="http://creativecommons.org/publicdomain/zero/1.0/" name="CC0">
This document may be reproduced and distributed in whole or in part, in
any medium physical or electronic, provided that this license notice is
displayed in the reproduction. Commercial redistribution is permitted and
encouraged. Thirty days advance notice, via email to the author, of
redistribution is appreciated, to give the authors time to provide updated
documents.
<p>
To the extent possible under law, John Eikenberry has waived all copyright and
related or neighboring rights to . This work is published from: United States.
A. REQUIREMENTS OF MODIFIED WORKS
All modified documents, including translations, anthologies, and partial
documents, must meet the following requirements:
<p><itemize>
<item>The modified version must be labeled as such.
<item>The person making the modifications must be identified.
<item>Acknowledgement of the original author must be retained.
<item>The location of the original unmodified document be identified.
<item>The original author's name(s) may not be used to assert or imply
endorsement of the resulting document without the original author's
permission.
</itemize>
In addition it is requested (not required) that:
<itemize>
<item>The modifications (including deletions) be noted.
<item>The author be notified by email of the modification in advance of
redistribution, if an email address is provided in the document.
</itemize>
As a special exception, anthologies of LDP documents may include a single
copy of these license terms in a conspicuous location within the anthology
and replace other copies of this license with a reference to the single
copy of the license without the document being considered "modified" for
the purposes of this section.
Mere aggregation of LDP documents with other documents or programs on the
same media shall not cause this license to apply to those other works.
All translations, derivative documents, or modified documents that
incorporate this document may not have more restrictive license terms
than these, except that you may require distributors to make the resulting
document available in source format.
<sect>Symbolic Systems (GOFAI)
@ -756,9 +728,9 @@ LICENSE
ultra-lightweight worlds to support hypothetical reasoning.
To implement PowerLoom we developed a new programming language called
<ref id="STELLA">, which is a Strongly Typed, Lisp-like LAnguage that
can be translated into Lisp, C++ and Java. PowerLoom is written in
STELLA and therefore available in Common-Lisp, C++ and Java versions.
STELLA, which is a Strongly Typed, Lisp-like LAnguage that can be
translated into Lisp, C++ and Java. PowerLoom is written in STELLA and
therefore available in Common-Lisp, C++ and Java versions.
<label id="PyCLIPS">
@ -862,6 +834,28 @@ LICENSE
extensions to Common Lisp such as CLOS, CLIM and Iterate.
<label id="SimpleAI">
<tag/SimpleAI/
<itemize>
<item>Web site: <htmlurl
url="https://github.com/simpleai-team/simpleai">
</itemize>
Python library that implements many of the artificial intelligence
algorithms described on the book "Artificial Intelligence, a Modern
Approach", from Stuart Russel and Peter Norvig. Emphasis on creating a
stable, modern, and maintainable version. We are testing the majority
of the lib, it's available via pip install, has a standard repo and lib
architecture, well documented, respects the python pep8 guidelines,
provides only working code (no placeholders for future things), etc.
Even the internal code is written with readability in mind, not only
the external API.
There is also <htmlurl url="https://code.google.com/p/aima-python/">
which implements these algorithms as well. Though it hasn't seen
activity in a while.
<label id="SPASS">
<tag/SPASS/
<itemize>
@ -3718,6 +3712,23 @@ LICENSE
<descrip>
<label id="2APL">
<tag/2APL/
<itemize>
<item>Web site: <htmlurl
url="http://apapl.sourceforge.net/">
</itemize>
2APL (pronounced as double-a-p-l) is an agent-oriented programming
language that facilitates the implementation of multi-agent systems. At
the multi-agent level, it provides programming constructs to specify a
multi-agent system in terms of a set of individual agents, a set of
environments in which they can perform actions, and the access relation
between the individual agents and the environments. At the individual
agent level, it provides programming constructs to implement cognitive
agents based on the BDI architecture.
<label id="3APL">
<tag/3APL/
<itemize>
@ -3775,7 +3786,7 @@ LICENSE
<item>Web site: <htmlurl
url="http://www.trl.ibm.com/aglets/index_e.htm">
</itemize>
An aglet is a Java object that can move from one host on the
Internet to another. That is, an aglet that executes on one host can
suddenly halt execution, dispatch to a remote host, and resume
@ -3789,12 +3800,12 @@ LICENSE
is simple, flexible, and stable. Application developers can write
platform-independent aglets and expect them to run on any host that
supports J-AAPI.
<label id="AJA">
<tag/AJA/
<itemize>
<item>Web site: <htmlurl
<item>Web site: <htmlurl
url="http://home.arcor.de/michal.badonsky/AJA/">
</itemize>
@ -3809,12 +3820,12 @@ LICENSE
<label id="A.L.I.C.E.">
<tag/A.L.I.C.E./
<itemize>
<item>Web site: <htmlurl
<item>Web site: <htmlurl
url="http://www.alicebot.org/">
<item>Other AIML implementations:
<htmlurl url="http://pyaiml.sourceforge.net/">
</itemize>
The ALICE software implements AIML (Artificial Intelligence Markup
Language), a non-standard evolving markup language for creating chat
robots. The primary design feature of AIML is minimalism. Compared with
@ -3824,13 +3835,31 @@ LICENSE
implying that it obeys certain grammatical meta-rules. The choice of
XML syntax permits integration with other tools such as XML editors.
Another motivation for XML is its familiar look and feel, especially to
people with HTML experience.
people with HTML experience.
<label id="APRIL">
<tag/APRIL/
<itemize>
<item>Web site: <htmlurl
url="http://sourceforge.net/projects/networkagent/">
</itemize>
APRIL is a symbolic programming language that is designed for writing
mobile, distributed and agent-based systems especially in an Internet
environment. It has advanced features such as a macro sub-language,
asynchronous message sending and receiving, code mobility, pattern
matching, higher-order functions and strong typing. The language is
compiled to byte-code which is then interpreted by the APRIL
runtime-engine. APRIL now requires the InterAgent Communications Model
(ICM) to be installed before it can be installed. [Ed. ICM can be found
at the same web site]
<label id="Ara">
<tag/Ara/
<itemize>
<item>Web site: <htmlurl
<item>Web site: <htmlurl
url="http://wwwagss.informatik.uni-kl.de/Projekte/Ara/index_e.html">
</itemize>
@ -4544,12 +4573,12 @@ name="www.csee.umbc.edu/tkqml/">
An agent is a process that may migrate through a computer network
in order to satisfy requests made by clients. Agents are an attractive
way to describe network-wide computations.
The TACOMA project focuses on operating system support for agents and
how agents can be used to solve problems traditionally addressed by
operating systems. We have implemented a series of prototype systems
to support agents.
TACOMA Version 1.2 is based on UNIX and TCP. The system supports
agents written in C, Tcl/Tk, Perl, Python, and Scheme (Elk). It is
implemented in C. This TACOMA version has been in public domain since
@ -4562,7 +4591,7 @@ name="www.csee.umbc.edu/tkqml/">
and Java. We are now in the process of evaluating this application,
and plan to build a new StormCast version to be completed by June
1997.
<label id="UMPRS Agent">
<tag/UMPRS Agent/
@ -5464,581 +5493,6 @@ name="www.csee.umbc.edu/tkqml/">
</descrip>
<sect>Programming languages
<label id="Programming languages">
<p>
While any programming language can be used for artificial
intelligence/life research, these are programming languages which
are used extensively for, if not specifically made for, artificial
intelligence programming.
<descrip>
<label id="2APL">
<tag/2APL/
<itemize>
<item>Web site: <htmlurl
url="http://apapl.sourceforge.net/">
</itemize>
2APL (pronounced as double-a-p-l) is an agent-oriented programming
language that facilitates the implementation of multi-agent systems. At
the multi-agent level, it provides programming constructs to specify a
multi-agent system in terms of a set of individual agents, a set of
environments in which they can perform actions, and the access relation
between the individual agents and the environments. At the individual
agent level, it provides programming constructs to implement cognitive
agents based on the BDI architecture.
<label id="Alloy">
<tag/Alloy/
<itemize>
<item>Web site: <htmlurl
url="http://alloy.mit.edu/">
</itemize>
The Alloy Analyzer is a tool for analyzing models written in Alloy, a
simple structural modeling language based on first-order logic. The
tool can generate instances of invariants, simulate the execution of
operations (even those defined implicitly), and check user-specified
properties of a model. Alloy and its analyzer have been used primarily
to explore abstract software designs. Its use in analyzing code for
conformance to a specification and as an automatic test case generator
are being investigated in ongoing research projects.
<label id="APRIL">
<tag/APRIL/
<itemize>
<item>Web site: <htmlurl
url="http://sourceforge.net/projects/networkagent/"
name="sourceforge.net/projects/networkagent/">
</itemize>
APRIL is a symbolic programming language that is designed for writing
mobile, distributed and agent-based systems especially in an Internet
environment. It has advanced features such as a macro sub-language,
asynchronous message sending and receiving, code mobility, pattern
matching, higher-order functions and strong typing. The language is
compiled to byte-code which is then interpreted by the APRIL
runtime-engine. APRIL now requires the InterAgent Communications Model
(ICM) to be installed before it can be installed. [Ed. ICM can be found
at the same web site]
<label id="Ciao Prolog">
<tag/Ciao Prolog/
<itemize>
<item>Web site: <htmlurl url="http://www.ciaohome.org/">
</itemize>
Ciao is a complete Prolog system subsuming ISO-Prolog with a novel
modular design which allows both restricting and extending the
language. Ciao extensions currently include feature terms (records),
higher-order, functions, constraints, objects, persistent predicates, a
good base for distributed execution (agents), and concurrency.
Libraries also support WWW programming, sockets, and external
interfaces (C, Java, TCL/Tk, relational databases, etc.). An
Emacs-based environment, a stand-alone compiler, and a toplevel shell
are also provided.
<label id="Curry">
<tag/Curry/
<itemize>
<item>Web site: <htmlurl
url="http://www.informatik.uni-kiel.de/~mh/curry/">
</itemize>
Curry is a universal programming language aiming to amalgamate the most
important declarative programming paradigms, namely functional
programming and logic programming. Moreover, it also covers the most
important operational principles developed in the area of integrated
functional logic languages: "residuation" and "narrowing" (there is an
older survey and a newer survey on functional logic programming).
Curry combines in a seamless way features from functional programming
(nested expressions, higher-order functions, lazy evaluation), logic
programming (logical variables, partial data structures, built-in
search), and concurrent programming (concurrent evaluation of
expressions with synchronization on logical variables). Moreover, Curry
provides additional features in comparison to the pure languages
(compared to functional programming: search, computing with partial
information; compared to logic programming: more efficient evaluation
due to the deterministic and demand-driven evaluation of functions).
<label id="ECLiPSe">
<tag/ECLiPSe/
<itemize>
<item>Web site: <htmlurl
url="http://eclipseclp.org/">
</itemize>
ECLiPSe is a software system for the cost-effective development and
deployment of constraint programming applications, e.g. in the areas of
planning, scheduling, resource allocation, timetabling, transport etc.
It is also ideal for teaching most aspects of combinatorial problem
solving, e.g. problem modelling, constraint programming, mathematical
programming, and search techniques. It contains several constraint
solver libraries, a high-level modelling and control language,
interfaces to third-party solvers, an integrated development
environment and interfaces for embedding into host environments.
<label id="ECoLisp">
<tag/ECoLisp/
<itemize>
<item>Web site (???): <htmlurl
url="http://www.di.unipi.it/&tilde;attardi/software.html">
</itemize>
ECoLisp (Embeddable Common Lisp) is an implementation of
Common Lisp designed for being embeddable into C based
applications. ECL uses standard C calling conventions for Lisp
compiled functions, which allows C programs to easily call
Lisp functions and viceversa. No foreign function interface is
required: data can be exchanged between C and Lisp with no
need for conversion. ECL is based on a Common Runtime Support
(CRS) which provides basic facilities for memory managment,
dynamic loading and dumping of binary images, support for
multiple threads of execution. The CRS is built into a library
that can be linked with the code of the application. ECL is
modular: main modules are the program development tools (top
level, debugger, trace, stepper), the compiler, and CLOS. A
native implementation of CLOS is available in ECL: one can
configure ECL with or without CLOS. A runtime version of ECL
can be built with just the modules which are required by the
application. The ECL compiler compiles from Lisp to C, and
then invokes the GCC compiler to produce binaries.
<label id="ESTEREL">
<tag/ESTEREL/
<itemize>
<item>Web site: <htmlurl
url="http://www-sop.inria.fr/meije/esterel/">
</itemize>
Esterel is both a programming language, dedicated to programming
reactive systems, and a compiler which translates Esterel programs into
finite-state machines. It is particularly well-suited to programming
reactive systems, including real-time systems and control automata.
Only the binary is available for the language compiler. :P
<label id="Godel">
<tag/G&ouml;del/
<itemize>
<item>Web page: <htmlurl
url="http://www.cs.bris.ac.uk/&tilde;bowers/goedel.html">
</itemize>
G&ouml;del is a declarative, general-purpose programming language in the
family of logic programming languages. It is a strongly typed language,
the type system being based on many-sorted logic with parametric
polymorphism. It has a module system. G&ouml;del supports infinite
precision integers, infinite precision rationals, and also
floating-point numbers. It can solve constraints over finite domains of
integers and also linear rational constraints. It supports processing of
finite sets. It also has a flexible computation rule and a pruning
operator which generalizes the commit of the concurrent logic
programming languages. Considerable emphasis is placed on G&ouml;del's
meta- logical facilities which provide significant support for
meta-programs that do analysis, transformation, compilation,
verification, debugging, and so on.
<label id="CLisp">
<tag/CLisp (Lisp)/
<itemize>
<item>Web page: <htmlurl
url="http://clisp.sourceforge.net/">
<item>Alt Web site: <htmlurl url="http://clisp.org/">
</itemize>
CLISP is a Common Lisp implementation by Bruno Haible and Michael
Stoll. It mostly supports the Lisp described by
<htmlurl
url="http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html"
name="Common LISP: The Language (2nd edition)">
and the ANSI Common Lisp
standard. CLISP includes an interpreter, a byte-compiler, a large
subset of CLOS (Object-Oriented Lisp) , a foreign language interface
and, for some machines, a screen editor.
The user interface language (English, German, French) is chosen at
run time. Major packages that run in CLISP include CLX & Garnet.
CLISP needs only 2 MB of memory.
<label id="CMU CL">
<tag/CMU Common Lisp/
<itemize>
<item>Web page: <htmlurl
url="http://www.cons.org/cmucl/">
<item>Linux Installation: <htmlurl
url="http://www.telent.net/lisp/howto.html">
</itemize>
CMU Common Lisp is a public domain "industrial strength" Common
Lisp programming environment. Many of the X3j13 changes have been
incorporated into CMU CL. Wherever possible, this has been done so as
to transparently allow the use of either CLtL1 or proposed ANSI
CL. Probably the new features most interesting to users are SETF
functions, LOOP and the WITH-COMPILATION-UNIT macro.
<label id="Gnu-CL">
<tag/GCL (Lisp)/
<itemize>
<item>FTP site: <htmlurl
url="ftp://ftp.ma.utexas.edu/pub/gcl/">
</itemize>
GNU Common Lisp (GCL) has a compiler and interpreter for Common
Lisp. It used to be known as Kyoto Common Lisp. It is very portable
and extremely efficient on a wide class of applications. It compares
favorably in performance with commercial Lisps on several large
theorem-prover and symbolic algebra systems. It supports the CLtL1
specification but is moving towards the proposed ANSI definition. GCL
compiles to C and then uses the native optimizing C compilers (e.g.,
GCC). A function with a fixed number of args and one value turns into
a C function of the same number of args, returning one value, so GCL
is maximally efficient on such calls. It has a conservative garbage
collector which allows great freedom for the C compiler to put Lisp
values in arbitrary registers.
It has a source level Lisp debugger for interpreted code, with display
of source code in an Emacs window. Its profiling tools (based on the
C profiling tools) count function calls and the time spent in each
function.
<label id="GNU Prolog">
<tag/GNU Prolog/
<itemize>
<item>Web site: <htmlurl url="http://www.gprolog.org/">
</itemize>
GNU Prolog is a free Prolog compiler with constraint solving over
finite domains developed by Daniel Diaz.
GNU Prolog accepts Prolog+constraint programs and produces native
binaries (like gcc does from a C source). The obtained executable is
then stand-alone. The size of this executable can be quite small since
GNU Prolog can avoid to link the code of most unused built-in
predicates. The performances of GNU Prolog are very encouraging
(comparable to commercial systems).
Beside the native-code compilation, GNU Prolog offers a classical
interactive interpreter (top-level) with a debugger.
The Prolog part conforms to the ISO standard for Prolog with many
extensions very useful in practice (global variables, OS interface,
sockets,...).
GNU Prolog also includes an efficient constraint solver over Finite
Domains (FD). This opens contraint logic pogramming to the user
combining the power of constraint programming to the declarativity of
logic programming.
<label id="lush">
<tag/lush/
<itemize>
<item>Web site: <htmlurl
url="http://lush.sourceforge.net/">
</itemize>
Lush is an object-oriented programming language designed for
researchers, experimenters, and engineers interested in large-scale
numerical and graphic applications. Lush is designed to be used in
situations where one would want to combine the flexibility of a
high-level, weakly-typed interpreted language, with the efficiency of a
strongly-typed, natively-compiled language, and with the easy
integration of code written in C, C++, or other languages.
<label id="Maude">
<tag/Maude/
<itemize>
<item>Web site: <htmlurl
url="http://maude.cs.uiuc.edu/">
</itemize>
Maude is a high-performance reflective language and system supporting
both equational and rewriting logic specification and programming for a
wide range of applications. Maude has been influenced in important ways
by the OBJ3 language, which can be regarded as an equational logic
sublanguage. Besides supporting equational specification and
programming, Maude also supports rewriting logic computation.
<label id="Mercury">
<tag/Mercury/
<itemize>
<item>Web page: <htmlurl
url="http://mercurylang.org/">
</itemize>
Mercury is a new, purely declarative logic programming language. Like
Prolog and other existing logic programming languages, it is a very
high-level language that allows programmers to concentrate on the
problem rather than the low-level details such as memory management.
Unlike Prolog, which is oriented towards exploratory programming,
Mercury is designed for the construction of large, reliable, efficient
software systems by teams of programmers. As a consequence, programming
in Mercury has a different flavor than programming in Prolog.
<label id="Mozart">
<tag/Mozart/
<itemize>
<item>Web page: <htmlurl url="http://www.mozart-oz.org/">
</itemize>
The Mozart system provides state-of-the-art support in two areas:
open distributed computing and constraint-based inference. Mozart
implements Oz, a concurrent object-oriented language with dataflow
synchronization. Oz combines concurrent and distributed programming
with logical constraint-based inference, making it a unique choice
for developing multi-agent systems. Mozart is an ideal platform for
both general-purpose distributed applications as well as for hard
problems requiring sophisticated optimization and inferencing
abilities. We have developed applications in scheduling and
time-tabling, in placement and configuration, in natural language and
knowledge representation, multi-agent systems and sophisticated
collaborative tools.
<label id="SWI Prolog">
<tag/SWI Prolog/
<itemize>
<item>Web page: <htmlurl
url="http://www.swi-prolog.org/">
</itemize>
SWI is a free version of prolog in the Edinburgh Prolog family. It is
licensed under the LGPL with many nice features for an AI researcher,
such as; a large library of built-in predicates, a module system,
garbage collection, a two-way interface with the C/C++ language,
coroutines, multi-threading, multiple constraint library, the XPCE
graphics toolkit, plus many more.
<label id="Push">
<tag/Push/
<itemize>
<item>Web site: <htmlurl
url="http://hampshire.edu/lspector/push.html">
</itemize>
Push is a programming language intended primarily for use in
evolutionary computation systems (such as genetic programming systems),
as the language in which evolving programs are expressed. Push has an
unusually simple syntax, which facilitates the development (or
evolution) of mutation and recombination operators that generate and
manipulate programs. Despite this simple syntax, Push provides more
expressive power than most other program representations that are used
for program evolution.
Includes several libraries/systems for working with GP (all info on the
Push page). PushGP is a genetic programming system that evolves
programs in the Push programming language. Pushpop is an
"autoconstructive evolution" system that also evolves Push programs.
SwarmEvolve 2.0 is an autoconstuctive evolution system in which flying
agents, controlled by Push programs, evolve in a 3D environment.
<label id="Kali Scheme">
<tag/Kali Scheme/
<itemize>
<item>Web site: <htmlurl
url="http://community.schemewiki.org/kali-scheme/">
</itemize>
Kali Scheme is a distributed implementation of Scheme that
permits efficient transmission of higher-order objects such as
closures and continuations. The integration of distributed
communication facilities within a higher-order programming
language engenders a number of new abstractions and paradigms
for distributed computing. Among these are user-specified
load-balancing and migration policies for threads,
incrementally-linked distributed computations, agents, and
parameterized client-server applications. Kali Scheme supports
concurrency and communication using first-class procedures and
continuations. It integrates procedures and continuations into a
message-based distributed framework that allows any Scheme
object (including code vectors) to be sent and received in a
message.
<label id="RScheme">
<tag/RScheme/
<itemize>
<item>Web site:<htmlurl
url="http://www.rscheme.org/">
</itemize>
RScheme is an object-oriented, extended version of the Scheme
dialect of Lisp. RScheme is freely redistributable, and offers
reasonable performance despite being extraordinarily portable.
RScheme can be compiled to C, and the C can then compiled with a
normal C compiler to generate machine code. By default, however,
RScheme compiles to bytecodes which are interpreted by a
(runtime) virtual machine. This ensures that compilation is fast
and keeps code size down. In general, we recommend using the
(default) bytecode code generation system, and only compiling
your time-critical code to machine code. This allows a nice
adjustment of space/time tradeoffs. (see web site for details)
<label id="Scheme 48">
<tag/Scheme 48/
<itemize>
<item>Web site: <htmlurl url="http://s48.org/">
</itemize>
Scheme 48 is a Scheme implementation based on a virtual machine
architecture. Scheme 48 is designed to be straightforward, flexible,
reliable, and fast. It should be easily portable to 32-bit
byte-addressed machines that have POSIX and ANSI C support. In
addition to the usual Scheme built-in procedures and a development
environment, library software includes support for hygienic macros (as
described in the Revised&circ;4 Scheme report), multitasking, records,
exception handling, hash tables, arrays, weak pointers, and FORMAT.
Scheme 48 implements and exploits an experimental module system
loosely derived from Standard ML and Scheme Xerox. The development
environment supports interactive changes to modules and interfaces.
<label id="SCM">
<tag>SCM (<bf>Scheme</bf>)
<itemize>
<item>Web site: <htmlurl
url="http://people.csail.mit.edu/jaffer/SCM.html">
</itemize>
SCM conforms to the Revised&circ;4 Report on the Algorithmic Language
Scheme and the IEEE P1178 specification. Scm is written in C. It uses
the following utilities (all available at the ftp site).
<itemize>
<item>SLIB (Standard Scheme Library) is a portable Scheme
library which is intended to provide compatibility and utility
functions for all standard Scheme implementations, including
SCM, Chez, Elk, Gambit, MacScheme, MITScheme, scheme->C,
Scheme48, T3.1, and VSCM, and is available as the file
slib2c0.tar.gz. Written by Aubrey Jaffer.
<item>JACAL is a symbolic math system written in Scheme, and is
available as the file jacal1a7.tar.gz.
<item>Interfaces to standard libraries including REGEX string
regular expression matching and the CURSES screen management
package.
<item>Available add-on packages including an interactive debugger,
database, X-window graphics, BGI graphics, Motif, and
Open-Windows packages.
<item>A compiler (HOBBIT, available separately) and dynamic linking
of compiled modules.
</itemize>
<label id="Shift">
<tag/Shift/
<itemize>
<item>Web site: <htmlurl url="http://www.path.berkeley.edu/shift/">
</itemize>
Shift is a programming language for describing dynamic
networks of hybrid automata. Such systems consist of
components which can be created, interconnected and destroyed
as the system evolves. Components exhibit hybrid behavior,
consisting of continuous-time phases separated by
discrete-event transitions. Components may evolve
independently, or they may interact through their inputs,
outputs and exported events. The interaction network itself
may evolve.
<label id="STELLA">
<tag/STELLA/
<itemize>
<item>Web site: <htmlurl
url="http://www.isi.edu/isd/LOOM/Stella/">
</itemize>
STELLA is a strongly typed, object-oriented, Lisp-like language,
designed to facilitate symbolic programming tasks in artificial
intelligence applications. STELLA preserves those features of Common
Lisp deemed essential for symbolic programming such as built-in support
for dynamic data structures, heterogeneous collections, first-class
symbols, powerful iteration constructs, name spaces, an object-oriented
type system with a meta-object protocol, exception handling, and
language extensibility through macros, but without compromising
execution speed, interoperability with non-STELLA programs, and
platform independence. STELLA programs are translated into a target
language such as C++, Common Lisp, or Java, and then compiled with the
native target language compiler to generate executable code. The
language constructs of STELLA are restricted to those that can be
translated directly into native constructs of the intended target
languages, thus enabling the generation of highly efficient as well as
readable code.
<label id="YAP Prolog">
<tag/YAP Prolog/
<itemize>
<item>Web site: <htmlurl
url="http://www.dcc.fc.up.pt/&tilde;vsc/Yap/">
<item>Sourceforge site: <htmlurl
url="http://sourceforge.net/projects/yap/">
</itemize>
YAP is a high-performance Prolog compiler developed at
LIACC/Universidade do Porto. Its Prolog engine is based in the WAM
(Warren Abstract Machine), with several optimizations for better
performance. YAP follows the Edinburgh tradition, and is largely
compatible with DEC-10 Prolog, Quintus Prolog, and especially
with C-Prolog. Work on the more recent version of YAP strives at
several goals:
<itemize>
<item>Portability: The whole system is now written in C. YAP
compiles in popular 32 bit machines, such as Suns and
Linux PCs, and in a 64 bit machines, the Alphas running
OSF Unix and Linux.
<item>Performance: We have optimised the emulator to obtain
performance comparable to or better than well-known Prolog
systems. In fact, the current version of YAP performs
better than the original one, written in assembly language.
<item>Robustness: We have tested the system with a large array
of Prolog applications.
<item>Extensibility: YAP was designed internally from the
beginning to encapsulate manipulation of terms. These
principles were used, for example, to implement a simple
and powerful C-interface. The new version of YAP extends
these principles to accomodate extensions to the
unification algorithm, that we believe will be useful to
implement extensions such as constraint programming.
<item>Completeness: YAP has for a long time provided most
builtins expected from a Edinburgh Prolog implementation.
These include I/O functionality, data-base operations,
and modules. Work on YAP aims now at being compatible with
the Prolog standard.
<item>Openess: We would like to make new development of YAP
open to the user community.
<item>Research: YAP has been a vehicle for research within and
outside our group. Currently research is going on on
parallelisation and tabulation, and we have started work
to support constraint handling.
</itemize>
</descrip>
<sect>Missing &amp; Dead
<label id="Missing &amp; Dead">