6 ms·
A more powerful language is not enough of an advantage to defeat entrenched alternatives with strong network effects. There isn't a reason why language X is not
by fusiongyro 9y ago
A more powerful language is not enough of an advantage to defeat entrenched alternatives with strong network effects. There isn't a reason why language X is not entrenched, but there are historical reasons why C, C++ and Java are entrenched. Lisp just isn't enough more powerful than them to beat their home-court advantage. I guess I'd say, Lisp might be 10x better, but the network effects are orders of magnitude more meaningful than that intrinsic benefit.
It's not a very meaningful answer to the question, but it's a bit like asking why Todd isn't rich when we all know Todd is a smart guy. It's because getting rich takes more than raw intelligence.
Suppose you have a wildly evolving field where nobody can really predict what technologies are going to be successful in the market beyond the next five years or so. Suppose you have no internet. Suppose there are thousands of programmers with the ability to invent a language. Wouldn't you expect that some of them will, by happenstance, wind up on successful products and become successful while others stay relatively unknown? That's the birth of the mainstream programming languages and their antecedents in the 70s and early 80s.
- deleted 9y ago[deleted]
- AnimalMuppet 9y ago> Lisp just isn't enough more powerful than them to beat their home-court advantage. Note, however, that Lisp had a 10 year head start on C. Lisp had the home-court advantage, and C ate its lunch anyway.
- lispm 9y agoLisp had a different purpose. It wasn't developed as a systems programming language and wasn't used much as such. Though it had been used for some very specialized machines from the mid 70s to early 90s, see the Lisp Machine Manual. But if you read the manual. you'll see that it was initially developed for a very narrow group of people: high-end personal workstation users in research&development. This required very deep pockets. When this manual was published (1984) the cost was in the range from $70k upwards. Most of the machines at that time were bought with government money (aka DARPA). C spread, because it was a low-level systems programming language and various operating systems were written in C. The Lisp Machine softwre OTOH was written in a high-level language with special requirements for the hardware: tagged memory, stack-based instruction set CPU, large memory space, garbage collection support in hardware, ... Thus the software was not stripped down to a minimum and not very portable - which Unix and C was.
- rjsw 9y agoThe hardware that ran the software described in this manual didn't have tagged memory or garbage collection support in hardware and the real instruction set was similar to any RISC CPU. Somebody could have produced a workstation on conventional hardware that just ran Lisp but they didn't. Maybe Tektronix would have been a good candidate as their 4400 series wasn't sold to run UNIX, they ran either Smalltalk or Franz Lisp on top of a minimal OS.
- lispm 9y ago> The hardware that ran the software described in this manual didn't have tagged memory or garbage collection support in hardware and the real instruction set was similar to any RISC CPU. Then you should check the architecture of those machines some time: MIT CONS, MIT CADR, Symbolics LM-2 (a repackaged CADR), Symbolics 3600, LMI Lambda, ... http://www.bitsavers.org/pdf/mit/cons/TheLispMachine_Nov74.pdf http://www.bitsavers.org/pdf/mit/cons/TheLispMachine_Nov74.p... Page 5: 1 GC bit, 1 User bit, 2 cdr code bits, 5 bits data type, 23 bit pointer. Looks to me like a tagged CPU architecture... The MIT CADR Lisp Machine was a stack architecture with 24bit data and 8 bit tags. Six bits for data type encoding and 2 bits for compact lists. The CPU does type checks on operations, ... It was nothing like a RISC machine, which were researched for Lisp (Symbolics, Xerox, SPUR, SPARC, ...) mid/end 80s. A full decade later after the architecture of the MIT CONS Lisp Machine.
- rjsw 9y agoI am well aware of the architecture of the MIT CADR, LMI Lambda and TI Explorer, Symbolics lispms less so but they are not the subject of this thread. I have written CADR microcode recently. None of the features you list are constrained by the architecture of the hardware, they are just conventions of the software VM running on it. Would you suggest that the X86 is a tagged CPU architecture just because SBCL or a JVM use tags ? >Page 5: 1 GC bit, 1 User bit, 2 cdr code bits, 5 bits data type, 23 bit pointer. This is not true for the software that matches this version of the manual. System 99 used 25 bit pointers, there wasn't a GC or user bit. The change from the earlier word format was possible because this was not fixed in hardware. The CADR microinstruction set is load/store with regular opcode fields, it is very much like an early RISC.
- fusiongyro 9y agoLisp had a 10 year head start on expensive academic machines that were low on industry uses. C had a head start on high-end mainframes for actual work. Then the main contenders on the nascent PC were assembly, C and Pascal. P-code based compilers arrived quickly and were faster to develop with, but the resulting code was inefficient—and early PCs were sufficiently resource-constrained that inefficient code was very noticeable. So C obtained the territory that mattered: high-end business machines and the low-end machines that would spark the computing revolution, and just had to grow the two together. Lisp had a head start, but wasn't on the track that mattered.
- AnimalMuppet 9y ago> C had a head start on high-end mainframes for actual work. No. C started on low-end minicomputers, not high-end mainframes. And why didn't Lisp take over the low-end minicomputers? Because Lisp was too resource-hungry, and those low-end minicomputers didn't have the muscle to run Lisp well. They ran C just fine, though.
- fusiongyro 9y agoSo how did Lisp have the home court advantage then? :)
- AnimalMuppet 9y agoBecause it existed, and C didn't. Because it had a decade of code already written, and C didn't. Because it ran on many machines, and C initially ran on one.
- fusiongyro 9y agoIt ran on several machines, but not the ones that mattered. The existing code was irrelevant and not portable. I'm not denigrating Lisp. I'm saying the network effects favored C because the PC happened to take off.