newLISP

newLISP
newLISP
Nl logo libel side color 240X100.png
Paradigm(s) Multi-paradigm
Appeared in 1991
Designed by Lutz Mueller
Developer Lutz Mueller of Nuevatec
Stable release 10.3.3 (September 21, 2011; 61 days ago (2011-09-21))
Preview release 10.3.6 (November 18, 2011; 3 days ago (2011-11-18))
OS Cross-platform
License GNU General Public License
Website www.newlisp.org

newLISP is an open source scripting language in the Lisp family of programming languages developed by Lutz Mueller and released under the GNU General Public License.

Contents

History

newLISP originated in 1991 and was originally developed on a Sun-4 workstation.[1] It later moved to Windows 3.0, where version 1.3 was released on CompuServe around 1993, then became available as a Windows GUI graphics-capable application and a DOS console application (both 16-bit). In 1995, with the release of Windows 95, newLISP moved to 32-bit.

In April 1999, newLISP was ported to Linux; some of its core algorithms were rewritten, and all Windows-specific code eliminated. NewLISP was released as an Open Source project licensed under the GPL, and development on Windows stopped after version 6.0.25. During the first half of 2001, newLISP was ported back to Windows on the Cygwin platform without graphics capabilities. A multi-platform Tcl/Tk frontend named newLISP-tk was released around version 6.3.0, during the second half of 2001. 64-bit precision was introduced for integer arithmetic and for some operations on files in version 9.0 in 2006.

Since the release of 6.5 in mid 2002, development has been very active, and many new features have been added.

Philosophy

NewLISP attempts to provide a fast, powerful, cross-platform, full-featured scripting version of the Lisp programming language while using only a modest amount of system resources such as disk space and memory.

It provides Lisp features such as lists, symbol processing, function mapping, anonymous functions (lambda expressions), s-expressions (excluding improper lists), and macros. It also provides the functions expected of a modern scripting language, including support for regular expressions, XML, Unicode (UTF-8), TCP/IP and UDP networking, matrix and array processing, advanced math, statistics and Bayesian statistical analysis, financial mathematics, and distributed computing support.

NewLISP runs on the BSD, Linux, Windows, Mac OS X, and Solaris operating systems. It provides support for MYSQL, SQLite and ODBC database access, CGI, SMTP, POP3, FTP and XML-RPC. It can run in server mode as a daemon.

The language

Contexts

NewLISP supports namespaces called contexts, which can be assigned to variables and passed to functions, but which are associated with globally unique symbols, limiting their usage as first-class objects. A prototype-based object-oriented style of programming is possible in newLISP, using contexts as prototypes for construction of objects. Variables inside contexts do not interfere with variables of the same name in other contexts, but inside a context, variables behave according to the rules of dynamic scoping.

Scoping

NewLISP uses dynamic scoping. When a function is called, that function can see all variables of its caller, its caller's caller, and so on, within the same context or name space. It supports both explicitly and implicitly defined local dynamic variables that shadow variables with the same name from the outer environment, so accidental use or change of the variables from caller environment is prevented. Parameter variables of the called function automatically shadow the caller's variable environment. Globally, variables can be grouped in separate namespaces.

Memory management

NewLISP uses a method of automatic memory management different from traditional garbage collection schemes, called One Reference Only (ORO) Memory Management. Each variable is referenced only by its context, and each context is referenced globally.

Sharing of sub-objects among objects, cyclic structures, or multiple variables pointing to the same object are not supported in newLISP. Objects are copied when stored in data structures or passed to functions, except for particular built-in functions. The exceptions are symbols and contexts, which are shared instead of copied, and therefore can be used for indirection. Symbols and contexts are globally named and are deleted explicitly; deleting a symbol or context scans all other objects to replace references to it with nil.

GUI options

newLISP-GS (Gui Server) is a Java-based TCP/IP server providing a graphical programming interface. A newLISP-GS based development environment is included in newLISP binary distributions, but GTK-server, OpenGL and Tcl/Tk-based programming interfaces are also available.

Stand-alone binaries

It is possible to construct executable files for deployment using any version of newLISP. These files are self-contained and require no installation.

Interaction with shared libraries

newLISP has an import function, which allows importing functions from DLLs (Dynamic Link Libraries) on Win32 or shared libraries on Linux/UNIX.

References

  1. ^ newLISP – a LISP Scripting Language

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • NewLisp — Erscheinungsjahr: 1991 Entwickler: Lutz Mueller Aktuelle Version: 9.4.5  (5. August 2008) Betriebssystem: Plattformunabhängig Lize …   Deutsch Wikipedia

  • Newlisp — Erscheinungsjahr: 1991 Entwickler: Lutz Mueller Aktuelle Version: 9.4.5  (5. August 2008) Betriebssystem: Plattformunabhängig Lize …   Deutsch Wikipedia

  • NewLISP — Erscheinungsjahr: 1991 Entwickler: Lutz Mueller Aktuelle Version: 10.3.3  (21. September 2011) Betriebssystem: Plattformunabhängig …   Deutsch Wikipedia

  • NewLISP — Infobox programming language name = Newlisp paradigm = Multi paradigm year = 1991 designer = Lutz Mueller developer = Lutz Mueller of Nuevatec latest release version = 9.4 latest release date = July 1, 2008 typing = implementations = dialects =… …   Wikipedia

  • Lisp — Paradigmen: multiparadigmatisch: funktional, prozedural; manche Dialekte außerdem modular, objektorientiert, reflexiv Erscheinungsjahr: 1958 Designer …   Deutsch Wikipedia

  • List Processing — LISP Paradigmen: multiparadigmatisch: funktional, prozedural; manche Dialekte außerdem modular, objektorientiert, reflexiv Erscheinungsjahr: 1958 Designer …   Deutsch Wikipedia

  • Lisp (programming language) — Infobox programming language name = Lisp paradigm = multi paradigm: functional, procedural, reflective generation = 3GL year = 1958 designer = John McCarthy developer = Steve Russell, Timothy P. Hart, and Mike Levin latest release version =… …   Wikipedia

  • LISP — Paradigmen: multiparadigmatisch: funktional, prozedural; manche Dialekte außerdem modular, objektorientiert, reflexiv Erscheinungsjahr: 1958 Designer: John McCarthy …   Deutsch Wikipedia

  • Scriptsprache — Skriptsprachen (häufig auch Scriptsprachen) sind Programmiersprachen, die vor allem für kleine, überschaubare Programmieraufgaben gedacht sind. Sie verzichten oft auf bestimmte Sprachelemente, deren Nutzen erst bei der Bearbeitung größerer… …   Deutsch Wikipedia

  • Serverbasierte Skriptsprache — Skriptsprachen (häufig auch Scriptsprachen) sind Programmiersprachen, die vor allem für kleine, überschaubare Programmieraufgaben gedacht sind. Sie verzichten oft auf bestimmte Sprachelemente, deren Nutzen erst bei der Bearbeitung größerer… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”