views:

159

answers:

2

I use ASP.NET during my day job, but I'm always looking to expand my programming knowledge. I've tinkered with everything from Ruby to 6502 assembly language, and now I want to learn Lisp. I guess I have Paul Graham to blame for that.

I've heard about "Practical Common Lisp" and I know how to Google, but I'm curious if there are any .NET developers who have taken the plunge who can give me some pointers. What are some of the pitfalls? Are there things I'll need to "unlearn" when making the transition? Did you have any "aha!" moments?

I'm also interested in how the Lisp libraries stack up to .NET, and if anyone has any examples of Web applications created in Lisp that they can share.

+1  A: 

If you want to stay in the .NET sandbox, there is IronScheme, which replaced IronLisp as the Lisp of choice for the .NET framework. You can learn "Lisp", and still get to keep the .NET framework libraries.

I don't have any examples of Lisp web frameworks, but I do have a great story from Paul Graham called "Beating the Averages". He used Lisp as a competitive advantage in his web startup some years ago:

http://www.paulgraham.com/avg.html

Robert Harvey
Thanks for the IronScheme tip. I'm not necessarily looking for a safety net or a .NET / Lisp hybrid, but it looks interesting nonetheless.
Andy West
My Paul Graham reference in the original post comes from reading "Hackers and Painters", which also contains that essay.
Andy West
Unless you have a specific requirement for .NET, I'm not sure I'd recommend a hybrid for a beginner. It's enough work to learn a new language, without having to learn the external calling mechanism needed to get at your old libraries, and the structure of a Lisp program is different enough that I'm not sure how much use it would be anyway. I've not tried IronScheme, but I have tried Scheme-Java hybrids back in the day, and they ended up being more trouble than they were worth, even though I knew both languages. JVM/.NET libraries aren't designed for Lisp's flexibility.
Ken
+2  A: 

I've gone in the opposite direction: I've used Lisp for years, and now happen to be at a job where I do C#/ASP. So maybe the following is unhelpful, but if you have more specific questions I'd be happy to answer.

If you know Ruby, that's a big step towards Lisp already. Coming from C#, Lisp is going to be kind of like Ruby, but more so. :-)

Maybe it's because I was a Lisp developer long before .NET was even conceived, but I don't know of any particular pitfalls going the other way. There's very little I dislike about Lisp, especially compared to C#. Oh, if you're doing Common Lisp you probably owe it to yourself to get the ITERATE library instead of spending much time on LOOP (though you'll need to know a bit about LOOP to read other people's code).

If you're one of those .NET developers that uses Visual whatever-it's-called for editing, you're probably going to want to learn Emacs. You can of course use any editor to write Lisp code, but if you're not using something that's designed around Lisp's unique strengths, you're losing out on much of the benefit. SLIME is the most efficient development environment I've ever used on any platform for any language, though I'm sure commercial Lisp IDEs offer similar benefits.

You'll have "aha" moments from time to time, as anybody learning Lisp does. It's not for us to say what we think they'll be, and if we just started listing them, they wouldn't be "aha" moments for you, anyway. :-) But it helps to read a lot of code other people have written, because the difference in style and strategy between different Lisp programmers seems to be far greater than the difference in other languages. SICP and AMOP were the biggest eye-openers for me, but YMMV.

There are several web servers in Lisp. I've used Hunchentoot and Portable Aserve, but there are others. They tend to be fairly simple, and not full-blown "frameworks", since it's so easy to be productive without much boilerplate in Lisp, and since each Lisp program tends to be so unique.

I've got a public website built on Lisp, but I don't tend to advertise the fact, because (a) I do consider it a competitive advantage, and (b) I want people to say it's a cool website, without qualification. I've been told the "recommendations" section of Amazon product pages is also a Common Lisp web service these days, but of course externally it's impossible to tell.

Ken
Thanks, this is very informative.
Andy West