In that sense, the LISP syntax (S-expressions) were ideed designed as an intermediate language, not to be used by programmers directly (except for plain data structures).
(car
(append
'(a b c)
'(d e f)))
Would originally have been written in M-expression form as car[append[(a b c); (d e f)]]
Programming in Lisp might be a very different experience if M-expressions had caught on!So...
Ruby: good for developers, bad for the JIT compiler (slow)
LISP: awful for developers, good for the compiler -> machine (fast)
Is the tradeoff worth it? Not at all. Most LISP intros start by convincing you that you'll eventually get used to your code looking like a sack of parenthesis. No thanks, I shouldn't need to get used to staring at overburdened verbosity for the compilers' sake - build something better. Wait..we have other languages that are fast and look nice. And many even process into a well-formed AST. Okay, thank heavens.
Only Python comes close IMHO but has many other downsides.
(incf (elt vector 2)) ..versus.. ++vector[2]
which one is more readable?
LISP is not to be taken seriously. It's an academic curiosity, and cute, novel, not a language that needs continued zealots. It has no market share..the reasons are always going to be the same. The language is esoteric. I wouldn't program anything serious in JSON so why would I use LISP, where every semantic is a list..not even a hashmap.
http://imgs.xkcd.com/comics/lisp_cycles.png
"These are your fathers' parenthesis"
One reason I like Lisp is that I don't have to think about operator precedence.
In LISP: (+ (* a (1+ (* 8 b b))) (* 4 b c (1+ (* 4 b b))))
Oh, that silly operator precedence, lets just jam our heads in a vice while we unravel the nesting.
I'm not quite sure whether it is just plain trolling or traumatic experiences with Lisp at college. (The latter which I can understand since being allowed to only use a very limited part of the language to solve convoluted problems can be quite off-putting.)
It also makes it easier for YOU to process/manipulate your program with the expressive power and safety of the full language.
http://en.wikipedia.org/wiki/Homoiconic#Uses.2C_advantages.2...
LISP is great for live audio production because of the homoiconicity. It's very suited for dynamic interactive programming, namely Emacs. I believe that's where the zealousness needs to stop. It's not a good language to code large projects in.
It's pretty funny that the knee-jerk dismissals of Lisp today are the precise opposite of what they used to be.