Earlier quoted context omitted.
>I think it maybe undersells the importance of the REPL a bit. Howo? Or would you agree that value is perhaps a more suitable word than importance ? For me I think these articles have such a tendency to fixate on the strengths of Forth to the extent that they have reduced Forth to those strengths in the eyes of many. TFA does a fair job of avoiding this and shows Forth more as a powerful and flexible general purpose…
You can see my workflow with Forth in https://asciinema.org/a/621404 , which should help reinforce my point that I'm not an expert. What I mean is that Forth as a programming language is kind of... not great? Like, it's kind of hard to read and hard to write. For years I thought this might be just a question of familiarity, but not I'm resigned to the fact that I will probably not learn to read Forth as easily as I c…
e(d(), c(b, a()))
has fairly clear dataflow: data flows from a and b to c, and from c and d to e. This is knowable even without any previous knowledge of those five identifiers. The RPN version, in languages like Forth, PostScript, and Factor a b c d e
can just as well correspond to any of these dataflow patterns: a(); b(); c(); d(); e(); //none
b(a); d(c); e();
e(d(c, b()), a);
{a, b, c, d, e} // all going somewhere else together
And many others. You don't know if a or b is consuming something left on the stack from before, either.On this basis I think it's at least somewhat defensible to claim that stack languages are "less readable": information about the dataflow graph which is easily available in the infix syntax is not present, at least locally. You can reconstruct it by knowing, or guessing, the stack effect of each word. But that's different from just having it plainly written down.
As a result, in Forth and PostScript, I regularly have bugs where I pass a parameter to, or receive a result from, the wrong place. This is not a major practical problem (it's usually pretty easy to figure out in the REPL) but it serves as evidence that stack languages really do require more effort to read and understand than pop infix languages.
Of course, you can make almost exactly the same argument that explicit typing helps readability, and implicit variable capture by closures hurts it. I think there's some merit in that, actually.