I believe that there is a strong correlation between understanding things well and having a compact mental model of them. As I touched on in Re (tilly) 3: Maintainable code is the best code -- principal components
, this has implications for how good programmers organize code that is intended for other good programmers. (Less experienced programmers should be assumed to not be as fluent in building ideas on ideas. Therefore code written for their comprehension necessarily needs to be more repetitive. Remember the goal is communication of the model to a real human, and not some abstract ideal of programming.)
Incidentally a couple of days ago I was talking to someone who is doing a PhD in neuro-science. In discussing what thinking is he brought up the same point. He said that the key characteristcs of the thinking process are the production of a compressed model from external stimuli, and then the utilization of that model for prediction. I found it interesting that people who officially study this stuff were thinking along similar lines to what I already suspected was important. That means that even if it is a strange-looking line of thought, it is at least a reasonable one to try...
Anyways, yes. A shared vocabulary of compact idioms does help you communica^Wprogram well. They must be shared between programmers to work well, and certainly not all Perl programmers (not even all experienced ones) can be assumed to know the various corners of Perl. However I believe that the richness of Perl 5, and the greater coming richness of Perl 6, allows for a selection of a limited but highly effective "vocabulary" for the problem spaces most Perl programmers are likely to encounter.