One of my very favourite programming books. Using it, together with "Threaded Interpretive Languages" https://www.amazon.co.uk/Threaded-Interpretive-Languages-R-G... I wrote a couple of Forth implementations in Z80 assembler back in the 1980s, and a Forth-like language for an Adventure writing system I created when I was first learning C++.
There is no reason to pay that crazy money for that book, it is available on libgen. There are so many books in the BYTE magazine back catalog, and who knows who the rights holders are as the UBM is defunct [1]. I talked to some people at CMP a couple years ago, it sounded like, at least from them, that they had almost no archives of BYTE material. What you can get on Ebay and the IA are it fwiw.
I have three copies, mostly so when I loan them out and if it doesn't come back I won't be bummed. But they cost only 5-9$ at the time.
Factor (https://factorcode.org/) is the closest to a modern pleasant to use forth-like language. Not sure if it ticks the other requirements you mentioned though
Yes. There is a commercial language called 8th that is pretty cheap and you can get the source with an NDA and the enterprise license. The enterprise license is cheaper than a desktop license for most software, so pretty reasonable IMO.
I've played with it and it is pretty nice and similar to using Python in a way. It has a full REPL, but can compile to single file executables that run on Mac, Windows, Linux, Android, or iOS which is really nice. You can also cross compile to any of those platforms. It has functions for bluetooth, database, GUI, web stuff...etc which isn't common in a lot of Forths. It is probably the most modern of the Forths I've played with and is pleasant to use. It has a small community, but the apps I've seen have been impressive. The creator releases bug fixes and new versions all the time and will sometimes get a fix to a user in just a day or so.
It has all of the functionality one would expect in a modern language like a ton of string functions and I/O. I'm not an expert, but didn't think anything was missing when I was playing with it. I would definitely consider it for hobby projects and maybe for some desktop apps if I was a solo contractor. Unusual software like it might be difficult to get in enterprise IT though where someone would have to support your super niche language that is mostly dependent on one individual.
There are some other Forths to consider that are meant for desktop/server use like 8th. In particular, RetroForth seems nice and there is Factor, but I found using Factor to be very confusing and not straightforward. I'm not sure how much attention Factor gets either these days since the creator left to work on Swift at Apple a few years ago. I think there are some maintainers.
Yeah that's the one I recommend if someone wants to try Forth for something besides microcontrollers.
It is traditional to create your own Forth at some point (Ex: look for JonesForth or PunyForth) just for fun and to get a solid understanding for what a potential Forth could look like. You can make an entire Forth VM with lots of the main needed functions in a few pages of Python. Of course, performant varieties are traditionally done in either Assembly or C. Before you write a Forth though, it helps to play around with a decent Forth system to start thinking in concatenative programming terms. All you have is a stack and functions (i.e. words) to operate off of the stack. It makes it really easy to make DSLs. 8th itself is written in C++.
The GUI stuff works. The download (trial is free and simple) comes bundled with the full toolchain, lots of examples, and some GUI tools for doing builds for those that don't like the command line. It used to use the JUCE C++ library for GUI, but Ron switched to Nuklear a few versions ago. I built a few simple GUIs, but nothing fancy. I'm sure there is a little bit of a learning curve.
Starting Forth is a great programming book. One of the best I have read. I picked it up last year when I wanted to learn Forth for the purpose of programming ATMega with FlashForth as an alternative to using Arduino IDE or C. Forth really shines when it comes to probing hardware thanks to its interactive nature. However, you are pretty much on your own if you want to do anything beyond basic stuff like making an LED blink. There are some great resources like https://arduino-forth.com/ to help you get started. Just don't expect everything to be magically abstracted away similar to using the Arduino IDE.
I do love Forth for the building a dictionary by solving the small problems building a vocabulary to solve the whole problem. The bottom up building of capability is amazing to get over the feeling of being overwhelmed by the problem.
Quite. One of my mantras when teaching people programming is "Programming is all about writing functions, and you can't write too many of them!" and it's really impossible to program in Forth without doing this.
I recently reread Starting Forth simply with the hope of picking up some of the methods used. There is magic in the idea that you can teach someone concepts without hardly any time spent on the details.