Originally Posted by hajile
1. Try coding what you saw in python. It doesn't look better. Python has it's own hidden problem; if you indent more than a couple of times, it is very hard to keep track of which block you are in. I've had this bite me in the past when I've copied in code and thought I had indented it properly. I now use visual indentation indicators in VIM to alleviate that problem, but I also use parenthesis counters (which are supported on every text editor you can think of except MS notepad). It is worth noting that the code samples you linked to are not for the language the OP is learning and are instead for common lisp. I would once again challenge you to write this code in python and compare.
Look up M-expressions. When John McCarthy first discovered lisp, he intended to use M-expressions to make the code look more like FORTRAN. If you mess around with M-exp, you will find that you can make your code look a lot like python code (take a look at the Scheme sweet expressions
if that's your thing). It turns out that most people who program in lisp PREFER the parenthesis over M-exp. Finally,
2. Once again, if your editor matches parenthesis, they aren't a problem. Even if you had to count them by hand, they would still be easier syntax than Python or even C as there are fewer rules to remember which necessarily means that more time is left. The power of a language is always important. If you know scheme, it's easier to learn the powerful features of scheme than to learn another language and then learn those features. Since the overhead of learning the language is minimal, it doesn't waste much time if you never touch the language again and it won't hinder the memorization of the rules another language has.
3. If he/she did not actually learn anything, then scheme is still a great first language (that's what it was designed for and many prestigious colleges and universities still require it either as an intro class or a "learn on your own because you'll still need it"). If important parts of programming were grasped, then they will come back quickly. I find it interesting that people seldom forget how to program in scheme -- even if they never use it. The simplicity of the syntax means that (unlike C) going for long periods without use doesn't hurt nearly as bad.
Okay, we could continuously go back and forth refuting each other's point until the cow's come home, so I'll just drop the debate. It would also serve no purpose to keep this going because the OP is obviously just going to go ahead with LISP (or Scheme, to be specific). However, I strongly disagree with you on some points you mentioned, so I will refute those and only those points.
1. "Python has it's own hidden problem; if you indent more than a couple of times, it is very hard to keep track of which block you are in." Most cases of deeply nested code can either be refactored or optimized. If none of that works, the problem should be solved using another approach. So, this 'hidden problem' in Python is the fault of the programmer if anything. Also, don't you think that this 'hidden problem' can be found in LISP code
2. "Even if you had to count them by hand, they would still be easier syntax than Python or even C as there are fewer rules to remember which necessarily means that more time is left." Many people agree that Python is basically just executable pseudocode. LISP uses Polish notation. I understand that most people can easily learn the notation, but I don't think that somebody beginning programming should have to do this and it might get them to back down from learning how to program. However, if that person learned Python first, this wouldn't be a problem, and that person would still get many great features found in LISP and a much more friendly & forgiving language.
3. "I don't know if lisp is the greatest programming language." Nope, it's definitely the greatest programming language ever.
4. "Ruby would be a much better comparison. Although it uses block scoping (causing interesting effects), it is much more lisp-like." You do know that you can basically convert Python code into LISP code line by line, right? Also, I haven't learned Ruby yet, but whenever I see someone coding in Ruby, I almost always confuse it with Python code because it looks SO similar and end up embarrassing myself somehow.Edited by BuizelON - 6/28/13 at 6:52pm