When I was first learning about programming languages through the ages, Forth was always the stuff of legend. The flexibility to, say, redefine an integer to return a different value:
: 4 12 ; ." The value of 4 is " 4 . CR The value of 4 is 12
Update: I’ve expanded upon this in my talk-turned-web-page: Forth: The programming language that writes itself
I was really curious what it was like to program in a stack-based (or concatenative) language - and equally curious how one was built.
Now that I’ve learned how Forth is implemented, I’ve discovered that the strength of Forth has little to do with being stack-based. That’s just incidental. It’s strength comes from the ability bootstrap an incrementally higher level language from a very low-level one.
A handful of Forth instructions implemented in assembly lets you implement the rest of Forth…in Forth! That’s just cool.
And the reason you can do that is because of the legendary flexibility that allows you to redefine 4 to return 12.
nasmjf Done! My NASM port of JONESFORTH
forth-concatenative (doing this right now!)
Register Forth (idea)
forth-ide and forth-wasm
Token Separator (specifically Forth, but also generally)
fstrings.txt (umich.edu) All about Forth strings!
Oh, and I just remembered another major source of "Forth lust" that probably provided the final push to make me try it out for myself: the "programming in the twenty-first century" blog, with posts like this:
Understanding What It’s Like to Program in Forth (prog21.dadgum.com)
Oh, and definitely also this:
My history with Forth & stack machines (yosefk.com)