Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
MiniForth
A tiny Forth I built in a week. Blog post: https://www.thanassis.space/miniforth.html (by ttsiodras)
-
muforth
A simple, indirect-threaded Forth, written in C; for target compiling; runs on Linux, BSD, OSX, and Cygwin
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
I have implemented yet another forth by myself. It works a little bit different and it is not intended to be a true copy of the original idea.
Since the post says you can discover Forth, here's my part:
https://github.com/loscoala/goforth
The main difference is that in this Forth variant, the source text is completely translated into bytecode and there is no runtime in the sense of classic Forth. This makes it easy to translate the bytecode to C.
I use my own Forth to generate C code with it, which I then embed in other software.
That can be very productive and clever, but be - and stay - aware that such polyglot solutions tend to be maintenance headaches in the longer run.
There is a really nice open source project out there that allows you to train your hearing and your sightreading, but it's written in the authors own language which in turn compiles to JavaScript and the headache to set up their toolchain is such that I haven't bothered fixing any of the bugs that I'm aware of (and there are plenty).
https://sightreading.training/
https://github.com/leafo/sightreading.training
It's written in a language called 'Moonscript':
https://github.com/leafo/moonscript
Which compiles to Lua. Which compiles to JS.
Madness. Nice madness, but still, it stopped me from being a contributor.
That can be very productive and clever, but be - and stay - aware that such polyglot solutions tend to be maintenance headaches in the longer run.
There is a really nice open source project out there that allows you to train your hearing and your sightreading, but it's written in the authors own language which in turn compiles to JavaScript and the headache to set up their toolchain is such that I haven't bothered fixing any of the bugs that I'm aware of (and there are plenty).
https://sightreading.training/
https://github.com/leafo/sightreading.training
It's written in a language called 'Moonscript':
https://github.com/leafo/moonscript
Which compiles to Lua. Which compiles to JS.
Madness. Nice madness, but still, it stopped me from being a contributor.
As soon as I met Forth, I felt I had to hack my own [miniforth](https://github.com/ttsiodras/MiniForth/) - and did so over a single week, two years ago. I targeted the Blue Pill and the original Arduino, but developed via cross-compilers so that I could test my code in the host.
I became so obsessed with the project that I was looking forward to tinkering with it after coming back from work every day; so it was hacked in 5 evenings and a weekend.
It was that fun, to build a Forth. I highly recommend the process - I think the only other time I felt so enlightened was [when I first met Lisp macros](https://www.thanassis.space/score4.html#lisp).
My first programming languages were x86 assembly and Forth. My Dad was into Forth, and I learned programming from him. I wrote several x86 Forth systems for DOS as a teenager, culminating in a somewhat-polished ANS compatible one I called "Third": https://github.com/benhoyt/third -- it's kind of amazing being able to have a fully bootstrapped Forth compiler (including an assembler) in a couple thousand lines of code.
Just the other day I transcribed an old article I had co-written for the Forth Dimensions magazine. I still like the ideas in Forth, but the stack manipulation quickly gets tedious and is very hard to read. Just look at the code examples in https://benhoyt.com/writings/forth-lookup-tables/ -- especially Search-Table. Yikes! Yes, naming things is hard, but apparently not naming them is even harder.
Is Google down again? Bummer.
FORTH is still used to bring up new silicon because of its tiny core, you only need a couple of working assembly instructions to bootstrap yourself into a working system, you could do this entirely in cache or a small static RAM if you don't have a working memory controller yet.
It is also used all over the place in embedded controllers, https://arduino-forth.com/ , http://www.piclist.com/techref/microchip/language/forths.htm , https://github.com/nimblemachines/muforth , from PICs to ARMs and everything in between.
You won't see a lot of hype around it and repos tend to be old because they 'just work', typically a user of such a system would download it and customize it to the point that sharing it would be pointless, the whole idea is to extend the language to become the application.