
In this regard, I would add "The AWK Programming Language" by Aho, Kernighan and Weinberger. Published in 1988, but it was an excellent introduction to computing for a layman like me around a decade ago. Clear, concise writing; really teaches you to think. Still relevant in 2022, especially considering that awk has gained some attention in recent years. Great warm-up to approaching C via K&R. Can't go wrong with Brian Kernighan as a teacher, I guess.
Another worthwhile book is "Modern Perl, Fourth Edition" by chromatic (2015): https://pragprog.com/titles/swperl/modern-perl-fourth-editio...
Also, "Higher Order Perl" by Mark Jason Dominus (2005). Functional programming techniques with Perl; also ticks the "general thinking book" box. Lots of praise on Amazon: https://www.amazon.com/Higher-Order-Perl-Transforming-Progra...
Leo Brodie's "Starting Forth" and "Thinking Forth" probably also count as timeless classics in the "thinking book" section.
Lastly, see also Seymour Papert's books "Mindstorms: Children, Computers, and Powerful Ideas" (1980) and "The Children's Machine: Rethinking School in the Age of the Computer" (1993). These are brilliant for anybody who's interested in thinking and learning, or the Logo programming language that Papert developed.
https://www.amazon.com/Mindstorms-Children-Computers-Powerfu...
https://www.amazon.com/Childrens-Machine-Rethinking-School-C...
Mindstorms and The Children's Machine by Seymour Papert
Privacy on the Line by Whitfield Diffie and Susan Landau
Nothing to Envy: Ordinary Lives in North Korea by Barbara Demick
Eminent Dogs, Dangerous Men by Donald McCaig
How Children Learn the Meanings of Words by Paul Bloom
“I think a way to get non-programmers into language would be to adopt an existing language like Swift or Kotlin, and add support for block-based syntax”
LOL. So like learning and using MIT Scratch or Siri Shortcuts; only instead of stepping on a Duplo brick in the pitch black of night you’re walking across a solid carpet of Lego Technic, infinitely vast.
No mate, you cannot make a programming language simple, accessible, and massively appealing to non-programmers by hiding all its complexity behind brightly-colored bullshit. You do it by eliminating all that bullshit outright. And once you have, explain to your users how to operate what’s left, simply and concisely, using practical, purpose-driven, lay language that doesn’t require a CS degree to interpret it.
Extending around that core—using the best modern text, graphical, and verbal tools, from autosuggest and autocomplete, through to the latest AI- and human-backed “would you like some help with that?”—can improve its usability ten-fold. But if the core isn’t profoundly usable to begin with, then all you’ve done is take a lump of crap and hide its awfulness under ineffective bandaids on top.
Take the lesson from AppleScript’s history: Clever faking does NOT work. It just bites everyone’s ass.
…
So what will work? More history! Go read Seymour Papert’s Mindstorms, and form your end-user language with all the parsimony, clarity, and accessibility that Logo already realized over 50 years ago.
(Tip: Think “toy Lisp”, minus bloody parenthesis. And if it takes you more than a week to build this new end-user language, you’ve done it wrong.)
Learn a brief history of written language and see how much humanity has already successfully built with simple written words. And then, go take a business class, and learn some marketing and sales, so you can translate that vision to mass-market successful and not repeat Papert’s fatal error.
Seymour built his products for kids; and the kids who “got it”, loved it. Because Logo took all power and promise which technology held, and placed it in their young hands to do with as they will. He nailed that part of the problem; better than anyone before and since.
Seymour’s tragic mistake was in not realizing how to sell his product to The People in Power. i.e. Those who hold all the purse strings and solemnly decret what Shall be Learned by Children—and How. Smart guy; true visionary. Bit naive. And so he lived the rest of his life shaking his fist angrily at clouds, never realizing why he had failed so utterly in Changing the World. (So don’t bother reading The Children’s Machine, it’s bollocks.)
If only Bill Atkinson, or Cook and Harris, had done Logo 2.0 instead of warmed-over Algols. That was a mistake. Though as Keith Braithwaite painfully observes:
“It's a curious thing about our industry: not only do we not learn from our mistakes, we also don't learn from our successes.”
So it goes.
In The Children's Machine, Seymour Paper wrote:
[O]n my reckoning, the fraction of human knowledge that is in the [school] curriculum is well under a millionth and diminishing fast. I simply cannot escape from the question: Why that millionth in particular?
