Historical recreation/restoration of original Forth on the IBM 1130
rescue1130.blogspot.com
rescue1130.blogspot.com
I really like FORTH, but I think it promotes some subversive/extreme views which can sow seeds of discontent (or at least it did for me).
Much of my dissolution with the business of programming can be traced back to learning FORTH. It showed me just how much is possible if you optimize for simplicity, and it encouraged me to ask the question: maybe the trade-offs in programming aren't necessary i.e. we don't need to trade complexity for functionality? Now that I have some distance, I was/am probably wrong, and they are necessary, but this question still bugs me.
After learning FORTH I enjoyed my job less. I no longer had the patience I once had for the build tool breaking the umpteenth time, or dealing with yet another poorly documented and barely working REST API.
To be fair, this probably wasn't FORTH's fault. Waning enthusiasm may happen naturally as you gain experience in the industry, but it certainly seemed to accelerate the process.
Anyway, FORTH is awesome, but maybe you shouldn't learn it.
https://1scyem2bunjw1ghzsf1cjwwn-wpengine.netdna-ssl.com/wp-...
and its followup Thinking Forth
http://prdownloads.sourceforge.net/thinking-forth/thinking-f...
If you really want to get serious, writing your own FORTH, which is a kind of right of passage in the FORTH community, is a good way to learn. While somewhat controversial among FORTH purists (for reasons I don't entirely understand), I would recommend Richard Jones' jonesforth as reference for this: https://github.com/nornagon/jonesforth/blob/master/jonesfort...
Alas, I don't think that Forth is very relevant today in the professional SW development. But it's still a great teaching tool. I would like to see, for example, a PL design course where first pages would be about META II and Forth implementations.
Modern programmers need more examples of beautiful, miniature software architectures. Tools like Forth are especially interesting, because they show us that even a single developer may do great handcrafted things and he doesn't need to depend on third-party tools, IDEs, frameworks for it. Charles Moore haven't invented Forth from scratch, he "synthesized" it from some really great ideas of 50-60s, like Lisp, B5000, APL etc. Moore took only those parts, which were good components (simple to implement, understand, combine) to build his own independent tool. N. Wirth uses the similiar approach, by the way.
Maybe today we could repeat the same synthesis/minimisation process with some modern ideas/technologies to create a beautiful tool for a modern programmer - lone craftsman. Or maybe the whole "tool-making" (see Whole Earth Catalog etc) movement is just a thing from the past?
For me, Forth is a language in which you can easily shoot yourself in the foot. One element more or less on the stack and you run into strange problems ten functions later in your code. But what I especially like is the enhanced naming of "words". You can choose "variable" or "function" names such as "a->b" instead of "a2b()" or "a_to_b()". Or "@X" for "GetX()" and "!X" for "PutX()".
Apparently one of the "features" motivating the decision to use Lua is "it's interpreter is very small (~240 KB)," which sounds like a dumb joke when you consider Forth's footprint.
Nice.
[1] https://en.wikipedia.org/wiki/Philae_(spacecraft)
[2] https://www.intersil.com/content/dam/Intersil/documents/hs-r...
Sorry, if I reveal this link too early, but this is very impressive work of you and StarFlight game/engine really deserves more popularity!
When I started I had not even a clue what Forth is about. I read the first articles about Forth long after I started the decompilation project.
I still have to write a long text in the README, why the code of Starflight is almost as awesome as the game itself. Then it is ready for publish :-)
Everyone else should start with Python.