Consider a strongly-typed programming language like Rust, Haskell, Lean, whatever: like human language, almost every well-typed transformation of the code corresponds to some meaningful change. In the same way that programmers can 'bounce off' the barriers of a type system, a person using human language can 'bounce off' conceptual barriers that would otherwise lead to them producing unintelligible nonsense.
However: the map is not the territory. For every well-typed transformation, there are innumerable invalid transformations that would correspond to meaningless rubbish in less expressive languages. Effectively, the language is turning the problem of *domain reasoning* into one of *pattern-matching* and *symbol manipulation* by constraining the set of possible programs to a small latent space within that covers a particularly high concentration of meaningful programs.