Starting Forth: An Introduction to the Forth Programming Language
forth.com
forth.com
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.
More importantly, is it pleasant to use?
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.
It looks solid. I’d like to see how the GUI stuff works
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.