From my perspective, we've lost sight of other options for programming due to an over-emphasis on the concept of “functions".
To properly support the concept of “functions” and “pure functions”, we have had to add baubles to CPUs over the decades, like MMUs, caches, preemption, etc.
CPUs don’t actually support “functions”. CPUs just implement “subroutines” (aka “procedures”). Subroutines aren’t as “pure” as mathematical functions, but are useful for things that fall outside of the sweet spot for notations inspired by mathematical functions, like sequencers, DAWS, video editing, internet-ing, robotics, daemons, servers, etc. Thinking that programs must be functional ends up blindering us to other possible options.
I was greatly inspired by Harel's Statechart paper - the diagrams he draws show useful expressions of control flow - something that FP is kinda kludgy at doing.
From my perspective, CPUs are just bits of hardware. I used to program hardware using soldering irons, then I switched to using QWERTY (and was rewarded by getting fewer blisters caused by hot solder and copper).
To me, Lisp is assembler with recursive syntax instead of line-oriented syntax. Prolog is a mind-bender because its syntax only looks like functions but isn't.
To me programming is the idea of bending CPU-thingies to fit paradigms of thought. Most early programming languages used little hand-written engines to supplement their chosen paradigm (Forth engine, Prolog engine, Lisp eval/apply, etc., etc.).
Today, we focus on only one engine - the FP-machine engine, which drives us towards having scads of bloat, memory, caches, preemption, etc.
Other Inspirations
Things that tickle my fancy or have interested me: lisp, Sector Lisp, Forth (post$cript (a great idea - put a CPU into a peripheral)) ; boot monitor for Sun machines ; formalized as concatenative programming), Prolog (relational programming), Rebol (PEG before PEG, mind-meld with Sassenrath's brain), Smalltalk, Statecharts, Dr. Dobb’s Journal, <ugh, lots of other stuff>.
A BIG difference in today's hardware is that it can support overlapping figures (e.g. "windows") whereas ASCII-based 1960s stuff was forced to use non-overlapping grids of small bitmaps (called "characters").
We still build programming languages based on the non-overlapping grid limitations of the 1960s using the 1960s ASCII character set, even though it's not 1960 anymore.
References
Sun Microsystems https://en.wikipedia.org/wiki/Sun_Microsystems
Sector Lisp https://justine.lol/sectorlisp2/
Prolog
Combining Prolog and Javascript into a Programming Language
Below, is a snippet of working code from a project (several years ago), that combines Prolog exhaustive search (unification) abilities with Javascript string-interpolation abilities:
(Substack butchers the code formatting. To look at the code, look at the repository).
http://www.t3x.org/bits/prolog6.html
https://github.com/guitarvydas/cl-holm-prolog
https://en.wikipedia.org/wiki/GNU_Prolog
https://en.wikipedia.org/wiki/Warren_Abstract_Machine
Rebol https://www.rebol.com/
Smalltalk http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf (see esp. Part Four, which was stricken from later editions like the more widely-available purple book)
Statecharts https://guitarvydas.github.io/2023/11/27/Statecharts-Papers-We-Love-Video.html
PUSM (FP machines) https://programmingsimplicity.substack.com/p/pusm-programming-using-the-sicp-method?r=1egdky
Dr. Dobb’s Journal https://www.google.com/search?client=safari&rls=en&q=dr.+dobbs+volume+5&ie=UTF-8&oe=UTF-8 (This reference is to the volume that contains the Small C compiler - the first, simple open source C compiler that inspired me ; other issues of DDJ contain many other kinds of inspiration, like the first VM (Tiny Basic) and bits of inspiration for people like Bill Gates, et al).
To Write Code https://ianarawjo.therottingcartridge.com/docs/To_Write_Code_Arawjo_CHI2020.pdf
See Also
Email: ptcomputingsimplicity@gmail.com
References: https://guitarvydas.github.io/2024/01/06/References.html
Blog: guitarvydas.github.io
Videos: https://www.youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/65YZUh6Jpq
Leanpub: [WIP] https://leanpub.com/u/paul-tarvydas
Twitter: @paul_tarvydas
Substack: paultarvydas.substack.com