From: Liam Proven <lpro...@gmail.com> > To: "Discussion: On-Topic and Off-Topic Posts" <cctalk@classiccmp.org> > Subject: Re: Motor generator > > I think because for lesser minds, such as mine, [APL is] line noise. > > A friend of mine, a Perl guru, studied A-Plus for a while. (Morgan > Stanley's in-house APL dialect.) He said to me that "when I came back > to Perl, I found it irritatingly verbose..." and then was immediately > deeply shocked at the thought. > > I seriously think this is why Lisp didn't go mainstream. For a certain > type of human mind, it's wonderful and clear and expressive, but for > most of us, it's just a step too far. > > Ditto Forth, ditto Postscript, etc. > > Plain old algebraic infix notation has thrived for half a millennium > because it's easily assimilated and comprehended, and many arguably > better notations just are not. > > The importance of being easy, as opposed to being clear, or > unambiguous, or expressive, etc., is widely underestimated. > > Yes, that. C is a great assembly language preprocessor for a PDP-11. The PDP-11 is a beautiful, intelligible architecture, where things happen one at a time in sequence. This is easy to think about. Unfortunately it's got very little to do with the way that modern high-performance silicon gets stuff done.
(Aside: it's also weird that the one-thing-at-a-time sequencing is the thing that feels logical and intuitive to us since it is absolutely not how our brains work.) I would argue that Forth and Postscript are hard to understand for a different reason than APL: APL is inherently vectorized, and requires, more or less, that you treat matrices as single entities. Not many people's brains work that way. It's hard enough to learn to treat complex numbers as single entities. Forth and Postscript require you to keep a really deep stack in your brain to understand the code, and people aren't really very good at doing that for more than three or four items (much fewer than 7 +/- 2). Both of these are much more difficult for most people to work with and reason about than something imperative and infix-based. The fundamental problem is the impedance mismatch between the way most people think (which would at the very least take a radical reframing of curricula to change, and might not work anyway: look at the failure of the New Math, which was indeed very elegant, taught mathematics from first principles as set theory, and was not at all geared to the way young children _actually learn things_) and where we can continue to squeeze performance out of silicon. This is really not tractable. I think our best hope is to make the silicon really good at generating and figuring out graphs so it can dispatch lots of pieces of what feels like a sequential problem in parallel and come out with the same answer as you would have gotten doing it the naive one-step-at-a-time way. But we've already done that, and, yeah, it mostly works, but the abstraction is leaky and then you get Meltdown and Spectre. I don't have any answers other than "move to Montana, drop off the grid, and raise dental floss." Adam