FORTH is famous for reverse polish notation is all.
Uh, no. Hardly.
Well, it's fair to say that Forth is famous for RPN as much as Lisp is famous for it parentheses. Both are the most casual of observations of the languages. Nobody who knows Lisp think it's about parentheses, CAR, and CDR. Just like nobody who knows Forth think it's about RPN.
The language is close to older ASM programming, so some programmers hopped on it at the time.
Yea, that's not accurate either. Coding in Forth is nothing like coding in assembler. The mind set it utterly different. However it can be quite low level.
So.
An early claim to fame for Forth was it's very small footprint. As portrayed early on, you could easily get the Forth runtime, compiler, interpreter, a source code editor, assembler and mass storage to disk in under 8K of RAM. The requirements for the system were routines to read the keyboard, write the terminal, and read/write a sector from the disk.
What you got was one of the most expressive and powerful languages available. It was fast, much faster than BASIC, and offered very quick turnaround for development since it was incrementally compiled and interactive, much like BASIC.
What you didn't get, however, was a large runtime of utility software. A glaring example of what was missing was basic string processing. BASIC offered great string processing, which is part and parcel to its broader success, especially in data processing. Forth, did not. Not out of the box. It also didn't support floating point math out of the box.
However, unlike BASIC, Forth was completely extensible. You could add string processing and it would look, well, however you wanted it to look. But it would look just like everything else in Forth. BASIC can't be changed, not readily, and especially not in BASIC.
If you wanted to add a REPEAT-UNTIL loop in BASIC, you couldn't. If you wanted to add support for 32 bit integer math to BASIC, you couldn't. In Forth, you could.
You could readily add new control structures. New data structures. New fundamental data types. You could do this with high level Forth code. In fact, most of Forth is written in Forth. Many Forth systems are "self-hosting". Written in themselves. You can tweak and change them, and rebuild them in to a new core. (The term of art is "meta compiler".)
Because that's essentially how you created applications.
In BASIC, you take your logic and semantics, and project them on to the limited tool set that's offered by BASIC and go from there.
In Forth, you come up with a vocabulary that best represents your application, and then build that vocabulary up. So that in the end, you're writing your application in the language of the application rather than ints and pointers and words of memory. In BASIC if you want anything more than a string array, you're kind of stuck (and yes I know BASICs are much better featured today than they were).
Now, that's the Forth potential. That's where it can go. I've seen Pascal compilers written in Forth. I've seen high level Database systems written in Forth.
But, in the end, much of Forth is mostly relegated to the controller market. It's there because of it's small footprint, it's ease of porting from one architecture to another, the interactivity it offers. Forth has, roughly, 30 primitives that must be coded in assembly language. it's very nice to port a Forth to a new CPU, connect to it, and then use it to explore things like the on board peripherals, interfacing new hardware, etc.
There's a great little article about the "3 instruction Forth" where a guy installs the most simplest of routines on a new piece of hardware (about 70 bytes of machine language): read a byte, write a byte, jump to address all via the onboard serial port. Then you can drive that board, via the Forth runtime on your host system, pretty much identically as you could your own system. It's hard to convey the simplicity and power of this here but just let it be said that you can't easily do this in anything else.
Forth has a large potential but the base system has much of it unrealized. Which is why it's not so good for things like writing a Character Generators or subsector viewers. Not quickly. Not the first time.