Live data from Hacker News

Doug McIlroy: McCarthy Presents Lisp

paulgraham.com

21–30 of 64 posts

Re: Doug McIlroy: McCarthy Presents Lisp

#21

I just finished reading the LISP 1.5 Programmer's Manual (still readily available from Amazon), published in 1962. The book is mind-blowing, because it mixes discussions of high-order functions with instructions on how to properly lay out programs on punch cards. The "high level language" which shipped on every microcomputer platform of the 1970s and 1980s was Basic. I have often wondered why. Compared to Lisp, it is…

There was a tradition of using Basic from the days of printer terminals. A language with s-expressions doesn't work well with printer terminals, and a language with line numbers does.

Lisp would also probably have overloaded the hardware of early microcomputers.

And then of course there is the fact that Basic seemed accessible, and Lisp seemed frighteningly advanced. Even Lisp hackers seem to have thought so in the 1970s.

Re: Doug McIlroy: McCarthy Presents Lisp

#22

I just finished reading the LISP 1.5 Programmer's Manual (still readily available from Amazon), published in 1962. The book is mind-blowing, because it mixes discussions of high-order functions with instructions on how to properly lay out programs on punch cards. The "high level language" which shipped on every microcomputer platform of the 1970s and 1980s was Basic. I have often wondered why. Compared to Lisp, it is…

LISP 1.5 Programmer's Manual (and others) in PDF: http://www.softwarepreservation.org/projects/LISP/book

Re: Doug McIlroy: McCarthy Presents Lisp

#23
post #9

Earlier quoted context omitted.

Touche and haw haw, but you very well know what I've meant.

What you mean is that "dead" is a perception that exists only in your mind. If you look at concerns other than langauge, you could easily say that "writing quality software is dead", since most programmers write low-quality programs that barely work at all. That doesn't mean that you shouldn't try to do a good job, even though quality in the industry is "dead". Don't base what you do on the actions of an ignorant maj…

The difference is that the industry desires quality; it just doesn't know how to achieve it. The industry does not desire Lisps (or, for that matter any language that doesn't resemble either C or BASIC.)

Re: Doug McIlroy: McCarthy Presents Lisp

#24
post #2

