I'm not saying that everyone should know what a gerund is, but they should know that a word ending in `ing' is a verb modified to work as a noun, or at least the concept behind it.

Hear, hear. When I was at school, the only lessons in which any grammar was taught, were foreign-language lessons; the O-level French curriculum required grammatical knowledge long after the O-level English curriculum ceased to do so. For the GCSE examination which replaced O-level, the grammar component finally evaporated (at least under the exam board my school used). I remember, on the eve of the exams, our French teacher world-wearily asking how many of us in the top French set understood the concepts of past versus present tense (not how to form them in French, or anything like that). About half the hands went up. Almost everyone got A's though.

(In a comparative manner, all Perl programmers should know that $a{'index'} references an array indexed by arbitrary keys, but there's no reason that they should need to know that it's called a dictionary or hash or associative array or whatever it's called in Perl, unless they need to talk about the language itself.)

Actually I disagree with that. An important part of being a programmer in any language, is discoursing about your code to other programmers. Using commonly-understood names is thus important. It's been said to me that computer science is just about giving important-sounding names to the completely obvious -- well, yes it is; that's why it's important.

Only in such dens of pedantry as software development teams is much time spent discoursing about the structure of human language.

Peter