9 ms·
The myth is also bolstered by some of greatest book on the craft of programming ever written: * The Structure and Interpretation of Computer Programs * Par
by swannodette 16y ago
The myth is also bolstered by some of greatest book on the craft of programming ever written:
* The Structure and Interpretation of Computer Programs
* Paradigms of Artificial Intelligence
* Art of the Metaobject Protocol
* The Schemer Series (Little, Seasoned, Reasoned)
* Essentials of Programming Languages
* Lisp in Small Pieces
Few programming languages have such an abundance of truly deep gems. One has to wonder if there's a reason.
- RodgerTheGreat 16y agoThe Art of Computer Programming, on the other hand, uses Assembly. One has to wonder if there's a reason.
- swannodette 16y agoAn idealized assembly. And I certainly agree that Knuth's texts are of the caliber of the books in the above list.
- sedachv 16y agoI think one of the more interesting examples of great Lisp books is Sussman and Wisdom's Structure and Interpretation of Classical Mechanics. From reviews (haven't read it yet - it's on my to-read list), it's highly praised by physicists exactly for its computational approach to classical mechanics and its use of Scheme as notation. You certainly get the notation feeling reading SICP. Allen's Anatomy of Lisp is the best introduction to language formal semantics I've seen. Too bad it's out of print, but it is a bit dated by now. Now if you're actually talking about the craft of programming, the two best books ever are Graham's On Lisp and Hoyte's Let Over Lambda. Lisp macros are the best programming tool available today, and those are the only books that go in-depth on macros.
- rbanffy 16y ago> One has to wonder if there's a reason. Cost is one. These books would be ten times as big had they used Java examples. ;-) Seriously now: Lisp has a very unobtrusive syntax. It seems a good fit for teaching a lot of concepts.
- ludwigvan 16y agoIsn't it strange that searching for `unobtrusive' in Google yields "Unobtrusive Javascript" as the first result? Is Javascript the new Lisp? :) http://www.google.com/search?q=unobtrusive http://www.google.com/search?q=unobtrusive PS: It was rather a tongue in cheek comment, implicating the Lispy roots of Javascript, and the increasing popularity of it among programmers. I would bet that interest towards functional programming or Lisps will increase with such movements, and the myth might in that sense be invalid in a near future.
- graywh 16y agoUnrelated. "Unobtrusive Javascript" is about not having JS clutter your HTML.
- deleted 16y ago[deleted]
- RyanMcGreal 16y agoIn the context of javascript, "unobtrusive" means it is designed to degrade peacefully in browsers where javascript is missing or disabled. In this case, the right way to attach an event handler is to assign a class or an id to the HTML element in question and add an event handler to it using an event listener in a separate javascript file, rather than jamming an `onclick="doSomething()"` attribute into the HTML element itself.
- DavidMcLaughlin 16y ago> In the context of javascript, "unobtrusive" means it is designed to degrade peacefully Nitpicking here, but that is actually graceful degradation/progressive enhancement. Unobtrusive JavaScript is about writing JavaScript code that plays well with others. The example you gave of not having inline JavaScript in your presentation layer (HTML) is one example. Not writing JS code in the global namespace and avoiding monkey-patching built-in objects are other examples.
- silentbicycle 16y agoAt least half of those are on interpreters & compilers. Ever notice how compiler books that use C, Java, etc. usually have a 300 page tangent at the begging about automata theory, LALR parser generators, and so on? (PS, ever notice how many people never get through it?) Lispers can just use "(read)" and get on with life. They can skip a bunch of hard material upfront and hit the ground running. It's good to know lexing & parsing techniques, but upfront? That's like writing a TCP/IP stack before you can do CGI scripting. The same is equally true with many other languages, nowadays; one can use Erlang tuples, JSON, ML/Haskell type constructors, Lua tables, Python dicts & lists, etc. instead of s-expressions, but Lisp had a several-decade head start, so it (and to a lesser extent, ML) has a disproportionately large share of excellent compiler literature.
- EdiX 16y agoLisp had a several-decade head start in many useful programming language features that are now commonplace (and some that aren't yet so commonplace).
- silentbicycle 16y agoSure. Just like APL, Prolog, and others.
- apl 16y ago> One has to wonder if there's a reason. This particular type of argument keeps coming up in Lisp-related discussions, but I seriously doubt its validity. Lisp is overrepresented in classic texts on computer science, yes. But that doesn't allow you to jump to the conclusion that, hence, it's the best possible language or even a very good one for all things ever. As far as I'm concerned, cultural heritage (with Lisp having a long academic tradition) and syntactic/semantic transparency are far more likely explanations. SICP, for instance, doesn't employ Scheme because it is an apt language choice for industry projects or general programming but because it's a very slim, non-obtrusive language that virtually disappears behind the concept that's under scrutiny. Watch the lectures: it takes them about 10 minutes to explain all of Scheme's syntax. That's great, because when elucidating CS concepts, syntax doesn't matter at all. However, being particularly well-suited for explanatory/conceptual purposes does not make Lisp an ideal language for everything. Not even necessarily for many things.
- swannodette 16y agoClassic? SICP and PAIP are the only two I'd really consider classic. The Reasoned Schemer is 2005 and is IMO the most important introductory text on relational programming since Warren's Abstract Machine: A Tutorial Reconstruction. ~200 lines of Scheme and you have something as fast Prologs written in 150K of C. I don't consider Art of the Metaobject Protocol to be introductory or conceptual. Alan Kay considered it one of the only interesting books published on object oriented programming for a decade! Lisp in Small Pieces is also not particularly introductory or conceptual - that's a hardcore compiler optimization text. I'd love to hear of a domain where a Lisp dialect isn't as well suited as anything else.
- brlewis 16y agoSICP claims "programs must be written for people to read, and only incidentally for machines to execute". If that's true, then a language's suitability for explanatory/conceptual purposes is its primary virtue. The right question to ask about a language is, what concepts does it help explain?
- Maro 16y agoI don't think this argument stands. There are just as many great C books out there: * C Programming Language - by K&R * The Indispensable Guide to C with Engineering Applications - by Paul Davies * C Interfaces and Implementations - by David Hanson * A Retargetable C Compiler: Design and Implementation - by David Hanson * Graphics Programming Black Book - by Abrash with lots of Quake goodies
- swannodette 16y agoThe books I listed are only tangentially about Lisp. They are fundamental texts on the craft of programming. The same way that Concept Techniques and Models of Computer Programming is not really about Mozart/Oz.
- sedachv 16y agoI don't understand why people keep citing K&R as a great book. It's a fairly mediocre introduction to C programming. Harbison and Steele is much more useful IMO.
- SoftwarePatent 16y agoI found K&R a difficult slog. It could have had twice as much explanation text.
- abecedarius 16y agoAccording to Norman Ramsey, Hanson said one of the main things they learned from writing lcc was that C was a lousy language to write a compiler in. I've read K&R and parts of the Hanson books. They're all excellent but less interesting than most of the Lisp books above, SICP and PAIP in particular.
- kenjackson 16y agoAnd if you count the number of classic books written in an Algol-based language its basically every other book except the small set listed by the previous poster.
- silentbicycle 16y ago