Thursday, July 5, 2007

Hello Lisp

I believe it's a good idea to learn at least one new programming language a year. If nothing else, it keeps me from getting bored. You might think I'd choose Ruby, as that's pretty hot right now (in certain circles). And in truth I'm interested. I've even read some of The Pickaxe Book. But the language I've decided to devote my time to is Common Lisp.

 

There are a number of reasons for this. I won't go into all of them, but here are a few:

 


  1. I've been meaning to really learn a Lisp for a long time. Probably since I took SICP as a freshman. (One of the more intimidating moments of my life: having Hal Abelson as a student in a class I taught. Really nice guy, fortunately.)

  2. I do a lot of work where I turn set-based data (from a database) into hierarchical data (XML). A language based on lists and conses seems worth investigating.

  3. Lisp has a pretty interesting reputation as "the most powerful and elegant programming language". That's quite a claim, and begs to be investigated.

  4. Every new feature that C# has sprouted has been available in Lisp for decades.

  5. I read this and was intrigued.

 

Of course, I'm going to continue to do my paying work in C#, if for no other reason than that no one in their right mind would pay me to write production Lisp code right now. But starting now, I'm going to make an effort to write all the code that I can in Lisp.

 

If you're interested in getting started yourself, it's as easy as going to download an implementation. I'm using CLISP, as it's free and seems to be pretty mature and broadly supported.  

 

Should be an interesting ride!

9 comments:

  1. <a href="http://sixyears.wordpress.com">Legacy</a>

    ReplyDelete
  2. A new competitor seemed to emerge out of the woodwork every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those.



    LOL!

    ReplyDelete
  3. And the he goes..



    "You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried."





    And then you read Yahoo rewrote it in C++.



    Also comparing a Java and C++ (you know ++) is like comparing a VB and Lisp guy.



    Finally, getting worried about Perl comic book writers is (cannot put it mildly): idiotic.



    And then of course, the ultimate delusion:



    Lisp.



    Sigh, he made a dozen million dollars back then (and certainly not because of Lisp or 'hackery').



    YouTube guys made a billion, Lisp?

    ReplyDelete
  4. Last rant on this 'topic' and space:



    "Garbage collection, introduced by Lisp in about 1960, is now widely considered to be a good thing."



    Hang on, let me reboot that ASP.NET "recycling to its own halt" server (ops it did it itself, using OS' cleanup).



    No wait, the Oracle lightweigh *client* driver of 200MB.



    Garbage in, garbage uninstall.



    Another invisible quote: "It is estimated GCs leak more than 212 petabytes a day for software on the web (and estimates are only 12% of software covers it.")



    How would you feel about deploying that "distributed" system, or heaven forbid, see the Web push it to 100%? JDK and ASP.NET to oblivion?



    Actually he says they had C code so he was not worried about C++ listings, huh?



    " because our software worked via the Web, instead of running on your desktop computer."



    My BBS server gave me news and software and services back in 1986.



    Not Via Web, but ViaMyTelehponeWire never made any money yet it saved a lot. Probably far more than 50 million in worldwide modem usage :)



    That is what real hackers did, and from what I see they still do, redefine boundaries. None of "that this" start ups ever provided a service like AltaVista did.



    And *that* is what Google copied.



    Hey look at it, firstnamelastname.com, says it all. I bet he has a Wiki page too like Sam :-)



    Another 'Look Ma, I an Alpha Geek' bandwagon jumping, and what is worst of all, it is that, all-mighty, 'beloved' make up your own shopping cart app (sigh).



    Time to get some real Beans and Assemblies in HTTP land.

    ReplyDelete
  5. I said it was intriguing, not gospel. :)



    But your analysis doesn't quite ring true for me. First, there's a big difference between the goals of a startup and those of a big company like Yahoo. So it might make perfect sense to write an app in Lisp (or something) for a few years, then port it to C++.



    Second, any comment about "making a billion dollars" is irrelevant. Few if any will see this sort of money, so it's not useful analysis, even if there were some sort of linear causal relationship.



    Third, GC is a very valuable technology because it frees developers from worrying about memory allocation, a source of many, many, many bugs. I speak as a guy who has written a lot of them. :) Does that mean that GC should be used everywhere? Of course not: but it should be used when it's appropriate.



    That's really what it's about, actually: knowing the tradeoffs and how to optimize. Lisp will necessarily be better at some things than C++, and vice versa. The trick is knowing when to pick what. My experiment is aimed at discovering strengths and weaknesses, and at expanding my awareness of techniques.

    ReplyDelete
  6. Yes. :)



    Simple in concept, a lifetime's work. ;)

    ReplyDelete
  7. If you're going to be doing set-based work that produces XML in C#, check out http://blogs.msdn.com/ericwhite/pages/FP-Tutorial.aspx . (Yes, I work in this area. Yes, I also think it's great fun & something everyone should check out to see if it's for them.)

    ReplyDelete
  8. Looks very comprehensive. I'd definitely like to read that stuff through: here's hoping I can find the time for it.

    ReplyDelete
  9. It’s no secret that I’ve been interested in Lisp for quite a while. Lately, that has meant Clojure .

    ReplyDelete