views:

1609

answers:

15

I'm working on a toolkit (sort of a live-CD Lisp-in-a-Box) for people new to Common Lisp, and I want to make sure it is broadly satisfying. What is attractive to you about Lisp? What do/did/would you need to get you started and keep you interested?

What I have so far: SBCL 10.22, Emacs 22.3, SLIME, and LTK bundled together and configured on a Linux live-CD that boots entirely to RAM.


I've now released the result of this; it is available at the Thnake website.

+1  A: 

This does:

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Of course I'd also like to learn more Python 3.0, erlang, and F#. I believe that functional languages (not to say that Python is a functional language) provide just a different perspective. The more perspective you have the better solutions you can architect. It is all about using the right tools for the job too, but if you don't at least have familiarity with something you might never think to solve a problem with a particular tool. I guess it goes back to the old saying that to a carpenter everything looks like a nail. I do not want to be hammering C# into everything when there are better solutions available. Also, times change and fads do with them.

Steven Behnke
+5  A: 

My suggestion is to include an HTTP server like Hunchentoot and a popular web framework. I suspect that most people that want to learn Lisp these days do so because of reading Paul Graham, and wanting to mimic his success at building Viaweb, so being able to easily create and modify powerful web applications would be a strong selling point for your live CD.

Kyle Cronin
Good point, but Hunchentoot is an HTTP server, not a web framework. Do you think something like Weblocks would be a good choice?
JasonFruit
I don't have much experience with web apps on Common Lisp, but there's really no reason not to include as many popular frameworks and HTTP servers as you can. Weblocks sounds similar to PLT's Web Server, so I do think that it would be a good start, but make it very, very easy to get up and running.
Kyle Cronin
I would include UnCommon Web (UCW) - it's an interesting CL web framework.
Technical Bard
+8  A: 

I would include at least cl-ppcre, clx, Hunchentoot, and Weblocks.

I guess that you would have to negotiate with the respective authors, but including "On Lisp", "Practical Common Lisp", and "Successful Lisp" would be a great asset for the CD.

What would be really nice is to use stumpwm as the window manager on your live CD.

