Where Lisp Fails: at Turning People into Fungible Cogs.

A favorite conundrum of many Lisp aficionados is why the language appears to languish in disuse.  Talk of cultural problems, “the library question” (which usually boils down to nonsensical circular reasoning), too many parentheses, and other absurdities simply dances around the blindingly obvious explanation – one which is able to make sense not only of the obscurity of Lisp, but of many other conceptual breakthroughs (such as reflectivity) which threaten to give developers’ minds a “lever to move the whole world.”

Employers much prefer that workers be fungible, rather than maximally productive.

Yes, this holds true even at that most beloved megacorporation citadel of angels:

“One of the reasons I stayed at JPL for twelve years was that I was appalled at what the software industry had become. The management world has tried to develop software engineering processes that allow people to be plugged into them like interchangeable components. The “interface specification” for these “components” usually involves a list of tools in which an engineer has received “training.” (I really detest the use of the word “training” in relation to professional activities. Training is what you do to dogs. What you should be doing with people is educating them, not training them. There is a big, big difference.) To my mind, the hallmark of the interchangeable component model of software engineers is Java. Without going into too many details, I’ll just say that having programmed in Lisp the shortcomings of Java are glaringly obvious, and programming in Java means a life of continual and unremitting pain. So I vowed I would never be a Java programmer, which pretty much shut me out of 90% of all software engineering jobs in the late 90’s. This was OK since I was managing to put together a reasonably successful career as a researcher. But after Remote Agent I found myself more and more frustrated, and the opportunity to work at Google just happened to coincide with a local frustration maximum. One of the reasons I decided to go work for Google was that they were not using Java. So of course you can guess what my first assignment was: lead the inaugural Java development at the company… The interchangeable component model of software engineers seemed to work reasonably well there. It’s just not a business model in which I wish to be involved, at least not on the component-provider side.”

Erann Gat, “Lisping at JPL”

It amazes me just how blindly complacent programmers have been in the face of the ongoing and very successful deskilling of their profession.  Instead of rebellion, we see mass Stockholm Syndrome.  There is no shortage of pundits ready to bloviate at nauseating length on nearly every – even the most trifling – perceived shortcoming of Lisp [1], other than this one.  Once in a very long while, some daring soul will call out the “elephant in the kitchen” openly and directly:

“…in contrast, the C/C++ approach is quite different.  It’s so damn hard to do anything with tweezers and glue that anything significant you do will be a real achievement.  You want to document it.  Also you’re liable to need help in any C project of significant size; so you’re liable to be social and work with others.   You need to, just to get somewhere.  And all that, from the point of view of an employer, is attractive. Ten people who communicate, document things properly and work together are preferable to one BBM hacking Lisp who can only be replaced by another BBM (if you can find one) in the not unlikely event that he will, at some time, go down without being rebootable.”

Mark Tarver, “The Bipolar Lisp Programmer”

I predict that no tool of any kind which too greatly amplifies the productivity of an individual will ever be permitted to most developers.  In this they shall follow in the maximally deskilled assembly-line footsteps of their grandparents.  “They’ll time your every breath.” As for the “free software” world, it eagerly opposes industrial dogmas in rhetoric but not at all in practice.  No concept shunned by cube farm hells has ever gained real traction among the amateur masses. [2]


[1] Ever wonder why it is customary to speak of the wildly different Common Lisp, Scheme, ZetaLisp, Emacs Lisp, etc. as though they were a single language? I would like to suggest that we start referring to C/C++, Java, Python, etc as ALGOL.

[2] Consider Linux: the poster child of successful free software.  It is a knockoff of a 1970s operating system well past its sell-by date. This is because a herd simply cannot innovate, whether for fun or for profit. Every innovative work of mankind has been the product of one – sometimes two, rarely three – minds.  And never the work of a herd.  No mathematical theorem, no enjoyable novel, no work of art of any importance, have ever been produced by a herd.   I fail to see why innovative software ought to play by a different set of rules.

This entry was written by Stanislav , posted on Saturday December 26 2009 , filed under Hot Air, Lisp, NonLoper, Philosophy . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

