8 ms·
It 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
by fusiongyro 9y ago
It 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.
- AnimalMuppet 9y ago> It ran on several machines, but not the ones that mattered. And why wasn't it ported to the ones that mattered? I keep hearing about how easy it is to build a (simple) Lisp compiler. Why wasn't it ported, or a fresh one built? > The existing code was irrelevant and not portable. Why was the existing code irrelevant? In ten years, nobody wrote anything in Lisp that mattered to anyone? In fact, there were Lisp compilers for the PDP-10, which (I presume) could run on the PDP-11, where C began to take over the world. Why didn't those Lisps take over the world? You can't explain it just by C existing on the right machines at the right time. (There wouldn't have been C on the PC if it hadn't taken off - at least to some degree - on the PDP-11 a decade earlier.)
- fusiongyro 9y agoI don't have to explain why Lisp failed to take off. I just have to explain why C did, because network effects are more significant than language advantages. This is my central thesis. I don't think awareness of Lisp was evenly distributed among people developing on PCs in the time period when the network advantage was obtained. Even if it was, if there were already a decent C compiler, I don't think most practical engineers would immediately embark on a compiler development project. During this era, those who did know about Lisp certainly would have regarded it as being too resource-intensive for work in a resource-constrained environment like the PC. I think it's specious to say it's easy to develop a simple Lisp compiler, so why didn't anything get ported. The code you may have wanted to port would not have been written in some minimalist dialect of Lisp, it would have been written in ZetaLisp. So there would be assumptions about resources and the underlying system that you would have to fake. And again, we're talking about porting from a resource-rich environment to a resource-scarce environment. It was probably a reach for me to say there wasn't anything to port. But what would someone have wanted to port? A graphical application that ran on a Lisp machine would have made assumptions about the display that aren't true about a PC. An academic AI program would have been too short on resources to be much use. What wound up selling the PCs in the early days was business applications. Were there an assortment of useful business applications on Lisp machines that there was commercial demand for? WordStar and Visicalc invented that territory and were first released in the late 70s—does anyone remember programs for the Lisp machine that businesses were clamoring for? And really, software churn has always meant there are more new programs in use than old ones. What I don't have an explanation for is why the C compilers produced better code than the Pascal compilers. Partly, I know p-code made it faster to build a Pascal compiler but I don't know why it inhibited development of more performant ones. Turbo Pascal's speed of compilation was a result of not having an AST, which probably inhibited performance optimizations, but that may have been too late in the story to explain anything. And I don't have an explanation for why nobody developed a Lisp-like language that had explicit allocation. My best guess would be simply that their attention was elsewhere, probably working on AI, which wouldn't bottom out until after the winners were already entrenched. By the way, in case it isn't clear, I am really enjoying this conversation. I'm very interested in this window of time in computing and if I have a wrong idea about something, I do want to know. The only way to preserve this history is to talk about it and keep the memory alive.
- dreamcompiler 9y ago> What I don't have an explanation for is why the C compilers produced better code than the Pascal compilers. I was not aware of this, but I can think of one reason: Pascal does bound checks on array references. Having lived through the Pascal-to-C transition in academia, I was under the impression that the main reason for C's success was that it came with Unix, and Unix was free (at least to schools at the time), while other languages and OSes cost money.
- pjmlp 9y agoThat was part of the reason, yes. On MS-DOS, Turbo Pascal and Turbo C had equal code quality and for the use cases where bound checking or integer overflow checking could be a performance issue, it was possible to disable it. In both cases you would end up using Assembly anyway, because on those days compilers were pretty bad generating code.
- fusiongyro 9y agoThat erodes part of my argument. Why did C overtake Pascal? If it wasn't performance or availability, was it just preferences? Or portability from other existing codebases?
- pjmlp 9y agoShort answer, UNIX and politics. Long answer is a bit more complex. UNIX was the only OS where C was relevant, and AT&T was forbidden to sell it, so they made the source code available to universities and companies for a nominal price. That was already a big difference, instead of paying a sum of several thousands for closed source OS stuck to a specific mainframe, companies and universities could get something with source code for about $70 (if I remember correctly). Thus UNIX eventually became the foundation of 80's startups like Sun and SGI. Home computers firmware was basically Assembly, where C (actually K&R C dialects) was yet another language among all the available ones. When the 16 bit revolution happened, there were several 16 bit computers systems done in a mix of Pascal and Assembly. The most notable ones Apple Lisa, Mac OS, MicroEngine and Corvus Concept. http://basalgangster.macgui.com/RetroMacComputing/The_Long_View/Entries/2011/4/27_MacApp_-_part_1.html http://basalgangster.macgui.com/RetroMacComputing/The_Long_V... http://basalgangster.macgui.com/RetroMacComputing/The_Long_View/Entries/2011/5/28_MacApp_-_evolution.html http://basalgangster.macgui.com/RetroMacComputing/The_Long_V... https://en.wikipedia.org/wiki/Pascal_MicroEngine https://en.wikipedia.org/wiki/Pascal_MicroEngine https://en.wikipedia.org/wiki/Corvus_Systems https://en.wikipedia.org/wiki/Corvus_Systems As a notable example, Photoshop started as an Object Pascal application, which was later on ported to C++. http://basalgangster.macgui.com/RetroMacComputing/The_Long_View/Entries/2013/3/30_Building_Photoshop.html http://basalgangster.macgui.com/RetroMacComputing/The_Long_V... So you had UNIX variants gaining a foothold on university campus and companies, with people wanting to write applications on their tiny (cheaper) computers at home, which like JavaScript and the Browser nowadays, C eventually escaped UNIX. Apple eventually gave in to market pressure and rewrote their Object Pascal based SDK into C++ and C. And even tried their first stint at UNIX with A/UX. http://basalgangster.macgui.com/RetroMacComputing/The_Long_View/Entries/2010/9/25_A_UX.html http://basalgangster.macgui.com/RetroMacComputing/The_Long_V... Corvus Systems tried to pivot their computers into Concept Unix workstation. The Amiga OS was written in a mix of Assembly and BCPL, and eventually got its UNIX port. https://en.wikipedia.org/wiki/Amiga_Unix https://en.wikipedia.org/wiki/Amiga_Unix C by virtue of being UNIX's system language meant that its tooling was free with the OS, while any other programming language had to be bough separately and still you would need to write FFI to C at some level. As side note, eventually C compilers stopped being available for free when Sun started the trend of selling the SDK, which made the largely ignored gcc to start getting contributions. While this was happening, Brian Kernighan decided to push for C, with articles like "Why Pascal is Not My Favorite Programming Language" http://www.lysator.liu.se/c/bwk-on-pascal.html http://www.lysator.liu.se/c/bwk-on-pascal.html Which ignored the fact that the majority of Pascal dialects had features that covered his complaints, specially the second ISO revision, Extended Pascal. And that outside of UNIX most C compilers were actually dialects, which is one of the causes for UB. There were other bash articles flying around like "Real Programmers Don't Use PASCAL". http://www.ee.ryerson.ca/~elf/hack/realmen.html http://www.ee.ryerson.ca/~elf/hack/realmen.html On the PC world, OS/2 and Windows were being written in C, but the majority of application developers were actually already jumping with C++ wit C Set++ for OS/2, OWL, VCL and MFC on Windows. Another nascent PC OS, BeOS, was also being written in C++. It was the rise of FOSS UNIX software, with C as its systems language, that shifted the balance towards C. To stress it again, just like JavaScript on the browser. If you look at the history of systems programming languages, the ones that lasted longer were always the ones that were the way to write software for a specific OS. Regarding Pascal, the majority of vendors started to consider Turbo Pascal as the pseudo-official standard, which when Borland decided to ignore small developers and focus on the enterprise, just kind of killed the Pascal market. Specially since Turbo Pascal was only focused on PC. There is probably a bit more to rant about, but I guess you get the idea.
- sedachv 9y ago> Why wasn't it ported, or a fresh one built?... In fact, there were Lisp compilers for the PDP-10, which (I presume) could run on the PDP-11 The PDP-11 was in no way compatible with the PDP-10, and there was no way a PDP-10 Lisp implementation like Maclisp or Interlisp would fit on a PDP-11. All you have to do is Google "PDP-11 Lisp" to see that there were many different Lisp interpreters and at least one compiler implemented for the PDP-11 throughout the 1970s. Likewise Intel processors - the first implementation of Lisp on the 8080 was done by Takashi Chikayama (http://www.logos.ic.i.u-tokyo.ac.jp/~chik/ http://www.logos.ic.i.u-tokyo.ac.jp/~chik/) in 1976 (http://www.softwarepreservation.org/projects/LISP/utilisp/utilisp/IPSJ-JIP1303003.pdf http://www.softwarepreservation.org/projects/LISP/utilisp/ut...)