[Another repurposed comment from the same Lobsters thread I mentioned in my previous post.]
A serious answer deserved a serious response, so I slept on it, and, well, as you can see, it took some time. I don't even the excuse that "Je n’ai fait celle-ci plus longue que parce que je n’ai pas eu le loisir de la faire plus courte."
If you are curious to do so, you might be amused to look through my older tech-blog posts – for example this or this.
The research project that led to these 3 FOSDEM talks started over a decade ago when I persuaded my editor that retrocomputing articles were popular & I went looking for something obscure that nobody else was writing about.
I looked at various interesting long-gone platforms or technologies – some of the fun ones were Apollo Aegis & DomainOS, SunDew/NeWS, the Three Rivers PERQ etc. – that had or did stuff nothing else did. All were either too obscure, or had little to no lasting impact or influence.
What I found, in time, were Lisp Machines. A little pointy lump in the soil, which as I kept digging turned into the entire Temple of Damanhur. (Anyone who's never heard of that should definitely look it up.) And then as I kept digging, the entire war for the workstation, between whole-dynamic-environment languages (Lisp & Smalltalk, but there are others) and the reverse, the Unix way, the easy-but-somehow-sad environment of code written in a unsafe, hacky language, compiled to binaries, and run on an OS whose raison d'être is to "keep 'em separated": to turn a computer into a pile of little isolate execution contexts, which can only pass info to one another via plain text files. An ugly, lowest-common-denominator sort of OS but which succeeded and thrived because it was small, simple, easy to implement and to port, relatively versatile, and didn't require fancy hardware.
That at one time, there were these two schools – that of the maximally capable, powerful language, running on expensive bespoke hardware but delivering astonishing abilities... versus a cheap, simple, hack of a system that everyone could clone, which ran on cheap old minicomputers, then workstations with COTS 68K chips, then on RISC chips.
(The Unix Haters Handbook was particularly instructive. Also recommended to everyone; it's informative, it's free and it's funny.)
For a while, I was a sort of Lisp zealot or evangelist – without ever having mastered it myself, mind. It breaks my brain. "The Little Lisper" is the most impenetrable computer publication I've ever tried, and failed, to read.
A lot of my friends are jaded old Unix pros, like me having gone through multiple proprietary flavours before coming to Linux. Or possibly a BSD. I won serious kudos from my first editor when I knew how to properly shutdown a Tadpole SPARCbook with:
sync
sync
sync
halt
"What I tell you three times is true!" he crowed.
Very old Unix hands remember LispMs. They've certainly met lots of Lisp evangelists. They got very tired of me banging on about it. Example – a mate of mine said on Twitter:
«
A few years ago it was lisp is the true path. Before that is was touchscreens will kill the keyboard.
»
The thing is, while going on about it, I kept digging, kept researching. There's more to life than Paul Graham essays. Yes, the old LispM fans were onto something; yes, the world lost something important when they were out-competed into extinction by Unix boxes; yes, in the right hands, it achieves undreamed-of levels of productivity and capability; yes, the famous bipolar Lisp programmer essay.
But there are other systems which people say the same sorts of things about. Not many. APL, but even APL fans recognise it has a niche. Forth, mainly for people who disdain OSes as unnecessary bloat and roll their own. Smalltalk. A handful of others. The "Languages of the Gods".
Another thing I found is people who'd bounced off Lisp. Some tried hard but didn't get it. Some learned it, maybe even implemented their own, but were unmoved by it and drifted off. A lot of people deride it – L.I.S.P. = Lotsa Insignificant Stupid Parentheses, etc. – but some of them do so with reason.
I do not know why this. It may be a cultural thing, it may be one of what forms of logic and of reasoning feel natural to different people. I had a hard time grasping algebra as a schoolchild. (Your comment about "grade school" stuff is impenetrable to me. I'm not American so I don't know what "grade school" is, I cannot parse your example, and I don't know what level it is aimed at – but I suspect it's above mine. I failed 'O' level maths and had to resit it. The single most depressing moment of my biology degree was when the lecturer for "Intro to Statistics" said he knew we were all scared, but it was fine; for science undergraduates like us, it would just be revision of our maths 'A' level. If I tried, I'd never even have got good enough exam scores to be rejected for a maths 'A' level.)
When I finally understood algebra, I "got" it and it made sense and became a useful tool, but I have only a weak handle on it. I used to know how to solve a quadratic equation but I couldn't do it now.
I never got as far as integration or differentiation. I only grasped them at all when trying to help a member of staff with her comp-studies homework. It's true: the best way to learn something is to teach it.
Edsger Dijkstra was a grumpy git, but when he said:
“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration”
... and...
“The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.”
... I kind of know what he meant. I disagree, obviously, and I am not alone, but he did have a core point.
I think possibly that if someone learned Algol-style infix notation when they were young, and it's all they've ever known, if someone comes along and tells them that it's all wrong, to throw it away, and do it like this – or possibly (this(like(do(it))))
– instead, it is perfectly reasonable to reject it.
Recently I used the expression A <> B
to someone online and they didn't understand. I was taken aback. This is BASIC syntax and was universal when I was under 35. No longer. I rephrased it as A != B
and they understood immediately.
Today, C syntax is just obvious and intuitive. As Stephen Diehl said:
«
C syntax is magical programmer catnip. You sprinkle it on anything and it suddenly becomes "practical" and "readable".
»
I submit that there are some people who cannot intuitively grasp the syntaxless list syntax of Lisp. And others who can handle it fine but dislike it, just as many love Python indentation and others despise it. And others who maybe could but with vast effort and it will forever hinder them.
Comparison: I am 53 years old, I emigrated to the Czech Republic 7 years ago and I now have a family here and will probably stay. I like it here. There are good reasons people still talk about the Bohemian lifestyle.
But the language is terrifying: 4 genders, 7 cases, all nouns have 2 plurals (2-4 & >=5), a special set of future tenses for verbs of motion, & two entire sets of tenses – verb "aspects", very broadly one for things that are happening in the past/present/future but are incomplete, and one for things in the past or present that are complete.
After 6 years of study, I am an advanced beginner. I cannot read a headline.
Now, context: I speak German, poorly. I learned it in 3 days of hard work travelling thence on a bus. I speak passable French after a few years of it at school. I can get by in Spanish, Norwegian and Swedish from a few weeks each.
I am not bad at languages, and I'm definitely not intimidated by them. But learning your first Slavic language in your 40s is like climbing Everest with 2 broken legs.
No matter how hard I try, I will never be fluent. I won't live long enough.
Maybe if I started Russian at 7 instead of French, I'd be fine, but I didn't. But 400 million people speak Slavic languages and have no problems with this stuff.
I am determined. I will get to some useful level if it kills me. But I'll never be any good and I doubt I'll ever read a novel in it.
I put it to you that Lisp is the same thing. That depending on aptitude or personality or mindset or background, for some people it will be easy, for some hard, and for some either impossible or simply not worth the bother. I know many Anglophones (and other first-language speakers) who live in Czechia who just gave up on Czech. For a lot of people, it's just too hard as an adult. My first course started with 15 students and ended with 3. This is on the low side of normal; 60% of students quit in the first 3 months, after paying in full.
And when people say that "look, really, f(a,b)
is the same thing as (f a,b)
" or tell us that we'll just stop seeing the parentheses after a while (see slides 6 & 7 ) IT DOES NOT HELP. In fact, it's profoundly offputting.
I am regarded as a Lisp evangelist among some groups of friends. I completely buy and believe, from my research, that it probably is the most powerful programming language there's ever been.
But the barrier to entry is very, very high, and it would better serve the Lisp world to recognise and acknowledge this than to continue 6 decades of denialism.
Before this talk, I conferred with 2 very smart programmer friends of mine about the infix/prefix notation issue. ISTM that it should be possible to have a smart editor that could convert between the two, or even round-trip convert a subset of them.
This is why I proposed Dylan on top of Lisp, not just Lisp. Because Lisp frightens people and puts them off, and that is not their fault or failing. There was always meant to be an easier, more accessible form for the non-specialists. Some of my favourite attempts were CGOL and Lisp wizard David A. Moon's PLOT. If Moon thinks it's worth doing, we should listen. You might have heard of this editor he wrote? It's called "Emacs". I hear it's quite something.