I've noticed that understanding how compilers parse a programming language greatly helps me understand the language, as well as aid me in writing and debugging.
In college, I've taken courses for Java, C++, sh, and PHP, and only the C++ teacher even mentioned parsing. This makes it difficult for me, as a college-employed tutor for these courses, to aid students in learning the languages.
I'd like to see the concept of parsing taught alongside programming languages. A programming language becomes intuitive if you understand how it's parsed.
Add your comment
MikeMol: Why don't you start a blog on the benefits of parsing? The college where you tutor probably gives you an account that you can use for such purposes. Explain what parsing is, how it applies in various languages (maybe including English), how it helps in transferring skills from one language to another,and how it benefits the learner. Give illustations in each language.
You can send the people you are tutoring to read it. Maybe even get the teachers to read it. Maybe get other stidents to read it. Maybe develop more with questions people ask you. Maybe extend it to other general programming concepts. It probably won't make you rich, but it might look good on your bio.
A relevant example of parsing English text: Nothing is ever done in the passive voice.
I often note the fact that the classes I learned the most in at college were my compiler design classes--where I learned more than just parsing, for certain, but that was a key component. I already knew how to program far before I started college, which may skew my experience.
When I learned to program, I had not the slightest idea of parsing. I was just putting statements into a computer and it would do things. That was cool. Because it was cool, I wanted to learn more. It wasn't until much later that I learned about parsing, and it was only interesting because it was relevant: I'd built up a foundation of understanding that allowed me to see how parsing was relevant to me, and for that matter I was trying to write a compiler and needed to understand it. When I first started programming, looking at BNF grammars would have been quite intimidating, irrelevant (as far as I could tell), and, well, boring.
In fact, I'd put parsing and compiler design at the advanced end of the curriculum--so if you're tutoring for beginning PHP, for instance, I wouldn't expect the teacher to go into that concept with any more than a brief mention. Yes, understanding parsing means that you can understand intuitively how a language works. But I would propose that understanding parsing is something that only comes after you already have a pretty strong grasp of how programming works to begin with.
I think that it's simply a difficult challenge to teach people programming, and that either a person has the right aptitude or they don't. And if they have the aptitude, you probably aren't seeing them as a tutor. It puts the cart before the horse: until they have a good grasp of programming, they won't be able to make much use of the idea of parsing.