
Why Common Lisp Bothers Me - semmons
http://lovehateubuntu.blogspot.com/2010/03/why-common-lisp-bothers-me.html
======
asolove
Summary: "Because I'm used to something else."

\- executables: [1] \- library: while there are certain libraries that are
harder to set up in CL than Ruby/Python, the provided example of list and
string functions is laughable. [2] [3]

[1] <http://www.xach.com/lisp/buildapp/> [2] <http://cl-
cookbook.sourceforge.net/strings.html#number>

~~~
jimbokun
Buildapp looks like a very nice solution to a long standing Common Lisp
problem. When I was still reading comp.lang.lisp, seemed like every request
for how to build an executable turned into a long diatribe about how "you
really don't want to do that", "you're thinking in the UNIX way, not the Lisp
way", yadda yadda yadda. Now, that question can be just be answered with the
buildapp URL.

Agreed that thinking Common Lisp lacks adequate ways to manipulate sequency
things is quite funny. The main problem is the lack of definitive libraries
for things that were not included in the standard 20 some years ago.

------
oconnore
I don't consider the executable critique to be legitimate. Java cannot run
without a JRE, and arbitrary Lisp code cannot run without the entire Lisp
image without losing runtime compilation. It would be possible to forbid (eval
...) and friends from a source program, and then save a Lisp image sans
compilation machinery, but that is a lot of work to save a few megabytes and
you would break compatibility with existing code in the process.

~~~
tjr
Things would be better for Lisp if it were as easy for non-hacker end users to
obtain and install the needed Lisp system.

A Google search for _java runtime_ results in top hits like "Download Free
Java Software", "Java Downloads for All Operating Systems", "Java SE
Downloads" (with the pertinent phrase visible, "What Java Do I Need?").

A search for _Lisp runtime_ results in top hits like a chapter from the
gigamonkeys.com Lisp book, an irrelevant question thread on StackOverflow, and
a somewhat relevant page about the Lisp runtime that comes with Autodesk.

I can imagine that doing something like, say, making an easy-to-find, easy-to-
download, easy-to-install package of CLisp, tossing in wx widget bindings for
good measure, would go a long way toward making distribution of Lisp software
easier.

~~~
rbanffy
What you would like is a "download it here" link on <http://lisp.org/>

It's not as trivial as that.

------
icey
The only thing about Common Lisp that bugs me is that it seems increasingly
unlikely that we'll see an updated spec. It kind of sucks for anyone who wants
to create a new CL implementation because of all of the anachronisms in the
ANSI spec. Additionally, new things like concurrency end up getting done a
bunch of different ways between implementations which kind of screws up code
portability.

------
diiq
Yeah, this was frustrating to me as well. oconnore's point is valid, in that
CL is not the only language to behave this way --- but Java (his example) is
more up front about it :) (that is to say, learning Java, you learn this
limitation quickly, and it's not a problem because most machines have a JRE;
CL you might go some distance before you have to look up what's going on, and
once you do you realize how few machines have a CL).

Don't get me wrong, I still love me some common lisp --- but I agree with
Britton that the issue shouldn't be dismissed as meaningless.

~~~
oconnore
So, Java is popular because it is popular... ugh. :P

------
ynniv
Clojure is popular for these exact reasons. Clojure apps are deployed like any
Java app, and they can access the huge library of Java.

Java also deploys an image that needs to be executed in a runtime, but the
industry is so familiar with the JVM that it is a moot point.

------
brewski
Here's an example of building an executable using CLISP on windows:
[http://grault.wordpress.com/2009/10/30/common-lisp-gui-
appli...](http://grault.wordpress.com/2009/10/30/common-lisp-gui-application-
shipment-delivery-on-windows/)

------
lispm
(deliver 'my-main-foo-function "/Users/joswig/lispfoo" 0)

Delivers an executable as a single file in LispWorks. Most implementations
have something similar depending on what kind of architecture they are based
on). Exceptions are Lisp to C compilers and Lisp Machines. But it is unlikely
that you will use one of them.

------
leif
I had the same issue learning the standard library. It's huge, redundant (I
think...), and has completely unsearchable names and no organization or
hierarchy.

I seem to remember sbcl having some way to compile real executables though,
someone back me up on this?

