5 ms·
Graham's essay is basically about what general purpose language to use when you're a small technical startup of clever hackers who want to develop cool stuff as
by mbrock 11y ago
Graham's essay is basically about what general purpose language to use when you're a small technical startup of clever hackers who want to develop cool stuff as fast as possible, using the language as a competitive advantage.
His conclusion is, bluntly, Lisp, since you can reprogram that language arbitrarily and it won't get in your way.
It is also excellent for implementing DSLs, which can be as powerful as you want. For example, Viaweb uses (still!) a Lisp-based DSL to provide the non-Turing-complete customization language for their customers, and I suspect that whole thing was a weekend hack.
(Edit: it probably is Turing complete though.)
The ease of creating such restricted DSLs comes from Lisp's power. At some point you'll need a general purpose language, if only to implement your other specific languages. If your team can be competitively productive with a remarkably powerful language, Graham says you should use it.
- seiji 11y agoThe other side of massive isolated productivity is: nobody except them knew it or could maintain it. Yahoo ended up doing the whole "rewrite lisp in C++" thing because you can't hire "experts in paul graham's custom lisp macros" at scale. But, it worked, didn't it? Grow, scale, cash out, dump code on non-founders, become startup messiah.
- mbrock 11y agoYeah, it all depends on what you're trying to do. I'd also wager that Graham et al simply had more fun writing Lisp than any other language, and I grant them the right to do whatever they like. Yahoo presumably bought the product because they found it valuable. If they found that rewriting Lisp in C++ was the only way to get people to work on it, I don't question their business decision, although it does seem like a kind of "now you have two problems" situation. (Personally I find C++ way more difficult than anything I've seen in Lisp.)
- braythwayt 11y agoLet’s see now. Paul Graham wrote viaweb in Lisp and claims it was a competitive advantage for a startup. What is his track record with startup(s)? Do we just count N=1? Or do we include what YCombinator has accomplished? Now let’s look at what Yahoo has accomplished as a BigCo. Under the circumstances, would you bet that Paul was right about Lisp, Yahoo about C++, neither, or both? I’d go with Paul being right about Lisp, and Yahoo, well... I’d call that N=1 at best. Clearly they started from a “We already have hordes of C++ programmers” point of view, and a “We apply hordes or programmers to every problem” point of view. It might be the only point of view for them. It could very well be that there were hundreds of Lisp programmers available, but none might have wanted to work for Yahoo under any circumstances. Your mileage may well differ, based on the overlap in the venn diagram of language, culture, and problem set.
- S4M 11y agoOne thing that people forgot to mention is that Paul Graham was a Lisp expert before he started Viaweb - he had already written _On_Lisp_ which is still considered as one of the references to learn Common Lisp - and probably Robert Morris wasn't a bad lisper as well. They most likely were much better programmers than their competitors or Yahoo's median employee, so while Lisp may have been a competitive advantage for them, it wasn't the one that gave them the strongest edge. We don't have the data of how Lisp experts fare against equally strong C++ (or some other language) - although it may be that Lisp magnifies programmer's strength.
- will_pseudonym 11y agoIf they're such great programmers, don't you think they would also be really good at understanding what tools give them a competitive advantage? ;) "...it may be that Lisp magnifies programmers' strength," doesn't seem fair in this light.
- braythwayt 11y agoIf we take Paul’s “The Python Paradox” essay, and turn its conclusions up to eleven, we might end up with this extreme perspective: Perhaps great programmers are great in any language, and a company employing great programmer will have great results in any language, it’s the programmers that are the competitive advantage for a startup. But although they’d be great in any language, they have taste, and prefer to work in some languages regardless of whether that is a competitive advantage or not. And therefore, they prefer jobs and startups with languages that match their taste. And taking that a step forward, these mythical great programmers might prefer working with other people they perceive have taste, so they tend to clump together, and they see the language choice as a kind of signal of what kind of colleagues they will have working for a particular company. If all this handwaving has merit, it could be that choosing to do your startup in Lisp when Paul started ViaWeb was’t 100% about having a competitive advantage from Lisp itself, it was having a competitive advantage from having Paul and Robert, and anybody else they hired. --- With larger companies, they will never say it, but sometimes they don’t want these “great programmers,” with their taste and their salary demands, and their code that causes an army of middle-of-the-road workmanlike programmers to stare thoughtfully for long periods of time working out how it does what it does. Even if they end up being more productive, perhaps they end up being less predictable, because a smaller team of better programmers is more vulnerable to poaching as the company goes from developing the next big thing to an endless march of adding small enterprisey features. Even if you write in Scala, Haskell, Lisp, or Clojure, when the work becomes maintaining Yahoo... Maybe you don’t want people who relish a challenge, because they’ll quit. So you want to anti-signal, by rewriting it all in a workmanlike language, so you get workmanlike people. And if it takes touch longer or costs a bit more overall, it’s predictable because the people are more fungible. They’re easier to replace. So it could very well be that when you’re launching a startup, you want to go out on a limb and choose the language based on the kind of people you want to hire for a startup. And when you mature, you might rewrite it in another language based on the kind of people you want to hire for a mature company. And both choices might be right for their times. And neither might actually have anything to do with the “power” or “expressiveness” or “abstraction” of the language itself.
- icebraining 11y ago"Dump code on non-founders"? It's not like Yahoo was forced to take it; including the cost of dealing with the idiosyncrasies of the technology they're buying into the ROI calculation is their job. Assuming that cost was actually significant, pg et all paid the price in the form of a lower offer.
- raspasov 11y agoYou sound like a hater.
- coldtea 11y ago>For example, Viaweb uses (still!) a Lisp-based DSL to provide the non-Turing-complete customization language for their customers, and I suspect that whole thing was a weekend hack. "Still"? I think that thing has been scrapped for 15 years or so, as Yahoo rewrote the store engine. Or you mean just the user visible language that resulted?
- mbrock 11y agohttps://en.wikipedia.org/wiki/RTML https://en.wikipedia.org/wiki/RTML I've never used the thing, so I'm just going off what I've found. According to Graham, in 2003: > (a) The reason they rewrote it was entirely that the current engineers didn't understand Lisp and were too afraid to learn it. > (b) The resulting program is a new world's record case of Greenspun's Tenth Rule. The Yahoo Store Editor called compile at runtime on s-expressions made on the fly. To translate this into C++ they literally had to write a Lisp interpreter. http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg02367.html http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/m... So granted, "Lisp-based" would mean "based on a custom ad hoc partial reimplementation of Lisp."
- coldtea 11y agoAs an aside. From the same Wikipedia page: >In 1998, Yahoo! bought Viaweb for $49.6 million and renamed the service Yahoo! Store. Note how PG seems bullish on VC growth and large exits, whereas his company didn't take much VC money and had an insignificant exit compared to today's standards (even after adjusting for inflation). Not to mention that even before sold, ViaWeb had an actual business model and paying customers, as opposed to the model followed by lots of YC companies today. Practically it's like PG created and sold something like Basecamp/37 Signals, rather than the kind of startups he advocates for...
- PhilWright 11y agoI think it is a little unfair to expect that PG should have acted 17 years ago in a way that he might do today. Today he has 17 years worth of extra experience to call upon. If I look at code I wrote 17 years ago I do not judge it by the fact that today I could do it better. At the time it was the best I could. Besides, there are more reasons for selling your company than simply maximising the financial return. Maybe his partners wanted to sell, maybe he was exhausted, maybe he lost his passion for the project, maybe he valued never having to work again by selling for a certain payoff now.
- leoc 11y agoYes. Almost the whole point of wanting a more expressive implementation language is so that you can more easily and directly implement a wider range of more restrictive, more declarative languages in it, AND to lower the friction of moving information into, out of and between those sublanguages. Thesis, antithesis, synthesis, five cents please. /thread.
- mbrock 11y agoWrite a blog post about it and let's do another turn on the Hegelian merry-go-round. http://www.paulgraham.com/progbot.html http://www.paulgraham.com/progbot.html That's a similar idea, but with more of a focus on a single organically home-grown Lisp environment to make your application easier to write and change. I love this, by the way: > Language and program evolve together. Like the border between two warring states, the boundary between language and program is drawn and redrawn, until eventually it comes to rest along the mountains and rivers, the natural frontiers of your problem. In the end your program will look as if the language had been designed for it. And when language and program fit one another well, you end up with code which is clear, small, and efficient.