[Openmcl-devel] bad impressions to Lisp newbies
ralex at cs.colorado.edu
Fri Apr 24 02:53:51 EDT 2009
I wanted to show to a non Lisp programmer why Lisp is good in general
and Clozure CL in particular. Things went, lets just say, rather
terrible. Here is rough "transcript" of the story (A: for Alex, N: for
Chapter 1: Getting CCL to work
The need to install via SNV did not go over well.
N: Why is there non disk image?
A: Oh well, that is just how things are, Now we need to built the IDE.
N: built the IDE ? Huhh, why?
A: Oh well, that is just how things are
Welcome to Clozure Common Lisp Version 1.3-r11936 (DarwinX8664)!
? (require :cocoa-application)
'make install' of AltConsole.app failed:
N: Ouch.. what does that mean.
A: Not sure, this could be bad. This is about AltConsole.app
A: never mind
Now we try the same thing for the 32bit version. Same problem. Worse,
both the application icons carry the scary looking architecture not
supported badge. That is usually the sign that this will not work at
all. Strange, the computer is a brand new MacBook Core 2 Duo running
10.5.6. Hmmmmm.... Trying to launch the apps anyway. Listerner comes
up. We must be OK then.
Chapter 2: from bad to worse. Running examples is Lisp is easy... OR
The beauty of Lisp that you can always find some easy to run examples.
Load the file, eval the sample code, done...
I go to the example folder and pick them randomly, really.
- Lets try some exciting OpenGL 3D code: opengl-ffi.lisp seems to
load, beach ball, crash, uh oh.
- something simpler then: finger.lisp this should be simple. It loads,
yeah! Now we eval the "for testing try" part
> Error: Connection refused (error #61) during socket creation or
nameserver operation in connect
> While executing: SOCKET-ERROR, in process Listener(6).
> Type :POP to abort, :R for a list of available restarts.
> Type :? for other options.
- how about WebKit.lisp, loads but then when trying to make a window:
> Error: Objective-C runtime exception:
> objc_object* -[WebView initWithFrame:frameName:groupName:]
(WebView*, objc_selector*, NSRect, NSString*, NSString*) was called
from a secondary thread
> While executing: CHECK-NS-EXCEPTION, in process Listener(6).
hard to believe but it gets worse:
- addressbook.lisp does not load at all
> Error: Too few arguments in call to #<Compiled-function FAKE-
> 1 argument provided, at least 3 required.
> While executing: FAKE-CFBUNDLE-PATH, in process Listener(6).
- mswin.lisp tries to load a .dll Ohhh this is a window program. Why
is this in the darwin distribution?
We give up.
Draw you own conclusions but this is a true story and it does not have
a happy ending. Newbie walked away. I guess one may claim that for us
old Lisp hackers this would not be much of a problem. Hey, we do not
really need these examples, we can find a way to build, etc. I am sure
there are good explanations why the things happened that I have
described above. Nonetheless, it is hard to image how one could have
left a worse impression on a new potential Lisp user. I mean, NOTHING,
not a single example that we tried worked.
Do not understand me wrong. I am not bashing CCL. On the contrary. I
really do appreciate the work that goes into it. I would like for CCL
to succeed but this is frustrating. Here are some more constructive
- sources and svn access are great but please also do give us .img
files of stable versions
- example files are appreciated but if they do not work for whatever
reason it may be better to move them into some kind of untested
I still think that Lisp, if packaged up the right way (e.g., open
source, cross platform: OpenGL + Cocoa) Lisp/CCL could become a great
teaching tool which could actually attract, imagine that, NEW Lisp
programmers in graphics and HCI courses. The thing most disturbing to
me is not just how far away we are from that point right now but that
most people do not seem to care.
Prof. Alexander Repenning
University of Colorado
Computer Science Department
Boulder, CO 80309-430
More information about the Openmcl-devel