The elegant minimalism of Forth is inspiring-- how many other languages can fit their REPL and development environment into a few kilobytes?<p>However, I find implicit arity to be the largest barrier in reading concatenative programs.<p>To understand what a line of Forth code does, you need to understand both what each function does, and how it manipulates the stack to accomplish it. That's more memory pressure than an imperative language like C, where the flow of data and computations is obvious. It's exacerbated by the tendency to factor a single function into many simpler ones.<p>In a team, the increased memory burden also requires more communication for shared understanding of code.<p>Many concatenative languages eventually grow support for local variables, since it's _incredibly_ awkward to implement certain algorithms when you have to do stack juggling to use a variable in a computation.