Well, the utterly exposed stack of FORTH makes it nearly impossible to write clear and maintainable code.
I've been going through some old papers and ran across the version of FORTH that I wrote in 1979. I had thought it was pretty whizzy; it compiled to inline machine code, had a screen editor a little like Emacs and some other neat stuff. And the FORTH code was utterly unreadable compared to the kernel of Z-80 assembly that provided all the primitives.
I've had other experiences with FORTH and other exposed stack languages (usually little domain-specialized engines used as extension systems), and the result has been uniformly horrible. As in, "I wish I had done something else." Or worse, "I wish my cow-orker had chosen some other language, because I want to kill him now." Argh.
There are concatenative languages that have real expressions and real memory management, but I've never tried them; I imagine they're a real improvement.
I've been going through some old papers and ran across the version of FORTH that I wrote in 1979. I had thought it was pretty whizzy; it compiled to inline machine code, had a screen editor a little like Emacs and some other neat stuff. And the FORTH code was utterly unreadable compared to the kernel of Z-80 assembly that provided all the primitives.
I've had other experiences with FORTH and other exposed stack languages (usually little domain-specialized engines used as extension systems), and the result has been uniformly horrible. As in, "I wish I had done something else." Or worse, "I wish my cow-orker had chosen some other language, because I want to kill him now." Argh.
There are concatenative languages that have real expressions and real memory management, but I've never tried them; I imagine they're a real improvement.