I always wondered why Lisp is dead in the water. I got replies from people that never professorially coded anything in Lisp or Scheme (yeah..) - argument was along the lines that in the past hardware was always dictating lower level languages and leagues of people were taught the ways of the everyday code that was only a few (if any) levels above the hardware. Thus, all of the primitives of the age (ASM, C, Pascal, w…

> My primary focus in life has been computer graphics, and my first language was C. I was born in 1980

Ah, you've come a bit too late. Late 80s through early 90s Lisp machines were popular in the CG industry; modeling, animating and even rendering software were written in pure Lisp. After Lisp machines were taken over by unix workstations, those tools were ported on Common Lisp and as far as I know they kept some share until late 90s, used in quite a few popular titles on consoles such as PlayStation or Nintendo64.

Why have they gone? I think the reason is compound of many factors, and I've only seen the transition from just one corner of the industry; other people have different opinion. One thing I suspect is that Lisp camp didn't have enough resource to catch up the steep increase of demanded quality and quantity as graphics hardware quickly evolved.

Back in mid-90s I used 2k to 5k-poly model, made in the modeler written in Lisp, to make some demo game that run on big SGI machines; such poly count became norm in late stage of PlayStation, and when PlayStation 2 appeared the poly count increased order of magnitude, the trend which still keeps going. The architecture of the Lisp modeling tool back then wasn't suitable for the "next generation" graphics; it needed to be rewritten, but they had hard time to do so. Meantime, bigger players entered into the industry, using legion of developers to pump out authoring tools and middleware.

I believe Lisp can boost productivity, but it tend to work better in a small team tackling one hard problem. When tons of features and optimizations done by lots of developers are required, I guess the power of language probably matters relatively less, and the amount of circulating money matters more. (Naughtydog was probably an exception. The founder was Lisp guy, incredibly good one.)

I suspect that it may be a general trend. When a problem is very hard and only small group of enthusiasts are working on it, they choose tools that are most effective for themselves. Like explorers who go into the wild where nobody ever traveled. Lisp may shine in such circumstances.

Once the wilderness is roughly mapped, small towns are built, and dirt roads are created, then much broader development is required. Lots of developers come to the front and start expanding the envelope. Once the field enters in that stage, the choice of language reflects the proportion of their share in general; many use C/C++, for example, and Lisp becomes minority. (I don't intend to despise the developers in that stage; there are still hard problems and they are still doing incredibly cool things. It's just that the earliest stage, where even what's hard is not really clear and only extremely ambitious people are active, may have different demographics in terms of the choice of the language. I guess Viaweb was also one of such cases.)

Re: Doug McIlroy: McCarthy Presents Lisp

#25
post #2

I always wondered why Lisp is dead in the water. I got replies from people that never professorially coded anything in Lisp or Scheme (yeah..) - argument was along the lines that in the past hardware was always dictating lower level languages and leagues of people were taught the ways of the everyday code that was only a few (if any) levels above the hardware. Thus, all of the primitives of the age (ASM, C, Pascal, w…

I'm not a pro Lisper, but I think reasons offered for this include:

* The AI winter (with Lisp, at the time, being seen as "the AI language")

* The heavy-cost and closed nature of the toolchain, and lack of standardization between toolchains, when industry was searching for a language to rally behind several decades ago

* The continued lack of standardization on all the "included batteries" when the open source movement was looking for languages to adopt for scripting a decade ago

* The deep semantic rabbit-hole a Lisp codebase can turn into when any macro-like functionality is used, meaning that a programmer has to basically learn every project as its own language (that is, DSL) before they can get to work—further meaning that projects grow a sense of individual stewardship/artistic direction, and become harder to work on by hiring committees and one-off contractors

* The continued outside impression of Lisps as slow, pure-functional and academic (even though most today are none of those)

* The unwillingness for most Lisps to embrace the Unix philosophy (meaning that it's easier to write a web browser in e-lisp than to loosely couple to one already written in some other language. Clojure is basically the only Lisp that escapes this, cleanly interoperating with the APIs of other languages... on the JVM, which itself throws Unix design principles out the window.)

I'm sure there are more well-founded answers, but all of those came to mind on my road to accepting Lisp.

Re: Doug McIlroy: McCarthy Presents Lisp

#27
post #23

Earlier quoted context omitted.

What you mean is that "dead" is a perception that exists only in your mind. If you look at concerns other than langauge, you could easily say that "writing quality software is dead", since most programmers write low-quality programs that barely work at all. That doesn't mean that you shouldn't try to do a good job, even though quality in the industry is "dead". Don't base what you do on the actions of an ignorant maj…

The difference is that the industry desires quality; it just doesn't know how to achieve it. The industry does not desire Lisps (or, for that matter any language that doesn't resemble either C or BASIC.)

Mantras like "YAGNI" and "worse is better" are not indicative of wanting quality.

But my point is; ignore the industry -- it's a failure. Do what you want to do instead -- you can't do worse than the industry as a whole.

Re: Doug McIlroy: McCarthy Presents Lisp

#28
post #24
post #2

I always wondered why Lisp is dead in the water. I got replies from people that never professorially coded anything in Lisp or Scheme (yeah..) - argument was along the lines that in the past hardware was always dictating lower level languages and leagues of people were taught the ways of the everyday code that was only a few (if any) levels above the hardware. Thus, all of the primitives of the age (ASM, C, Pascal, w…

> My primary focus in life has been computer graphics, and my first language was C. I was born in 1980 Ah, you've come a bit too late. Late 80s through early 90s Lisp machines were popular in the CG industry; modeling, animating and even rendering software were written in pure Lisp. After Lisp machines were taken over by unix workstations, those tools were ported on Common Lisp and as far as I know they kept some sha…

There was a time when most uses of a high-level language in domains like graphics were replaced with C++. C++ quickly became the dominant language in graphics and simulation. It still is. One also saw a lot of special hardware, for which it was difficult to come up with higher-level language implementations (Playstation 3 is such an example with its cell processors). One would have needed experts to port languages like Lisp to all kinds of new hardware - the expertise and the demand was just not there. So with every new exotic hardware, the trend to just use C/C++ with some simple scripting component was accelerating.

In some other areas there was the trend to standardize on Java. Though Java failed (mostly) over time in graphics and simulation.

Still some people use Lisp in graphics related domains. For example CoCreate uses Common Lisp for its CAD package. Recently Lisp has seen increasing use by hobbyists and enthusiasts to write games (using SDL etc.).

Re: Doug McIlroy: McCarthy Presents Lisp

#29
post #10

Earlier quoted context omitted.

"The phase that saw dynamic programming development tools be sold for significant sums of money altered the Lisp implementation landscape significantly, and today we have commercial implementations like Lispworks and Allegro, which while excellent, are expensive. This pulls enough talent away from open source implementations, of which there are several, that they all remain somewhat warty." This assumes lisp = Common…

Good point. Bad assumption on my part.

Clojure is not 'warty'? Can it even dump an image?

Re: Doug McIlroy: McCarthy Presents Lisp

#30
post #2

I always wondered why Lisp is dead in the water. I got replies from people that never professorially coded anything in Lisp or Scheme (yeah..) - argument was along the lines that in the past hardware was always dictating lower level languages and leagues of people were taught the ways of the everyday code that was only a few (if any) levels above the hardware. Thus, all of the primitives of the age (ASM, C, Pascal, w…

There is nothing really 'dead' about Lisp, whether you're speaking about Common Lisp or all Lisps. But it is true that most programmers would not turn to it when considering new projects.

I essentially see two problems with the state of Lisps. First off, the one with major library support, Common Lisp, is often times lacking in good library support. You'll find 10 libraries to do anything, but 5 of them will be undocumented, 3 of them will be dead projects, and 2 of them are incomplete.

The second problem is community. Again, I speak of Common Lisp, because it's the most fully-featured Lisp out there right now. Where is the community of Common Lisp? Who do I go to ask for feature requests in the 'next version'? Do I get some form of support? (I mean, c'mon, just compare it to Python!)

I think that Clojure has solved the second problem, more or less, with it's BDFL. However, I don't think it has the breadth of features that CL has, and being on the JVM brings some of its own problems.

Clojure is getting there, but I think that if a group of, say, 10 people decided to 'popularize' Common Lisp, they could. Just create a distribution of Lisp (say, using sbcl or anything else cross-platform) and ship it with a few helper libraries - since Lisp has macros and reader macros, it can essentially be transformed into the clean language it sometimes isn't.

Post reply on HN