4 ms·
It surprised me that a few were (jokingly?) anti-Common Lisp. Any lispers care to explain? examples: "Greenspun's Tenth Rule of Programming: any sufficiently
by dschobel 17y ago
It surprised me that a few were (jokingly?) anti-Common Lisp. Any lispers care to explain?
examples:
"Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp." - Philip Greenspun
"Including Common Lisp." - Robert Morris
"Common Lisp is politics, not art." - Scott Fahlman
- thomas11 17y agoThe first one is meant to be pro-CL. It says that there are problems that are so difficult or large that they can only be solved with some of the unique features Lisp, such as macros. Of course, all programming languages in use are Turing-complete, so technically you could use any language. In practice, however, the mental capacities of the programmers form a barrier: imagine writing an OS in Brainfuck. So when people are working on such problems in C or Fortran, sooner or later they will - unknowingly - come up with the ad hoc implementation of CL in their program, to get some of that additional abstraction Lisp provides.
- lmkg 17y agoFor the last one: Lisps (in general) have a history/tradition/perception of being innovative and pushing the boundaries of language, for better or for worse. For modern examples, Scheme was arguably more guided by aesthetic principles than pragmatic ones, and Clojure is an exploration of immutable structures and concurrency. Many lisps were highly experimental pet projects, and associated with academic research rather than industrial applications. They were also commonly descibed as "elegant," where the "art" part of the quote comes from. Common Lisp is notable among lisps for breaking this tradition. It was meant to be industrial-strength, which goes for robustness and completeness at the expense of elegance, and rather than innovation merely contains a lowest-common-denominator mix of (then-)standard lisp capabilities. In short, Common Lisp is the most Worse-Is-Better of any lisp dialect, putting practicality ahead of being really slick. The quote ascribes this to CL being designed by committee, rather than being designed by eccentric (or straight-up batshit crazy) enthusiasts the way that lisps have been historically. While this certainly relates to its lowest-common-denominator look & feel, I would argue the language's design goals already set it down that path when it was the pet project of Steele & friends, even before it became a literal committee product. One could quip that Steele dragged C half-way to lisp and got Java, and then dragged lisp half-way to Java and got Common Lisp.
- jimbokun 17y agoI guess, then, Rich Hickey is dragging Java the rest of the way to Lisp.
- btilly 17y agoCommon Lisp is a compromise between several different Lisp communities. It is in the nature of compromises that some will dislike the result.
- Hexstream 17y ago"Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp." - Philip Greenspun "Including Common Lisp." Well, my understanding is that most Common Lisp implementations are actually mostly written in Common Lisp. For that to be possible, you first need to bootstrap the implementation, and to do that you first write an "informally-specified, bug-ridden, slow implementation of half of Common Lisp" in C or something, and when you've done that, you're self-hosting, meaning you can produce newer versions of your implementation that are more formally-specified, less bug-ridden and faster. Eventually you have an accurate and fast implementation of Common Lisp, which is a pretty well-specified language. So there.