"My team will be able to program circles around everyone else" (2002)
tech.groups.yahoo.com
tech.groups.yahoo.com
There is a tone of defeatism here. As Alan Kay said, Smalltalk and Lisp tend to eat their young. Common Lisp is a testament to how great Lisp is but it's no end game. Alan Kay always said he expected people to make something way, way, way better. And yet no one did for such a long time.
Luckily there are some Lisps today that are no longer sitting around twiddling their thumbs.
Text anyone?
Subject: Re: [feyerabend-project] An introduction to Lisp
From: "Richard P. Gabriel"
Date: Tue Aug 27, 2002 1:03 pm
At 22:23 +0200 8/25/02, Dirk Riehle wrote: >Choosing CLOS or the like:
>
>- you don't get enough people
>- those people you get cost too much
>- you are incompatible with the rest of the world
>- adapters and bug-fixes will always be last for you
Though it's not relevant, I would argue like this:My team will be able to program circles around everyone else. They will be able to construct rapidly a language specific to the problem we are solving rather than using a language designed by computer scientists worrying about their place in history and a herd of library writers working in cubicles a thousand miles from our business. My team will be able to use a language without training wheels. Strong typing is for weak minds, and it's exactly like they say at MIT: Our current popular languages are designed to help losers lose less.
I will be able to point to various examples where Lisp programmers have written not only 3-5 times faster, but they wrote things other programmers thought were impossible. In this regard, I'd tell the CEO, our competitors will be spending all their time trying to figure out that it's really possible we're doing what we're doing, because they will be thinking in terms of customization at compile time or link time, not at runtime.
Moreover, we will be operating where the CEO is focusing on his or her specialty and not imposing his or her knuckleheaded view on technology.
Because Lisp is dead, I'll get better programmers for less money. I'll be able to guarantee 50 more IQ points for the same pay. And my guys will be able to spend their time typing in value not book keeping overhead and typing in type descriptions because their guys are too stupid to know when they type + numbers are involved.
Because no one uses Lisp, I'll have my pick of thousands of great, experienced programmers looking to work for someone with a non-zero IQ, not the ones fresh out of college with 10 programs under their belts.
I'll be compatible with everything because it is right now. And if someone throws me a bug, I can code around it in a few minutes. Being a niche market means we're more proprietary. People will not use Lisp to compete with us because they are lamebrains listening to the latest fashion statement from Sun or Microsoft.The open source crowd isn't even smart enough to notice C++, so they are especially nowhere in the picture.
Of course, no CEO will belive this because every one of them is stupid.
-rpg-
And I agree, working with someone so cocky is a bad idea. Because if you ever do follow his advice (against your better judgment) and the projects fails (as it likely will), it won't be because of his idea, but its because you were stupid too.
Orthogonally, you don't have assume that everyone is stupid for it to be a good idea to design things as though everyone is stupid, because the fractional slice of attention and working memory that the user can easily spare is effectively a moron. This argument applies easy to issues of usability, but for programming, it may equate to driving a car with blinders on. I don't really know.
While I grant that that's a harsh statement, would you disagree with what he says next?
"Our current popular languages are designed to help losers lose less."
Remember, this was written in 2002. Scala wasn't around, C# was just invented, and neither Ruby nor Python were in popular use.
All that said, I've recently done a couple of months of programming (in a very restrictive environment) in Javascript, and I yearn for a compiler.
Perhaps these tools do help "losers lose less"... but a tool is a force multiplier (bad tools are multipliers with a value less than one, and truly bad tools have negative multipliers :D Not all tools are bad.)
In the hands of an expert, the right tool can become a powerful weapon.
So I think your "truly bad tools" don't exist.
Really? In every aspect of programming? In every language? This is the typical prima donna bullshit that pervades this industry. I pity anyone who has to deal with you on a daily basis.
Good point.
Whatever tools we can leverage to make us lose less should be welcomed with open arms.
That's true in the abstract. In reality, though, there are often tradeoffs that come with these safeguards.
He's an expert in compiling Lisp. Probably the world expert on the subject.
But that's the bad news, too. He's right, but not tactful.
This that holds Lisp back in a business setting: the tech is awesome, the people skills aren't. Entrepreneurs considering doing a Lisp startup would be wise to address this as part of your strategy.
Example counterarguments:
Static typing is far better than dynamic typing. There is nothing you can express in a dynamically typed language which you cannot express in a statically typed language, and most of those things can be expressed just as succinctly thanks to type inference. Further, to use your own words, static typing provides debugging "at compile time or link time, not at runtime."
Hygienic macros (i.e., macros which gracefully handle identifier collisions) provide all the same "language-building" features of Lisp-style macros without mysterious bugs caused by namespace clashes. Furthermore, the "customization" use case you point out is far better served by either higher-order modules (a.k.a. functors), which enforce provides-requires relationships at compile time; and by compile-time inlining of static code (also known as partial compilation), thus allowing the same language to be used for compile-time and run-time code.
Fortunately, if I care about CPU time, I just use Haskell, which gives me the syntactic sugar and expressiveness of Lisp with the type safety of ... well ... Haskell.
Not CL vs. Scheme.
Most things require little change but when you need to add a method to a class, static typing starts to get in the way. Node.js express framework could not have been made in a static language nor could rails find_by_* method system.
There's not a lot that's not debatable.
What I want to know is whether Richard P. Gabriel ever had business success with LISP rather than just academic success. A quick scan of wikipedia doesn't mention any modern businesses.
For quite a few years now, he's been the chairman of OOPSLA (now renamed to SPLASH), which I find quite ironic.
But (if I understand the timeline) by the time he wrote that, the prior business had been dead and buried for 7 or 8 years. Reading between the lines, I think they attached themselves to a platform that looked good (symbolics) at the time, but which failed to capitalise on it's potential. Essentially they were in the accessories aftermarket... and if that market disappears you'll go down with it.
(and its still hackable).