Ask HN: Is lisp a language for a newbie?

8 points by nkh ↗ HN
I have a question for Lisp programmers. I am fairly new to programming and I have been playing around with Ruby. Mostly building simple Rails apps and scraping sites. I have read a lot about Lisp that intrigues me. However, it always seems like Lisp programmers are experienced programmers that become evangelists once they see how easy something was to accomplish in Lisp.

So my question is: Do you think that Lisp is a language you can cut your teeth on, or should I get more experience with Ruby and wait till I hit a wall, then turn to lisp to solve my problems?

To be fair, it seems the documentation for Lisp and ruby are quite different. Where Ruby seems to cater to new programmers with the coddling we need, while Lisp documentation is more sparse for veterans don't need intro material. Does that seem correct or an I mistaken? And I would love to hear the path Lisp programmers here took to become proficient.

8 comments

[ 3.3 ms ] story [ 24.6 ms ] thread
It depends how much work you're willing to put into it. Yes, you can treat Lisp as a first language, MIT has been doing it for years (until recently). Their Intro to CS class, CS 6.001, used Scheme and is very highly regarded.

Their text book[1] and lecture videos[2] are free on the internet. Can't hurt to give it a shot.

[1] http://mitpress.mit.edu/sicp/

[2] http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...

I'd suggest sticking with ruby before switching to something else, first because you need to have some basic programming experience before learning a new language, and second because it's much easier to get things done in ruby than in lisp, for a beginner (because there are tons of ready to use libraries - in lisp, not so much).
Agreed. Don't try to become bilingual when you aren't even fluent in your first language. I don't buy the argument that your first language permanently changes how you view programming. I started in QBASIC and now my programming style is generally to program almost functional programs in object-oriented languages. QBASIC had neither functional programming capabilities nor objects.
I'm with you on becoming fluent in one before going to another, I've lost lots of time because of this. But for how you're viewing programming, it all depends on the person. Like natural languages, some people just can't become bilingual. We all have our limits, I don't think I could be fluent in say 10 languages and it's probably much less than that.
I agree, and am a polyglot myself, but I think there is a tradeoff. The more time you spend learning new languages, the less time you have to master one of the languages you already know. Take a complex language like Common Lisp. You can learn the basics of Common Lisp in maybe a week or two, but to master the language, to really understand all the details, to know the idioms, etc, takes years. Lisp is a language you can spend the rest of your life learning.
I think it may even be easier if you're just starting. If you get used to Ruby, it could be painful/hard to switch after. It all depends how much you're ready to learn and if you need hand-holding, in the later case Ruby might be a better place to start. However, beware tutorials catered to new programmers, they're not always giving good advises (being generally written by newbies) and coding on your own is always more efficient. Furthermore, if you're not shy, participating in the community is the best way to learn, so it also depends on how you get along with the others using the programming language you've chosen.

My path to Lisp: C/asm > Java> Ruby (and some Scheme) > C# > Clojure

I've always been a polyglot and been programming for fun in lots of strange languages, so I've skipped lots of them in the above. Others notable languages I like are Python, OCaml and Haskell, but I didn't do much with them. That route may not be the best for you though. And you can't know which way will work for you until you've found it! So you need to try one and go far enough to see if you really like it.

Yes you can start out with lisp. You will certainly learn a lot if you go that route, there are good resources out there if you do (see the link to SICP someone else posted, and also look at one of my favorite books, The Little Schemer[1]). Still, I'm not sure it's a path that I would recommend. You will be able to go farther, more quickly in Ruby. There are more libraries, better resources for those new to programming, and (this is subjective of course) a more welcoming community if you need to ask for help.

But, if you are willing to figure some things out by yourself, don't let me discourage you from starting with lisp.

edit: forgot Little Schemer ref. see: http://books.google.com/books?id=xyO-KLexVnMC&dq=the+lit...