[HN Gopher] A brief interview with Common Lisp co-creator Dr. Sc... ___________________________________________________________________ A brief interview with Common Lisp co-creator Dr. Scott Fahlman Author : dorfsmay Score : 119 points Date : 2022-11-12 16:07 UTC (6 hours ago) (HTM) web link (pldb.com) (TXT) w3m dump (pldb.com) | djha-skin wrote: | > programming languages don't become mainstream based on their | elegance or their deep utility. For any given project, the best | programming language to use is the one everyone else is using for | that kind of programming at that time. It doesn't have to be the | language that is best or most beautiful, and it hardly ever is. | As long as the currently-dominant language is adequate to the | task without TOO many infuriating shortcomings, just use it. | | Unexpected advice coming from one of Common Lisp's creators. He | goes on to talk about how languages usually become popular | because they have the backing of some large company. Things | haven't really changed. Rust and Golang both at least had some | sort of backing company to get them started. | jes5199 wrote: | counterexamples: python ruby perl clojure C C++ | mark_l_watson wrote: | Good interview. When I think of Scott Fahlman, I think of his | nicely designed and implemented backdrop neural network library | for Common Lisp. | ashok-syd wrote: | Do you have a link to it? Thank you | lisper wrote: | "What I came to understand, after years of work on Common Lisp | and the death of Dylan, the ongoing popularity of the hideous | C++, and the rise of Java, is that programming languages don't | become mainstream based on their elegance or their deep utility. | ... [T]he best languages very rarely take over, if ever. Some | language starts being used because it has the backing of some big | company or project, people doing similar things use it as well, | positive feedback sets in, and soon it is the language everyone | is using. Java is an example -- not nearly as good as Lisp on | many dimensions, but it appeared at the right time for a language | with some good properties for creating downloadable Internet | apps. And it had the backing of Sun Microsystems, at a time when | Sun was powerful. So Java became mainstream, while Common Lisp | and Dylan faded away." | | :-( | [deleted] | nonrandomstring wrote: | It is sad. But I feel some of the sibling comments about | availability are correct. My love of Lisp went unrequited for | may years. Faffing around with Steel Bank and Common Lisp | environments that drove me crazy, when I could just type | | cc myprog.c | | and get stuff done (fast but unsafely) | | The Scheme we had at college (which ran on some Sun machines | IIRC) just wasn't available in the wild once I left school. | dleslie wrote: | He's overlooking an incredibly important factor: | | Java and C++ had capable, even enterprise quality free | compilers at a time when Common Lisp environments were | typically either hideously expensive or poorly supported or | both. | | You could grab Sun's JDK for free, or GCC, or (later) Visual | Studio Express at a time when the best options for Common Lisp | were thousands of dollars per seat, or barely working on x86 | (CMUCL didn't have x86 support in any capacity until after 96, | and by then Java was out). | | Personally, I loved lisp in the 90s, but it was just so much | easier to get my hands on C and Java, and libraries to go with | them. Java, C and C++ were actually available on DOS and | Windows. Even today, Windows support among lisps is terrible! | | Edit: I miss Turbo C, but had there been a Turbo Lisp, priced | affordably and on the shelf at radio shack? We'd all be | programming in lisp. | pfdietz wrote: | Indeed. It took a while for a good free Common Lisp to become | available. Arguably this wasn't until SBCL (initial release, | December 1999). | lispm wrote: | And even that still lacks basic Windows integration. | jll29 wrote: | (Free) LISPs on Linux today look a bit rough, is there any | implementation that turns Linux into something that has the | look and feel of a LISP machine? | | Parentheses aside, don't expect people to pick up a | language if all they can see is a REPL where the only edit | operation that works is DEL(ete), at a time when all other | languages have graphical IDEs with syntax coloring, | context-sensitive help, single-step debugging etc. (and no, | I don't mean Emacs). | | edit: screen shot to support the argument https://en.wikipe | dia.org/wiki/Steel_Bank_Common_Lisp#/media/... | dleslie wrote: | No, there is not. There's no desktop environment for | Linux that supports the runtime extensibility and | inspection abilities of a symbolics lisp machine. | zabzonk wrote: | agree. this has also been the problem fore smalltalk. before | things like scratch and pharo came along, commercial | smalltalk licences were eye-wateringly expensive. | lispm wrote: | CMUCL was his baby and he was responsible for that. But it | addressed UNIX systems. Those usually had not x86 processors | at that time and Windows was not very interesting as a | platform then. | | Windows (and Macs) were never a good place for free Lisps | for, since the support of those on proprietary platforms was | costly (in terms of knowhow, time and money) and there was no | vendor support. Users on those platforms usually expect | support for the vendor libraries AND full GUI support. | Microsoft and Apple always pushed their own development | tools&languages (Visual Basic, C, C++ and Pascal, C/C++, | Objective-C, Swift). The Lisp systems used on Windows and Mac | were mostly commercial, since they had GUI and platform | support. MCL on the Mac and on Windows then Golden Common | Lisp, Allegro CL, ... | rjsw wrote: | CMUCL could have been ported to x86 earlier, I was running | UNIX on a 386 in 1987 but only had AKCL for it. I was the | first beta-tester for CMUCL on FreeBSD in 1996. | rileyphone wrote: | Similar forces hampered the adoption of Smalltalk in the 90s | as well [0]. Charging per-seat licenses to use programming | languages almost never works, introducing friction that | counters needed network effects, especially when prospective | users can download a perfectly viable (if not much worse) | alternative for free. Sure, there are a few systems bitterly | hanging on to this business model - Lispworks, Cincom, | Mathematica - but it's clear they are surviving in spite of | it. | | 0. https://gbracha.blogspot.com/2020/05/bits-of-history- | words-o... | taeric wrote: | I think that is just a facet of his point. It was Sun's | corporate backing and muscle that enabled you to get their | SDK for free. And this is ignoring the reach out into | education markets to get Java as the 101 level course for an | absurd number of students. | [deleted] | skissane wrote: | > It was Sun's corporate backing and muscle that enabled | you to get their SDK for free. | | You could get GCC for free before Java 1.0 was released. My | personal introduction to GCC was Walnut Creek's Hobbes OS/2 | CD-ROM from 1994, the EMX port. Paid for the CD-ROM, but we | could have downloaded it for free if we had Internet | access. EMX did DOS too, and DJGPP was also available at | the same time (and ended up overtaking EMX under DOS). | taeric wrote: | Right. Gcc was free. And had wider reach than lisp. Not | sure how this is a counter point? | | You could somewhat freely get some compilers. Sun paid a | ton to get Java to people. | dleslie wrote: | > > It was Sun's corporate backing and muscle that | enabled you to get their SDK for free. | | It was GCC being free, and on DOS thanks to djgpp, that | made it successful; and it didn't need corporate | megabucks to do it. | taeric wrote: | I think you are talking past me, though. My claim is that | it took massive corporate bucks for Java to get inroads. | Specifically because it was competing with some free | options. | | Common lisp had nothing like that. Nor did Ada. Or... | really, any other language? Microsoft did a pretty heavy | push with C# and the general .NET ecosystem. Though, even | they had to resort to destroying a lot if the VBScript | world that had proliferated quite heavily by just being | available on tools that folks otherwise had. | dleslie wrote: | Java was free, too; and at the time, djgpp was | effectively the only free c++ toolchain on DOS and | Windows. | | Common Lisp wasn't even available to DOS and Windows | users, let alone free or corporately backed. Even now | every single free common lisp has substandard or outright | broken Windows support. | | Common Lisp didn't bother to show up to the party. That's | the first problem; it was priced terribly, when it did | become usefully available. | skissane wrote: | > Not sure how this is a counter point? | | GCC being freely available didn't require massive | corporate backing. | | So lack of massive corporate backing is insufficient as | an explanation of Common Lisp's lack of free availability | (on then-mainstream platforms) circa 1995. | | I think the real explanation is, at that point, the | Common Lisp community mostly didn't get why it was | important. And by the time they got it, it was too late. | taeric wrote: | GCC being freely available is by far the exception, | historically. Such that I don't really get your point. Do | we know why/how GCC was able to pull off being free? | | And, as I said in a sibling thread, my assertion is that | it took massive corporate spending for Sun to get inroads | with Java. In large because they were competing with GCC. | skissane wrote: | > Do we know why/how GCC was able to pull off being free? | | Because RMS is an ideological obsessive for whom software | being free was more important than making money. Although | he wrote a major Lisp implementation himself (Emacs | Lisp), he saw C as the more pragmatic path to making free | software widely available than Lisp. Also, as a former | employee, MIT gave him a lot of (in-kind) support. | | (Actually GCC was not the first free compiler. RMS | started out planning to turn LLNL's free compiler for a | Pascal derivative, Pastel, into a C compiler. But he | abandoned that approach, because the Pastel compiler was | a big resource hog by the standards of the time - it was | initially developed to run on a supercomputer, it | wouldn't work on the Unix workstation RMS was using.) | | CMU Common Lisp was free, and CMU's research funding paid | for it. But their focus was on Unix workstations, they | never saw the value in porting it to x86 (let alone | DOS/Windows). By the time the x86 port happened (done by | volunteers, not paid for by CMU), Java had already taken | off. | dleslie wrote: | djgpp + allegro | | That combination was killer for a broke teenager in the | 90s. | SighMagi wrote: | That was indeed where many of my teenage hours went - | hacking out game experiments in DJGPP and Allegro on our | family's 486. It was also my intro to Emacs which stayed | with me for decades afterwards. | fm2606 wrote: | > I miss Turbo C | | I started college in 1988 and they were offering copies of | Turbo C with all the books for $5, but you had to supply the | 5 1/4" disks. | | I only lasted 1 1/2 years in college (that time around) so I | didn't get to experience Unix or lisp or anything like that. | Well I did take an IBM 370 assembly language class. Had to do | the assignments on dumb terminals in the basement of the | dorms and pick up the print outs in the basement of the CS | building. | hajile wrote: | If this were the case, then explain StandardML which is | vastly superior to Java and it's relatives in every | conceivable way outside of a big corporation to push it. | | Even today, a large company like google would rather spend | time with an inferior language like Go than work with SML. | bcrosby95 wrote: | I transferred from community college to a CSU in the early | '00s. Our high school was using Pascal, the community college | I went into was using C++, and the CSU I eventually | transferred into recently transitioned to Java, and they were | using C++ before then. | | When we used C++, the education version of Visual Studio was | about the price of a text book - so not very expensive | considering you would use it across many classes. | | I assume the schools followed industry rather than the other | way around. But thinking about it, Java had made its way into | at least one CSU, as the primary language, about 3-4 years | after its 1.0 release date. That is amazingly fast. | dorfsmay wrote: | The money SUN poured to support Java helped a lot, but the | promise of being able to run the same "binary" on every | platform (and running faster than perl, which was the other | write-once-run-everywhere at the time) was also very | attractive. | comfypotato wrote: | He certainly implies that he thinks Common Lisp (and maybe Dylan) | would have been as popular as Java is today if the lottery had | played out differently. | | I wonder if anyone else feels this way. The programming world | would be a different place. | | I can't help but fantasize about how incredible eMacs would be by | now if that had been the case. (Not that it isn't already | incredible.) | twblalock wrote: | Honestly it would have turned into something like Java if it | had become popular in the industry. OOP and functional | programming are really just different ways to encapsulate data | and control dispatch. They don't change the fundamental nature | of the work. | | Ultimately what happened to Java was the same thing that would | have happened to any other dominant language that the industry | uses to build heavy duty enterprise software: stuff like ORM | frameworks, data transfer objects, servlet containers, some | kind of web integration like JSP, RPC frameworks, SOAP, REST, | etc. | | Would it be easier or better to do that stuff in Lisp? Maybe. | But not by a huge amount. The beauty of the language would | certainly end up being obscured by the boring, complex, | practical work that we would all be doing with it. And most | programmers would not be better than they are now -- instead | they would force an imperative model on top of whatever | substrate they are given, just like they do today. | nerdponx wrote: | I think S-expressions are fundamentally too difficult to work | with, without good editor support, to make Lisp anything other | than a niche power tool for the highly motivated. I love CL, | Scheme, Clojure, Janet, Fennel, etc. but I don't blame anyone | for finding them inaccessible. | | I think Python, JavaScript, and Go have caught on for somewhat | similar reasons, compared to Java and C#: they are easier to | get started with, and you can still scale them up to fairly | large applications. | | On the other hand, I think S-expressions are a sadly | underexplored format for data serialization and storage. | wrycoder wrote: | But, you always have good editor support. Lisp/Scheme has | traditionally been coded using Emacs or its equivalent. With | that support, the parens seem to disappear after you've been | writing lisp for awhile. | | Beginner lispy languages come with a suitable beginner IDE, | e.g. Racket or Logo. | | A typical lisp statement has a leading '(' and a trailing | ')', which replaces the ';' in Algol-like languages. So, one | additional character, which brings a lot of benefit when | writing DSLs and macros. | | (Python doesn't have the ';', but its whitespace is | ambiguous, so that's not a fair comparison.) | | Sane people don't write lisp using Notepad. | bambataa wrote: | I tried using Slime with Scheme when I was doing SICP. I'm | sure it's great when you know it well, but I kept pressing | the wrong shortcut and moving things around in ways I | didn't intend and then it wouldn't let me manually type or | delete parentheses to fix things. I found it very | frustrating and ended up turning it off. | | Just another barrier and C-style languages seem much easier | to write in comparison. | Jtsummers wrote: | Slime did that? Slime doesn't take over the editor that | much (it shouldn't prevent you from typing parentheses, | I've used it for 16 years or so and never experienced | anything like that). Was it paredit or another editor | mode? | comfypotato wrote: | I think the parent comment is alluding to the notion that | the very entry level programmer enjoys being able to use | notepad. That is to say the initial barrier of eMacs is | just too much. Obviously worth it in the long run though. | db48x wrote: | "eMacs" is the wrong capitalization. It's "Emacs". | comfypotato wrote: | M-c would fix that I believe. | | My autocorrect has been doing that for some reason and I | assumed there was logic to it. Your comment sent me on a | dive that proved my intuition woefully incorrect. | [deleted] | bmitc wrote: | I have never really understood people's aversion to | parentheses. Many languages require them in ad-hoc ways to | groups expressions. For S-expressions, you give up some mild | convenience and looks for extremely consistent semantics. | musicale wrote: | > I have never really understood people's aversion to | parentheses | | A common refrain from Lisp family language enthusiasts. | (Personally I prefer Smalltalk-style "conversational" | syntax to Lisp-style or C-style syntax, yet it's similarly | unpopular.) | | For better or for worse, the vast majority of programmers | seem to have voted with their feet for C-style syntax | (C/C++/Java/JavaScript/etc.) and its variants (Python). In | a C/C++/Java/JavaScript world, C syntax has a fair amount | of leverage. | | It's a shame that Dylan didn't continue, as it seems to | have taken a decent crack at adding algebraic syntax to | Common Lisp - arguably realizing McCarthy's original vision | of infix M-expressions as a more programmer-friendly | syntax. I wonder how hard it would be to add a Dylan-style | syntax layer to modern CL? | | Be that as it may, one can readily write Lisp/Scheme-style | programs in JavaScript. See Crockford's "The Little | JavaScripter."[1] The major omission/deficiency being | macros for JavaScript syntax. | | [1] https://www.crockford.com/little.html | bmitc wrote: | My favorite languages are MLs, particularly F#, which | usually have some of the cleanest syntaxes available. | It's not just Lisp-family enthusiasts. I think it's more | for anyone that thinks rather that follows or assumes or | whatever. | | I actually learned about Lisp/Scheme after I had learned | about several other languages. | | What do people not like about parentheses? It's normally | along the lines of "well, I just don't like them", which | can be read as "it's not what I'm used to". Yet, these | same programmers will freely throw parentheses around | expressions in an ad-how manner to communicate with the | compiler in their given language. In some ways, one can | back Lisp/Scheme out of popular languages by stating that | instead of letting parentheses be used to frequently but | not always _clarify_ precedence and grouping and function | application, they are going to be required to _enforce_ | these. Such a thing is not such a radical or unreasonable | stance. | | McCarthy's original M-expressions are somewhat | irrelevant. He wasn't trying to make a programming | language for software development. He was investigating | it as a tool for his research. | | My primary complaint about popular languages like Python, | C++, C#, etc. are their irregularities. There _a lot_ of | syntax, semantics, and little quirks in the languages | that make it very hard to just _know_ the language and | move on solving problems. My favorite thing about Schemes | are their regularity. The social popularity of languages | can't be explained by their technical merits. It's more | due to social and historical phenomena than a technical | reason. | | For what it's worth, I also like Smalltalks. | housel wrote: | (Open) Dylan is surviving just fine, and we expect to do | a new release later this month. | wott wrote: | I haven't given a look at this language in a few years; | is it still so that there are no enums, and that | operators _must_ be surrounded by spaces? | dannymi wrote: | As a Guix developer (there's a lot of Scheme and Common | Lisp in Guix :) ), every few years I check on Open Dylan | but so far each time there was something missing that | made me unable to package it for Guix (building it | entirely from source). | | I've checked it a few minutes ago and Open Dylan's | ./configure says to download a bootstrap compiler from | https://opendylan.org/download/index.html first -- but | there's no such bootstrap compiler there. | | Do you have some hints on how to package it? | lakecresva wrote: | The syntax is consistent, I don't know about the semantics. | The trade-off is that it becomes more difficult to glance | at a piece of code and visually distinguish what's what. | krapp wrote: | It's not so much an aversion to parentheses as an aversion | to _nothing but_ parentheses. Other languages use other | brackets to indicate different contexts, but s-expressions | can more difficult to read. The idiom of putting all of | your end parens on a single line doesn 't help. | | And for most people, the mild convenience of readability is | preferable to the consistent semantics. | ozten wrote: | Sun Microsystems poured millions of dollars into marketing | Java. During the dotcom bust billboards, posters, magazine ads, | and online ads where common. | | This massively accelerated it's adoption curve and built a | valuable trademark which would be part of the reason Oracle | paid $7 billion to buy it. | kaveh808 wrote: | If Apple had not been in financial trouble... | | If Dylan had been completed in time for the NewtonOS... | | If the Newton had taken off... | | I mused on some some alternate histories for Common Lisp in a | blog posting: | | https://medium.com/@kaveh808/41-world-building-and-alternate... | lispm wrote: | Also if the first Newton MessagePad didn't have less than 1 | MB RAM. ;-) The first Newton had 640kbyte of RAM and a 20 Mhz | ARM Processor. It was the result of bringing down the cost. | It wasn't well received, since the handwriting recognition | was bad and the machine was underpowered. The 130 model fixed | the latter. In later OS versions the handwriting became | useful, eventually. | | I had later the wonderful Newton MessagePad 2100 with 8 MB | RAM and a much improved ARM processor - I used Common Lisp on | a Mac with that amount of RAM.. The 2000/2100 series would | have been a perfect platform for Dylan, it even would be good | enough to run a nice garbage collector. | | When they discontinued the platform, we knew that it would | take a lot of time, years!, for Apple to come up with a new | similar mobile platform, but it eventually happened with the | iPod touch and the iPhone. But those were then programmed in | an object-oriented C dialect and the operating system wasn't | as cool as the Newton OS. | mark_l_watson wrote: | I agree. I bought a Newton after having lunch with Larry | Tesler (John Kona also dined with us, a fun lunch!). Larry | was pitching me on converting my first Common Lisp book to | Dylan. | | I ended up just tossing my Newton in the trash. Sad. | fhd2 wrote: | I find this part the most interesting: | | "Since then, my focus has been on AI research, and part of that | involves the design of planning systems that (maybe) can | eliminate the need for most programming. You tell them what you | want, as you might describe it to a smart grad student, they | maybe ask some clarification questions, and then they go do it. | That only works if they know enough about the world and have | enough "common sense" to avoid blunders." | | I wonder what he's working on to enable that kind of environment. | Thinking about how most of the programming I do (in high level | languages) comes down to starting with a pretty rough idea and | iterating on the idea while learning more about what's feasible / | effective, typically refining what it is I'm building rather | fluidly. I rarely know exactly what to build upfront, nor do the | CEOs, product managers, designers or sales people I've worked | with so far. I think this feed back loop goes far beyond "asking | a few clarifying questions". | | Maybe the kind of task a professor would give to a grad student | is entirely different from that kind of typical industry work? | mirker wrote: | Usually grad students get projects to investigate or prove a | particular idea. It's especially straightforward to do this | when the advisor is iterating on a line of ideas, and you | resume where the last grad student left off. There isn't a | point in building anything other than to test the idea, so you | don't want feedback to bias you in what direction to go. | going_ham wrote: | If you can formulate your problem in the sense of classical | planning problem, there are different sets of planners that can | solve the problem. These methods are explainable. Some of them | even give the optimal solution to your problem if you use | optimal heuristics. This is what he means by that statement. | The only issue is, right now the classical planning is | hyperfocused into few problems and most of the methods work on | narrow domains like path finding, logistics, constraints based | problems and so on. | Mikeb85 wrote: | In the 80's and 90's Common Lisp compilers and editors were | insanely expensive. The hardware was too, not even sure if those | early implementations ran on x86... That's why they didn't take | off. Easy to look back with rose coloured lenses now that we've | had free implementations for awhile... | | Meanwhile C/C++, Pascal and Java were all accessible and cheap if | not free... | tsnl wrote: | Mirror: | https://web.archive.org/web/20221112180021/https://pldb.com/... ___________________________________________________________________ (page generated 2022-11-12 23:00 UTC)