"The difference between Lisp and Java, as Paul Graham has pointed out, is that Lisp is for working with computational ideas and expression, whereas Java is for expressing completed programs. As James says, Java requires you to pin down decisions early on. And once pinned down, the system which is the set of type declarations, the compiler, and the runtime system make it as hard as it can for you to change those assumptions, on the assumption that all such changes are mistakes you're inadvertently making."
Lisp vs Java is one thing but there is an undercurrent of "static typing is terrible" running through this paragraph (and others). I am not sure I agree. Haskell for example is very expressive(at least to me). And I am not sure a static type system gets in the way of "prototyping" much.
"Lisp, of course, and especially Common Lisp are my languages. Not since the 1960s have I programmed professionally in a language other than Lisp."
With all due respect to Richard Gabriel, (and this probably blasphemy) perhaps he should? Haskell or Erlang or Factor are mind expanding in ways Common Lisp never was. (Not to deride Common Lisp, but I am tired of people implying it is some kind of unsurpassed acme of language design excellence)
>"Lisp, of course, and especially Common Lisp are my languages. Not since the 1960s have I programmed professionally in a language other than Lisp."
> With all due respect to Richard Gabriel, (and this probably blasphemy) perhaps he should? Haskell or Erlang or Factor are mind expanding in ways Common Lisp never was.
The fact that Gabriel hasn't "programmed professionally" in those languages does not imply that he doesn't know them.
"The fact that Gabriel hasn't "programmed professionally" in those languages does not imply that he doesn't know them."
Fair enough but it doesn't mean that he does either, at least to a high enough degree where he can make an unbiased comparison to CL.
And his writing on this essay (which in my opinion is a rather incoherent and wandering paean of praise for lisp vs a strawman Java) seems to indicate he doesn't.
Richard P. Gabriel lost his Lisp business when he invested in creating a new C++ development environment and used his existing Lisp business to get some money for that.
He spend a lot of time & money into getting this C++ thing going - not as a programmer, but as a boss of a software company.
That's also why Lucid Emacs got forked - which then became XEmacs.
" It's easier to write Haskell programs in Lisp than the converse."
You can write a compiler for one in the other (as you could do with any two Turing Complete programming languages), but other than that this seems to be a meaningless play on words.
But, ok let us take your claim that it is "easier to write Haskell programs in lisp than lisp programs in Haskell".
Care to point at some specific significant "haskell programs in lisp" that are "easier to write" than the corresponding "lisp programs in haskell" that are harder to write?
Er, "write X in Y" is a common (and meaningful) snowclone/expression. It means you're not adopting the idioms of the language you're writing in, you're attempting to kludge together the idioms of one language and the syntax of another. For example, writing Java in Scheme could be refusing to use recursion, map, fold, etc., but instead using loops/loop-analogues and vectors everywhere, trying to craft everything into objects or similar instead of using closures where appropriate, and so on. Basically, writing a messy Scheme version of a clean Java program.
Not knowing either Common Lisp or Haskell, I really couldn't comment on the rest, or on specifics in this case. Nor if it even makes sense, or is true in this case (that it's easier one way or the other).
Comments
"The difference between Lisp and Java, as Paul Graham has pointed out, is that Lisp is for working with computational ideas and expression, whereas Java is for expressing completed programs. As James says, Java requires you to pin down decisions early on. And once pinned down, the system which is the set of type declarations, the compiler, and the runtime system make it as hard as it can for you to change those assumptions, on the assumption that all such changes are mistakes you're inadvertently making."
Lisp vs Java is one thing but there is an undercurrent of "static typing is terrible" running through this paragraph (and others). I am not sure I agree. Haskell for example is very expressive(at least to me). And I am not sure a static type system gets in the way of "prototyping" much.
"Lisp, of course, and especially Common Lisp are my languages. Not since the 1960s have I programmed professionally in a language other than Lisp."
With all due respect to Richard Gabriel, (and this probably blasphemy) perhaps he should? Haskell or Erlang or Factor are mind expanding in ways Common Lisp never was. (Not to deride Common Lisp, but I am tired of people implying it is some kind of unsurpassed acme of language design excellence)
>"Lisp, of course, and especially Common Lisp are my languages. Not since the 1960s have I programmed professionally in a language other than Lisp."
> With all due respect to Richard Gabriel, (and this probably blasphemy) perhaps he should? Haskell or Erlang or Factor are mind expanding in ways Common Lisp never was.
The fact that Gabriel hasn't "programmed professionally" in those languages does not imply that he doesn't know them.
"The fact that Gabriel hasn't "programmed professionally" in those languages does not imply that he doesn't know them."
Fair enough but it doesn't mean that he does either, at least to a high enough degree where he can make an unbiased comparison to CL.
And his writing on this essay (which in my opinion is a rather incoherent and wandering paean of praise for lisp vs a strawman Java) seems to indicate he doesn't.
Richard P. Gabriel lost his Lisp business when he invested in creating a new C++ development environment and used his existing Lisp business to get some money for that.
He spend a lot of time & money into getting this C++ thing going - not as a programmer, but as a boss of a software company.
That's also why Lucid Emacs got forked - which then became XEmacs.
"Haskell or Erlang or Factor are mind expanding in ways Common Lisp never was."
I see Lisp is more mind-reflecting beyond just being mind-expanding. It's easier to write Haskell programs in Lisp than the converse.
" It's easier to write Haskell programs in Lisp than the converse."
You can write a compiler for one in the other (as you could do with any two Turing Complete programming languages), but other than that this seems to be a meaningless play on words.
But, ok let us take your claim that it is "easier to write Haskell programs in lisp than lisp programs in Haskell".
Care to point at some specific significant "haskell programs in lisp" that are "easier to write" than the corresponding "lisp programs in haskell" that are harder to write?
Er, "write X in Y" is a common (and meaningful) snowclone/expression. It means you're not adopting the idioms of the language you're writing in, you're attempting to kludge together the idioms of one language and the syntax of another. For example, writing Java in Scheme could be refusing to use recursion, map, fold, etc., but instead using loops/loop-analogues and vectors everywhere, trying to craft everything into objects or similar instead of using closures where appropriate, and so on. Basically, writing a messy Scheme version of a clean Java program.
Not knowing either Common Lisp or Haskell, I really couldn't comment on the rest, or on specifics in this case. Nor if it even makes sense, or is true in this case (that it's easier one way or the other).