Svante
I'd love to use stumpwm, but I'm looking to make this easy for people of a lot of backgrounds; stumpwm is cool but idiosyncratic.
JasonFruit
Good call on the books; I'll have to talk at least to Peter Seibel, which I think is the most likely choice.
JasonFruit
Perhaps you could at least give stumpwm as an option (I use gdm for the login screen, where you can choose your window manager).
Svante
You can download "On Lisp" for free (www.paulgraham.com under "Books". At least have a link to there, and ask Paul Graham about including it on the CD.
David Thornley
All the books I mentioned are freely available.
Svante
A: 

Reading Paul Graham makes me want to learn Common Lisp. But if I actually sit down to try learning it, the urge subsides.

John D. Cook
So what discourages you? I'd like to try to smooth it over as much as possible so people have a better experience.
JasonFruit
Great answer! :D
ShreevatsaR
Programming is hard, let's go shopping!
Luís Oliveira
John Cook isn't someone who avoids hard problems. His "Endeavor" blog is one that I turn to every day. Love your stuff, John. Great insight.
duffymo
I wrote John for details, and he sent me a nice reply. To summarize: Lisp's lack of syntax makes it verbose and time-consuming for simple, common tasks; the multiplicity of implementations and lack of mainstream tools make it difficult to handle; and Python allows you to write Lispy code much more efficiently.
JasonFruit
+2  A: 

Everything in clbuild (http://common-lisp.net/project/clbuild) should be a good candidate to be included. Incidentally, all packages in your list except Emacs are also managed by clbuild. I think it'd be good if the collection of projects in clbuild could gather some momentum towards standard-common-lisp-library-hood.

huaiyuan
+3  A: 

Emacs almost prevented me from learning Common Lisp. It took a lot of effort to slog through it. Emacs and SLIME are too much for a beginner and will never be broadly satisfying to beginners. If I want to learn a new programming language, I want everything else to stay out of my way while I learn it. The task of learning Lisp is hard enough without added technicalities and complications of setting up an environment. Isolate the variable.

Set up SBCL with rlwrap or an equivalent. rlwrap supports very basic paren matching and history searching and can even do tab-completion. Not as fancy as SLIME but a beginner doesn't need SLIME. A beginner needs to be able to run hello-world without spending an hour fighting Emacs. Provide Emacs/SLIME as an option but don't require it.

Brian Carper
I see the point here, but Emacs is so prevalent among Lisp types and so perfectly mated to the language that I think it would serve people badly to suggest they learn on anything else (I almost said, "less").
JasonFruit
Emacs is prevalent among Lisp EXPERTS. Not beginners. If someone was learning C for the very first time, should step one be "Install Visual Studio and spend a day learning how to use it like a pro"? No, it would be "Write your code in a simple text editor and compile it manually the hard way".
Brian Carper
Hogwash. I learnt Lisp and Emacs simultaneously, and think they reinforce each other. Emacs/Slime provides symbol-completion, auto function arguments lookup and easy access to documentation, code navigation, etc, etc, all of which help tremendously in getting me up to speed.
huaiyuan
I don't see why people are against giving new users options. As long as people have this One True Editor mindset, CL is never going to appeal broadly. It's borderline dogmatic. You can't force Emacs down everyone's throat.
Brian Carper
I'm working on compiling Geany with Common Lisp highlighting and execution.
JasonFruit
Emacs is not hard, get over it.
Luís Oliveira
Reguardless of whether or not Emacs is hard to use (which is subjective,) why not include more than one environment and let users choose? Ultimately, think of the user of the software - even Damn Small Linux has multiple browsers and FTP clients. I say include a few editors and environments.
Cristián Romo
Well, in a whole CD i think you could instert a few options. Eclipse+Cusp is probably the best option for beginners.
Alex Ati
Freedom of choice is best. Zealots be quiet. :)
skypher
+2  A: 

What would really get me interested in Common Lisp is a modern set of libraries at the level of .net or Java, as well as some really good documentation that isn't gnarly. In terms of software, a nice gui editor along the lines of notepad++ or jEdit would be good. Emacs/vi & text-based editors always seems quaint and antiquated for serious development.

Paul Nathan
Heh. I always feel like going back to stone age when I have to use anything _else_ than emacs or vim.
Svante
True, somehow using either vim or emacs seems to be twice as productive as using say Eclipse...
Bartosz Radaczyński
+1  A: 

Emacs does have a bit of a learning curve, but it is great for serious development -- no pesky mouse-driven gui bling in the way of the (text-based) code.

Out-of-the-box CUA-mode is enabled these days (so C-x, C-c, C-v works "standard"), and there is a menu with file-operations like save, etc, so it shouldn't that hard of a slog, if it's all pre-packaged. But pre-configuring the .emacs file to ensure that CUA mode is enabled, SLIME doesn't have to be configured by the user etc. is a must -- plus perhpas more documentation within for the user for .emacs configs - links to EmacsWiki, etc. (hrm, if this is on a CD, it's unlikely that the user would be configuring it themselves, isn't it....)

Michael Paulukonis
+2  A: 

Include Emacs, of course, but you might want to have something gentler.

The Lisp environment I found easiest to slip into was Macintosh Common Lisp, with the FRED editor (Fred Resembles Emacs Deliberately). Digitool didn't successfully make it into the current era of Macs, but they open-sourced a lot of their stuff as they folded. Try www.clozure.com or search for "openmcl" on Google.

There was a project to get the Fred environment running on Openmcl, but I don't know the status offhand (I haven't done anything with Lisp in a long time, and haven't been paying attention on the mailing lists).

So, my recommendations:

Ask Paul Graham if you can include "On Lisp". Since he's giving away a download for free, the odds are good that he'll give permission. (His other excellent Lisp book, "ANSI Common Lisp", is apparently still selling, so it's unlikely he'll give you permission there.)

At least check out the MCL stuff to see if there's anything you can find to make it easier. Emacs is a great Lisp environment, but it's a bit intimidating for the beginner.

I haven't looked at the SBCL documentation lately. Is it fairly readable and beginner-friendly? Perhaps somebody could write up some quick instructions on how to get going and how to debug. Emphasize mouse use at first, even if using Emacs.

David Thornley
A: 

I think the idea of including tutorials is an excellent one.

In addition to the ones already stated, there is both the easiest book for newbies on lisp (A Gentle Introduction to Symbolic Computation) and several excellent websites hiding out there on the web that people should know about. Here they are:

clay
I'll make sure to set up some good default bookmarks - thanks for the suggestion.
JasonFruit
A: 

Hi! As far as I undertand you are doing Thnake.

Thank you for greate live distro!

I tried it couple of days before and found it rather impressive and interesting.

There are couple of things it obviously lacks, such as LTK since you have already included Common Lisp and Tcl/Tk. And since there is gtk, you can include bindings and documentation for CL and Python.

Also there is a need in Lisp Hyperspec, and preconfiguaration of Slime to use it. (Same for documentation for Python and Tcl) May be it would be better to add emacs-w3m for fast and convenient documentation browsing.

Anton Nazarov
After talking with Zach Beane and others, I'm rethinking it: I'm dropping Python, adding more libraries, putting together some instructional materials, and releasing it with a proper website. I'm also going to rename it something less silly. Glad to know you liked it, and thanks for the ideas.
JasonFruit
A: 

There's always Practical Common Lisp, a book on Common Lisp which is readable in its entirety online. There's also a packaging of Emacs with a CL implementation meant for using along with the book.

hydrapheetz
A: 

You should definitely add Vim too, configured with the RainbowParenthsis plugin.

rlwrap for SBCL is a good idea, and so is (require :sb-aclrepl).

Weblocks should come with cl-prevalence and maybe Elephant/BDB, too.

skypher
+1  A: 

I'm wondering.. how's that lisp-cd project by now??

Rui Costa
I stopped working with it for a while, and just started back up about 1-1/2 weeks ago. I'll put out a fresh version fairly soon, I think, based on Puppy Linux 4.3. I've returned to the focus on language-learning, and I think that's best.
JasonFruit
I have some interest in learning Lisp, but I don't like most of the resources available. How about extending this project to the creation of some sort of a "community" responsible for providing tutorials or something, in order to make Common Lisp more popular and easier to learn? Bad/weird/useless idea?
Rui Costa
I've made this available now --- it's at http://jasonfruit.com/thnake.
JasonFruit
A: 

I have some interest in learning Lisp, but I don't 'like' most of the resources available. How about extending this project to the creation of some sort of a "community" responsible for providing tutorials or something, in order to make Common Lisp more popular and easier to learn? Bad/weird/useless idea?

Rui Costa
Good idea - wrong guy. I'm not great at creating "community".
JasonFruit