|Flush, the Lush mascot.|
What's with all the frogs?
Well, Yann LeCun and Leon Bottou are both French, and many of the past
contributors have been French or French-speaking (Patrice Simard,
Yoshua Bengio, Patrick Haffner, Pascal Vincent).
Years of extensive focus groups studies and consultation with top
marketing experts convinced us that using an escargot would
send the wrong message for an allegedly fast language.
Also, frogs are very good at catching bugs.
Cute penguins and gnus were already taken, as well as the
numerous species found on the covers of O'Reilly books.
We like frogs. Really. Some of our best friends are frogs.
Particularly those accompanied by garlic and butter.
[No Frog was physically harmed
in the making of this page, though we probably did hurt
I want to get started, is there a good tutorial on Lush?
Have a look at this tutorial.
This site looks like a rip-off of the DjVuLibre site
Lush and DjVu were produced by
the same people (in fact Lush was used to prototype the first version
of DjVu). So, no rip-off, just laziness.
[This page is made entirely of recycled HTML tags]
I'm a Matlab user, why should I switch to Lush?
Lush has several advantages and disadvantages over Matlab.
Advantages:: (1) Lush is free/open source, which means it can take advantage
of the innumerable open source libraries available on the Web (GSL, SDL, OpenCV, OpenRM....),
and also profit from the considerable amount of work done by "People Like You"(tm).
Open source libraries cannot be distributed with Matlab because of license incompatibilitites.
(2) Matlab code is very slow unless it is written in so-called "vectorized" form.
Lush has no such problem: the compiler allows you to write your own "for" loops
without performance penalty. (3) you can easily integrate with C (4) Lush is a full-fledged
object-oriented programming language with a tried-and-true syntax, not a glorified script
language with a funny syntax (not mentioning no real support for complex data structures).
This is particularly important if you develop medium-size or large applications (as opposed
to quick hacks). (5) With Lush, no inefficient data shuffling and copying
happens behind your back unless you want it. (6) have you tried real-time video grabbing
and processing in Matlab? Have you tried to train a one-million weight convolutional neural
network in Matlab?
Disadvantages: (1) The Lush libraries and packages are not (yet) as large and complete
as the Matlab toolboxes. (2) The Lush syntax, while being a lot simpler than Matlab's,
is not as compact.
In other words, naive users can probably do small projects faster in Matlab, but building
larger projects, writing your own algorithms, or building real-time applications and demos
can be done much more efficiently in Lush.
How does Lush compares to Matlab/Octave for speed?
Mwahaha, I loooove that question.
Here is a Matlab/Octave code snippet to compute the n-th term of the harmonic series:
function z = harmonic (n)
z = 0.0
for i = 1:n
z = z + 1/i;
Here is the same thing in interpreted Lush:
(de harmonic-i (n)
(let ((z 0)) (for (i 1 n) (incr z (/ i))) z))
Same code with typed variables, so we can compile it:
(de harmonic-c (n)
(let* ((z 0)) ((-double-) z) (for (i 1 n) (incr z (/ i))) z))
And now (that's the part I like) the comparison of running times for n=1,000,000 (on an 800MHz P4 Mobile):
|Language||running time||speed up|
|Lush interpreted||1.0 seconds||16:1|
|Lush compiled||0.05 seconds||318:1|
The dynamic linker/loader is kinda cool Have you guys done other things in this area?
Yup, Leon is the guy who wrote the
How big is Lush?
About 47K lines of C in the src and include directories;
about 1000 functions defined at startup; 48K lines of Lush
and 1300 functions in the library; and 12,000 functions in
the Packages directory (this represents several 100 kilo-lines
of code but much of it is binding to external libraries).
Oh, and 650 pages of documentation.
Does Lush run on Windoze?
As of 2003-02-19, the CVS version runs on Windoze under Cygwin.
Everything works fine including the interpreter, the compiler, the
dynamic loader, the X11 graphics and events, and all the standard
library. External packages such GSL, SDL, OpenGL, etc don't work
yet. Any volunteer?
Does Lush run on Mac OS X?
Yes. Use CVS to obtain the latest version of Lush.
To compile, you need Apple's X11 server and development files.
Lush works well with DarwinPorts
Where do I report bugs?
Go to this
page on Sourceforge.net.
Is Lush only good for numerical stuff?
No, Lush is a full-fledged Lisp. Let me put it another way: the Lush
compiler is written in Lush.
Why does the Lush interpreter use dynamic binding and not lexical scoping?
No particular reason other than history. The design of the interpreter
is pre-Scheme/pre-CommonLisp, and it shows. We may provide support for
lexically scoped variables in the future. But we will keep the ability
to create dynamically bound variables because many parts of the library
and the compiler rely on it.