I think you've identified one of the essential parts of the design of Forth: it makes it very easy to implement simple systems, and very difficult to implement complex systems. In other words, polynomial O(n^a) complexity, where "a" is large, but the hidden constant k is small.
Making good use of Forth seems to be contingent on identifying situations where you want to implement a very small and simple system (embedded systems, firmware, OS bootloaders, tiny IoT devices?), and using Forth there - and avoiding it like the plague in all other cases.
I very much doubt that implementing a VLSI CAD program, where you want as many features to help your design as possible (features which necessarily incur a complexity cost), is a good use of Forth, for example.
Making good use of Forth seems to be contingent on identifying situations where you want to implement a very small and simple system (embedded systems, firmware, OS bootloaders, tiny IoT devices?), and using Forth there - and avoiding it like the plague in all other cases.
I very much doubt that implementing a VLSI CAD program, where you want as many features to help your design as possible (features which necessarily incur a complexity cost), is a good use of Forth, for example.