In C, parentheses mean expression grouping, function invocation and cast... depending on context.<p>In English, many words have different meanings depending on context: e.g. not to be mean, but you know what I mean, right? Ordinary human speakers have no problem with this, even without theoretical linguistic training.<p>I'm not convinced that Larry Wall (a formally trained linguist) has chosen meanings and contexts that really do fit in with what human speakers intuitively expect. But it could well be that it is just that I am personally familiar with C-style grammar, and not with Perl's. If I "grew up" with Perl, perhaps it would seem natural?<p>Perhaps it's exactly the same as with human languages: that languages with very different grammars are not so easy to learn for most people. And... perhaps there is a linguistic window for learning programming languages, as there is for human languages (which is up to about 7yo)?