Picolisp
Encyclopedia
PicoLisp is an open source Lisp dialect. It
runs on Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 and other POSIX
POSIX
POSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...

-compliant systems.

Features

Its most prominent feature is "simplicity". It is built on top of a single
internal data type
Data type
In computer programming, a data type is a classification identifying one of various types of data, such as floating-point, integer, or Boolean, that determines the possible values for that type; the operations that can be done on values of that type; the meaning of the data; and the way values of...

 (cell), without giving up flexibility and expressive
power. On the language level, it supports just three data types (numbers,
symbols and lists), constructed from internal cells.

Because the only non-atomic
S-expression
S-expressions or sexps are list-based data structures that represent semi-structured data. An S-expression may be a nested list of smaller S-expressions. S-expressions are probably best known for their use in the Lisp family of programming languages...

 data type is the linked list, many
interoperable functions exist that concentrate on list processing. As a
result, PicoLisp programs are often more succinct - and at the same time faster
- than those of other interpreted languages (see examples in
rosettacode.org).

Functions are free from the restrictions that
would be imposed by a compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

, and can so accept arbitrary types and
numbers of arguments. Macros are needed only in rare cases.

A special feature is the intrinsic database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

 functionality. Persistent
symbols are first-class object
First-class object
In programming language design, a first-class citizen , in the context of a particular programming language, is an entity that can be constructed at run-time, passed as a parameter, returned from a subroutine, or assigned into a variable...

s, they are loaded from database files
automatically when accessed, and written back when modified. Applications are
written using a class hierarchy
Class hierarchy
As in taxonomy, the classifications of species, a class hierarchy in computer science is a classification of object types, denoting objects as the instantiations of classes inter-relating the various classes by relationships such as "inherits", "extends", "is an abstraction of", "an interface...

 of entities and
relations
Entity-relationship model
In software engineering, an entity-relationship model is an abstract and conceptual representation of data. Entity-relationship modeling is a database modeling method, used to produce a type of conceptual schema or semantic data model of a system, often a relational database, and its requirements...

.
Additional features include: Prolog
Prolog
Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of...

 engine and database queries, distributed databases,
inlining of C language
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 functions and native C
function calls, child process management, interprocess communication,
browser GUI, and internationalization
Internationalization and localization
In computing, internationalization and localization are means of adapting computer software to different languages, regional differences and technical requirements of a target market...

.

History

Originally developed on the Apple Macintosh in the 1980s, and used in
commercial application development since then. It was soon ported to MS-DOS
MS-DOS
MS-DOS is an operating system for x86-based personal computers. It was the most commonly used member of the DOS family of operating systems, and was the main operating system for IBM PC compatible personal computers during the 1980s to the mid 1990s, until it was gradually superseded by operating...


and SCO Unix, and used mainly on Linux since 1993. Database functionality
was added in the mid-1990s.

While the first versions were written in a mix of C and Assembly language
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

, a
first rewrite from scratch was done in 1999 completely in C. That version was
released 2002 under the GNU GPL license, and changed to a MIT/X11 license in
2010.

In 2009 the 64-bit
64-bit
64-bit is a word size that defines certain classes of computer architecture, buses, memory and CPUs, and by extension the software that runs on them. 64-bit CPUs have existed in supercomputers since the 1970s and in RISC-based workstations and servers since the early 1990s...

 version was released, another rewrite, this time written
in a generic assembler which in turn is implemented in PicoLisp.

A Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

version was released in December 2010.http://software-lab.de/ersatz/README

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK