====== Lush ======
{{lush-frog.jpg?160 }}
Lush ([[http://lush.sourceforge.net]]) is an object-oriented programming language designed for researchers, experimenters, and engineers interested in large-scale numerical and graphic applications. It was designed to facilitate experimentation with multilayer neural networks and more generally to research what is now named deep learning. In general, Lush can is useful 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.
===== Features =====
Lush is particularly suitable for research and development in signal processing, image processing, machine learning, computer vision, bio-informatics, data mining, statistics, simulation, optimization, or artificial intelligence.
It also provides a simple environment to experiment with graphics, video, and sounds.
Lush's main features includes:
* A clean and easy to learn Lisp syntax.
* A compiler that produces efficient C code and relies on the C compiler to produce efficient native code.
* A powerful dynamic linker/loader to interface libraries written in other languages.
* The ability to freely mix Lisp and C in a single function.
* A powerful set of vector/matrix/tensor operations.
* A library of over 10,000 numerical routines, including full interfaces to GSL, LAPACK, and BLAS.
* A library of image and signal processing routines.
* An extensive set of graphic routines, including an object-oriented GUI toolkit.
* An interface to OpenGL and OpenInventor.
* An interface to the Simple Directmedia Layer (SDL) multimedia library.
* Sound and video grabbing (using ALSA and Video4Linux).
* Libraries for machine learning, neural networks, Hidden Markov Models, etc.
* Libraries for computer vision and scene rendering.
* Bindings to the JavaVM API and to the Python C API.
* Free Software released under the GPL.
* Runs on Linux, MacOS and other Unix platforms.
Most users use Lush as a research tool, but many use it as a general purpose script language, or as a general language for application development. Some have been known to use Lush to develop 2D and 3D games. A few have even used Lush to develop commercial software for embedded processors.
===== Screenshots =====
A page of the online documentation:
{{ lush-helptool02.png?500 }}
The plotting tools showing spline computed using the GSL bindings:
{{ lush-gsl-spline.png?500 }}
===== History =====
Lush is the direct descendent of the SN and TL3 systems.
SN was originally developed by [[:start|Léon Bottou]],
and [[http://yann.lecun.com|Yann LeCun]]
in 1987 as the front-end of a neural network simulator.
Various incarnations of SN/Lush have been developed continuously since 1987,
some of which were sold commercially by [[:projects:neuristique|Neuristique]] until 2001.
The system eventually grew into a full-fledged prototyping and development environment.
[[:projects:neuristique|Neuristique]] released the source code of the lisp
interpreter in 2000 under the name [[:projects:TL3|TL3]].
Meanwhile, parallel versions of SN were developed at
[[http://www.research.att.com|AT&T Bell Laboratories]]
and [[http://www.research.att.com|AT&T Labs]] between 1988 and 2001.
AT&T released its code under the GPL in 2001.
Transforming the various incarnations of SN into Lush was done at the
[[http://www.nec-labs.com|NEC Research Institute]] by [[:start|Léon Bottou]], [[http://yann.lecun.com|Yann LeCun]], and [[http://cs.nyu.edu/~jhuangfu|HuangFu Jie]].
Lush has been used to build many successful technologies and products:
* A handwriting recognition system used by many banks across the world reads checks automatically. Some ATM machines made by [[http://www.ncr.com|NCR]] can read checks using compiled SN code running on embedded DSP boards. A version of this check reader is embedded in large check reading engines sold by NCR and OrboGraph. According to some estimates, this system processes 10 to 20 percent of all the checks written in the US.
* The first prototype of the [[:research:djvu|DjVu]] image and document compression system, including the first decoder and the first foreground/background segmenter.
* Numerous machine learning algorithms developed have been developed with SN, including convolutionnal neural networks for [[http://yann.lecun.com/exdb/lenet|image recognition]] or [[:research:convnets|signal processing]], and [[:projects:svqp|early implementations of Support Vector Machines]].
===== Links ====
Léon Bottou and Yann Le Cun: **SN: A Simulator for Connectionist Models**, //Proceedings of NeuroNimes 88//, 371-382, Nimes, France, 1988.
[[papers/bottou-lecun-88|more...]]
Léon Bottou and Patrick Gallinari: **A Framework for the Cooperation of Learning Algorithms**, //Advances in Neural Information Processing Systems 3 (NIPS 1990)//, Edited by D. Touretzky and R. Lippmann, 781-788, Morgan Kaufmann, Denver, 1991.
[[papers/bottou-gallinari-90|more...]]
Léon Bottou and Yann Le Cun: **//Lush Reference Manual//**, 2002-present.
Available online [[http://lush.sourceforge.net/doc.html]]