Lush Home
News
Screenshots
Downloads
Documentation
FAQs
Project Page
CVS Tree
History/Credits
Links/Contacts
To Do List
SourceForge Logo

Frequently Asked Questions


Project Page |  Forums |  Tracker |  Bugs |  Support |  Patches |  Tasks |  News |  CVS |  Files | 
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 their feelings.]

 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;
   endfor
 endfunction
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)
    ((-double-) 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):
Languagerunning timespeed up
Octave15.9 seconds1:1
Lush interpreted1.0 seconds16:1
Lush compiled0.05 seconds318: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 ObjPrelink hack.

 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 or Fink.

 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.

Lush