37 Responses to “Where Lisp Fails: at Turning People into Fungible Cogs.”

  • Justin Grant says:

    Calling it like it is, how unique in this day and age. Thanks !

  • [...] This post was mentioned on Twitter by news.yc Popular and YC Hacker News, hkrnws. hkrnws said: Where Lisp Fails: at Turning People into Fungible Cogs http://bit.ly/7nzs0x [...]

  • Social comments and analytics for this post…

    This post was mentioned on Twitter by newsycombinator: Where Lisp Fails: at Turning People into Fungible Cogs http://bit.ly/5dgd4Q…

  • [...] This post was Twitted by peter_c_william [...]

  • Krabre says:

    Oh, you are being sarcastic. Well played, sir.

  • Ashley says:

    As for the Lisp as an underused language, I think of it less as an active desire of employers for “fungible” workers versus “maximally productive ones” and more of a path dependency issue.

    Think of it analogous to the QWERTY keyboard. The QWERTY keyboard, that you probably use, was specifically designed to slow down the typist at a typewriter so as not to jam the keys. Now we don’t have to worry about the keyboard being jammed on a computer, but we still use the QWERTY keyboard, even though there are other layouts that exist. We do it partially bc of a path dependency and also bc now it’s too hard to get a critical mass of people to make the switch.

    A secondary point, not as important, but a mathematical theorem (The Density Hales-Jewett Theorem) has been produced by a herd. And Gowers, who initiated the effort, is a mathematician with significant cred, having received the Fields Medal in 1998 and now is a prof at Cambridge Univ pure maths dept.
    http://gowers.wordpress.com/2009/01/27/is-massively-collaborative-mathematics-possible/

    That being said, it doesn’t necessitate the rise of “herd” mathematics, but you overestimate the role of the individual genius by saying “Every innovative work of mankind has been the product of one – sometimes two, rarely three – minds.” Sure, there were Einsteins, Edisons, Da Vincis, Beethovens, but Jobs and Gates collaborated. Look at the Manhattan Project. And who was responsible for the internet? (Other than Al Gore…;-P It’s hard to really generalize to say what is more important. Jeff Koons art sells for millions and he is the name behind the art, yet he employs a workshop of 100 employees to actually paint for him.

    • Stanislav says:

      Dear Ashley,

      > the QWERTY keyboard.

      I agree.

      > A secondary point, not as important, but a mathematical theorem (The Density Hales-Jewett Theorem) has been produced by a herd.

      By that logic, we should credit the rendering cluster for the film “Lord of the Rings.”

      > And who was responsible for the internet?

      The Internet was a massive engineering project, closer to, say, the Panama Canal than a mathematical theorem.

    • > Jobs and Gates collaborated

      he did say INNOVATIVE.

      And funny thing about Al Gore. When he said that he was the political supporter of the internet, he was right. When he says all that eco- garbage he’s been shilling, oh how wrong he is. Just to set the record straight.

  • maht says:

    Hi,

    lots of professionals share your pain and yet getting across that Lunix is a curse is met with incredulity and brands one as a crank. The original *creators* and *maintainers* of Unix called it dead 20 years ago and they just caused a ripple across the industry by releasing some Linux only software (Go) that doesn’t even run on the OS they did after Unix (Plan9).

    The entrenchment is depressing. One can see the corpses in the mud all around.

    But the question always remains : when I build a new system, what tools should one use. If it has any success, I will need to hire colleagues so one has to decide how expensive those colleagues will be and how easy they are to find. Even though I’m a Plan9 developer “we should use Plan9 for this” is a very tricky suggestion to make. AFAIK there are only 5 other Plan9 programmers in my country, tops. It’s not difficult to imagine the same problem in other niches such as Scheme / Lisp.

  • Magice says:

    Should you NOT put in the second end note, this blog post would have been an enjoyable one. However, ho and below, you cannot restrain yourself from exposing your true nature, eh?

    I am sick and tired of the “philosophy of ONE”, about the whole thing of “ONLY ONE PERSON CAN DO THE JOB because [junk explanation goes here]“. About how such and such people are “heroes/heroines” and the rest are lechers on their successes. *sign*

    Isn’t this why Lisp never succeeds? Because its people keep the stupidity that they somehow rule the world, and anyone who dare butting in their ways are nothing but junks and need to be swept away into the trash can? Yeah right. You know all, right? You can do anything, eh?

    To tell you the truth, Lisp is just yet-another-product-well-passed-its-sell-by-date, to quote your remark on Linux. Think about it. Macros now is available in other systems as staged programming (or plain macros as in Perl 6). Memory management has long been copied over and over (if not done better). What’s more, people in other languages also invent things that never get back to Lisp, like a sane, auto detected type system, or natural syntax. Sorry, but do you realize that S-expression is primary for the machine, not humans? Plus, people in other languages are way more humble than those LISPers, and they actually encourage cooperation, build up libraries for reusability, so that their languages can be used by everyone. Yeah, the programmers do not need to have super-human skills claimed by LISPers, but so what? You know, Assembler programmers once proclaimed that “real programmers do not use Pascal/Emacs/whatnots.” See where they went.

    Now, back to your remark, products of ones. Yeah, right. Like Shakespeare was the ONLY one who wrote his plays, right? He used no one else products, right? May you explain to me where English came from? Shakespeare? Yeah, right. His plays reuse patterns and stories that have become cliche even in his time (come on, how many stories about lovers prevented by their parents and committed suicide? Thousands? Millions? My little sister can write one without even thinking, you know). Just because he put them together, mix them up a bit, and signed his name on, they works somehow became “his”, and no one else played any roles whatsoever.

    Like Newton single-handedly invented Calculus, right? (never mind the whole generation of mathematicians who inspired him). Like von Neumann single-handedly invented the model, right? (oh, Turing machine? It’s product of a sick creature and it played no role whatsoever. Mathematic foundation? oh, that’s work of those petsy little nerds not worthy of mentioning). Like X invented Y, right? Never mind the cumulative works and experiences by his time that enable his work; nor should we mind people who guide him, inspire him, and help him out along the way. Only the person that the media say to invent the product invent it.

    As if you are THAT different from what you accuse.

    • pat says:

      You need to explain what you mean by some of these things. You’re dancing around a real argument, perhaps, but there’s no substance behind any of these accusations. For example:

      “Plus, people in other languages are way more humble than those LISPers,”

      We are more humble than you, nya nya nya!

      “and they actually encourage cooperation, build up libraries for reusability, so that their languages can be used by everyone.”

      Do other languages have more libraries-per-capita or libraries-per-line of code than Lisp? My experience has not been the same. In fact, due to Lisp’s lack of mandatory encapsulation (e.g., “private/protected”), I’ve been able to use Lisp libraries in much more interesting way than the corresponding libraries in any other language.

      “Yeah, the programmers do not need to have super-human skills claimed by LISPers, but so what?”

      He never claimed “super-human skills” here. In fact, quite the opposite: if it was super-human skill that allowed Lispers to achieve so much, they would not need a more powerful language!

      “You know, Assembler programmers once proclaimed that “real programmers do not use Pascal/Emacs/whatnots.” See where they went.”

      Assembly language is near the bottom of the abstraction scale. They got beaten out by Moore’s law, when they couldn’t be as productive in the face of compilers. Lisp, on the other hand, is near the top of the abstraction scale.

      If you want to apply this analogy to 21st-century Lisp, you should talk about how Moore’s law today means concurrency, and that 3 of the 4 most popular Lisp dialects (Common Lisp, Scheme, and Emacs Lisp) have no real concurrency story. Of course, most non-Lisp languages don’t, either, and Clojure is the fastest growing Lisp dialect (and one of the fastest growing languages overall) so it looks like Lisp is doing OK here.

      “[Shakespeare's] plays reuse patterns and stories that have become cliche even in his time (come on, how many stories about lovers prevented by their parents and committed suicide? Thousands? Millions? My little sister can write one without even thinking, you know).”

      If they are so numerous, perhaps you could name a few. Wikipedia lists only 7 predecessors for Romeo and Juliet, though many of these don’t feature suicides.

      And your flippant comment about your sister actually supports his claim: while inspiration can and does come from anywhere and anyone, art comes from an individual. Your sister can write one, but could your sister and 3 of her friends write one? It’s telling that while there are many supposed sources for Romeo and Juliet, not a single one was written by more than one author.

    • Jakub L says:

      I know very well that this post is 4 years old, but the idiocy of its argument is such that I simply cannot resist posting this.

      You never understood LISP. Not in the slightest. The principal thing that makes LISP what it is has NEVER been replicated. Anywhere. Not even in Scheme or the disgusting pile of shit that is Clojure. It’s not macros, it’s not GC, it’s not syntax. It’s the philosophy of the language and the environment. The fact that every error is recoverable from. That any process can be paused, inspected, it’s functions modified and rerun with new definitions. That the operator is wholly in control of the machine. That productivity, understandability and inspectability is the top priority, at all times, no such idiocies such as “debug vs. release builds”.

      I firmly believe something I realized a while ago: if you think you understand LISP and you don’t find yourself hating any other programming “language” (save a few rare, precious exceptions) with a passion, you never understood anything.

      I despise the culture that you represent. You are a barbarian horde that in their horryfing ignorance stomped into the ground intellectual achievements of their betters. You plunged computing into a dark age that may last forever.

      Oh, and by the way, study the fucking LISP machines. Do not form an opinion based on today’s Common Lisps; the Lisps used in the LISP machines outshine them just as much today’s Common Lisps outshine whatever language is the current idiotic fad of the “coder community”.

      • Hello,

        You sound like you know what you’re talking about. I am passably proficient in Lisp and want to study the LispMs you mentioned in your comment, how do I go about it? Learning from systems like Movitz or something else? Please give me some pointers, I’m one of those “idiots who come along every generation” who wants to make a modern LispOS and make Emacs run on a modern, efficient lisp rather than elisp.

  • [...] This post was Twitted by cwbowron [...]

  • [...] This post was Twitted by TopHackerNews [...]

  • [...] This post was Twitted by nitedreamer1 [...]

  • [...] Loper OS » Where Lisp Fails: at Turning People into Fungible Cogs. (tags: lisp freedom) [...]

  • [...] came across a post today and found it very useful from a lead developers stand point. One of the reasons why IT has [...]

  • This is because a herd simply cannot innovate, whether for fun or for profit. Every innovative work of mankind has been the product of one – sometimes two, rarely three – minds. And never the work of a herd. No mathematical theorem, no enjoyable novel, no work of art of any importance, have ever been produced by a herd. I fail to see why innovative software ought to play by a different set of rules.

    Group Mind will never be on the leading edge. Period. You’ve stated it accurately and I’m inspired that my path to learn Scheme isn’t so futile as it sometimes feels! Great article.

  • ken says:

    This posting seems to be founded on the idea that “maximally productive” implies “difficult to understand and maintain”. Do you think this is self-evident?

    I expect the very best code to be elegant and understandable. That’s an aid to fungibility.

  • [...] or “Open-source companies absolutely can’t have a new, innovative technology.” or “a herd simply cannot innovate” at base, this argument is an argument glorifying individualism warning against collectivism. The [...]

  • pete23 says:

    My goodness. Came here from Daring Fireball for the Apple article (well judged), and was surprised to find my old tutor (Mark, University of Leeds, 1993-6) quoted!

    Good stuff.

  • Seumas MacLeod says:

    “Consider Linux: the poster child of successful free software. It is a knockoff of a 1970s operating system well past its sell-by date. This is because a herd simply cannot innovate, whether for fun or for profit. Every innovative work of mankind has been the product of one – sometimes two, rarely three – minds.”

    I cannot see why an individual working in a collaborative project could not bring innovation into it.

  • [...] As described here, for example.  The temptation is simply irresistible. [...]

  • There’s a book about the historical rise of CNC machine tools which is topical. I can’t remember the title and I didn’t read it but it was about the dis-empowerment versus the empowerment paradigms in machine tools. The latter side was exemplified by record and copy tools. The former side was exemplified by the belief that ‘engineers’ ought to program the tools. Which of course just resulted in “producing scrap at very high speeds”. Anyways, for all I know, I learned about the book from you.

  • [...] to elegance. Its continued popularity owes a lot to the premise very well expressed here: http://www.loper-os.org/?p=69"Employers much prefer that workers be fungible, rather than maximally productive."That [...]

  • Kaz says:

    Someone above wrote: “S-expression is a primary for machines not for humans?”

    This is oft-repeated nonsense.

    Machines are far better at parsing unambiguous, structured grammars than humans. Any time you make a language more complicated than S-expressions, the machine will be programmed to accept and generate it without too much difficulty, using decades-old techniques.

    Unfortunately, it becomes much more difficult for humans.

    Computer programming humans work with indentation to determine grammatic structure. We do not memorize some grammar’s 113 production rules and apply them algorithmically. We can quite easily be fooled by bad indentation. If we are asked to maintain some badly indented program, we curse and clean it up so that it becomes “readable”.

    With, s-expressions, indentation rules are very simple and easy to maintain automatically.

    Another approach is simply to make indentation the grammar, like Python. But then we lose the flexibility of being able to flatten expressions as we see fit.

    S-expressions can be “chunked” arbitrarily between horizontal and vertical space, yet still look good and make sense.

    Anyway, Lisp’s input language is completely programmable. You can write in Python if you like using the CLPython front end, etc.

  • bob allen says:

    Fugible sounds like a good thing. LISPers, spread your mycelium and bind the software world together! ;-D

    This is a really long conversation.

    • Stanislav says:

      Dear bob allen,

      > Fungible sounds like a good thing.

      A good thing – only from the standpoint of an employer.

      Fungible = interchangeable. And from that, a small step to: disposable.

      Yours,
      -Stanislav

  • cheesehorn says:

    You know, not everything is the result of an evil conspiracy. There were a few people who were good at writing Lisp, but not many, and the code was difficult to read. It was also slow, which was a big disadvantage in the 1980s and 1990s when decisions about programming languages were being made.

    A big reason why people used Lisp in the early days was because they wanted to create programs that wrote other programs, and thereby bootstrap artificial intelligence. This approach to AI turned out to be a dead end, though. No superhuman AIs came out of Lisp programs generating other Lisp programs.

    It’s pretty much expected that every functional programming enthusiast hates the “normals” who program in Java, C++, Javascript, and so forth. What I find amusing is that they hate other functional programming enthusiasts who belong to a slightly different tribe even more. Like your rant about how Clojure is impure and must be burned at the stake, or something. Human nature is a bitch, eh?

  • [...] to operate (talent which is difficult to simply rent without losing a large share of the rewards, because it is rare enough to name its own price.) Yes, it was once the case that you had to be a financier to send an intact penny across the [...]

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">