(Sorry if this is the wrong place for this, or if there's already a thread in existence which would be better. If either of these is the case, simply point me in the right direction, and I'll be on my way.)

My first interaction with Templates was about 5 years ago, in a C++ class at my university. I immediately thought "A general type? This would be great for my logger!" and tried to implement them into the small library I had been developing to save time on the class assignments.

Naturally, I didn't understand them, so after a couple of half-hearted attempts, I gave up and went back to doing things the way I had before. I've avoided Templates since then, because they don't make any sense!

5 years later, enter D. In the process of trying to teach myself some D, I've found myself with a library of Structs for which the operator overloading features are extremely handy.

Teensy problem here: the documentation on how to use operators makes use of Template types in the examples.

Having developed a bit more analytical skill and tenacity in the intervening years, I resolved to actually figure the mess out this time. I have come to a conclusion.

The reason nobody understands Templates is that nobody understands them.

That is to say, nobody understands how Templates work is because, as was the case for me, the sum total of explanation we are given on them in programming class is "These are Templates. They exist. They look something like this."

Even the (quite thorough) documentation for the D language reference isn't immune to this, if we take a look. (http://dlang.org/template.html) As you can see, the page more or less starts off with "--And here are some cool things you can do with templates."

Wait, what? I feel like I've started watching Primer 20 minutes before the end, without anybody telling me what's going on.

Herein, I think, lies the root of the reason why nobody understands Templates. I think the solution to this problem is not to comfort programming students by saying "Don't worry, nobody understands Templates." I think it's time we collectively figured out what they are. That done, we can overhaul the way new programmers learn how to use them.

Who's with me? Anybody have a short(but COMPLETE!) example of code that makes use of Templates that you actually understand what's going on there?

Reply via email to