HOME

TheInfoList



OR:

PicoLisp is a programming language, a dialect of the language
Lisp A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech. Types * A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lispin ...
. It runs on
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also ...
s including
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whic ...
and others that are ''Portable Operating System Interface'' (
POSIX The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system- and user-level application programming interf ...
) compliant. Its most prominent features are simplicity and
minimalism In visual arts, music and other media, minimalism is an art movement that began in post– World War II in Western art, most strongly with American visual arts in the 1960s and early 1970s. Prominent artists associated with minimalism include ...
. It is built on one internal
data type In computer science and computer programming, a data type (or simply type) is a set of possible values and a set of allowed operations on it. A data type tells the compiler or interpreter how the programmer intends to use the data. Most prog ...
: a cell. On the language level, a programmer can use three different
data type In computer science and computer programming, a data type (or simply type) is a set of possible values and a set of allowed operations on it. A data type tells the compiler or interpreter how the programmer intends to use the data. Most prog ...
s (numbers, symbols, and lists) being represented by cells and differentiated by bits at the end of the cell. It is
free and open-source software Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the sour ...
released under an
MIT License The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license co ...
(X11).


Features

Functions can accept arbitrary types and numbers of arguments. Macros are needed only in rare cases and are implemented using the quote function. PicoLisp does not include Lisp's lambda function. This is because the quote function is changed to return all its arguments unevaluated, not only the car of the first. A special feature is the intrinsic '' create, read, update, and delete'' (CRUD) functioning. Persistent symbols are
first-class citizen In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. These operations typically include b ...
s (objects), they are loaded from
database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
files automatically when accessed, and written back when modified. Applications are written using a
class hierarchy A class hierarchy or inheritance tree in computer science is a classification of object types, denoting objects as the instantiations of classes (class is like a blueprint, the object is what is built from that blueprint) inter-relating the vario ...
of entities and relations. Other features include:
Prolog Prolog is a 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 intended primarily ...
engine,
database engine A database engine (or storage engine) is the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database. Most database management systems include their own application ...
and database queries, distributed databases, inlining of C language functions and native C function calls, child process management,
interprocess communication In computer science, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an operating system provides to allow the processes to manage shared data. Typically, applications can use IPC, categori ...
, browser
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inst ...
(GUI), and
internationalization and localization In computing, internationalization and localization ( American) or internationalisation and localisation (British English), often abbreviated i18n and L10n, are means of adapting computer software to different languages, regional peculiarities ...
.


History

In the 1980s, PicoLisp began development on the
Macintosh The Mac (known as Macintosh until 1999) is a family of personal computers designed and marketed by Apple Inc. Macs are known for their ease of use and minimalist designs, and are popular among students, creative professionals, and software en ...
, and was used in commercial application development since then. The design of PicoLisp is most similar to the first version of MacLisp, Interlisp and mainly Portable Standard Lisp. It was ported to
DOS DOS is shorthand for the MS-DOS and IBM PC DOS family of operating systems. DOS may also refer to: Computing * Data over signalling (DoS), multiplexing data onto a signalling channel * Denial-of-service attack (DoS), an attack on a communicatio ...
and
SCO Unix Xinuos OpenServer, previously SCO UNIX and SCO Open Desktop (SCO ODT), is a closed source computer operating system developed by Santa Cruz Operation (SCO), later acquired by SCO Group, and now owned by Xinuos. Early versions of OpenServer wer ...
. Since 1993, it was used mainly on Linux. In the mid-1990s, database functions were added. The first versions were written in a mix of C and
assembly language In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence b ...
. In 1999, a first rewrite from scratch was done, fully in C. In 2002, that version was released under a
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
(GNU GPL). In 2010, it changed to an MIT/X11 license. In 2009, the
64-bit In computer architecture, 64-bit integers, memory addresses, or other data units are those that are 64 bits wide. Also, 64-bit CPUs and ALUs are those that are based on processor registers, address buses, or data buses of that size. A comput ...
version was released, another rewrite, this time written in generic assembly, which in turn is implemented in PicoLisp. This version adds support for
coroutine Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowing execution to be suspended and resumed. Coroutines are well-suited for implementing familiar program components such as cooperativ ...
s. In December 2010, a
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
version named ''Ersatz PicoLisp'' was released. In September 2014, Burger announced the PilMCU project on the PicoLisp development
listserv The term Listserv (styled by the registered trademark licensee, L-Soft International, Inc., as LISTSERV) has been used to refer to electronic mailing list software applications in general, but is more properly applied to a few early instances of ...
, an effort with George Orais to implement PicoLisp in hardware directly. In July 2015, Burger announced PilOS - The PicoLisp Operating System, a minimal prototype based on the modification of PilMCU targeting embedded applications. It runs on standard x86-64 PC hardware, directly off the BIOS and includes all the features of 64-bit PicoLisp (minus native function calls, due to the fact there is no other native environment such as the C standard library); in principle, it works as its own operating system. In the summer of 2016, development of ''PilBox'' ("PicoLisp Box") – a generic Android app allowing to write apps in pure PicoLisp – was started. It is still being developed and maintained. In 2021, PicoLisp was re-implemented in
LLVM LLVM is a set of compiler and toolchain technologies that can be used to develop a front end for any programming language and a back end for any instruction set architecture. LLVM is designed around a language-independent intermediate represe ...
and released as ''pil21''. The source language which is compiled to LLVM-IR is also in PicoLisp syntax.


References


External links

*
Picolisp on C2 wikiA blog on functional programming in PicoLispRolling Release of PicoLispPicoLisp Repository on GitHub
{{Lisp programming language Lisp programming language family Dynamically typed programming languages Programming languages created in 1988