In defense of pseudocode
Me, I love pseudocode. It's useful in so many situations, like duct tape. Or dogs. Or dogs covered in duct tape.
But recently the world's computerscience-est Nosferatu (and I swear both of those are words) wrote an article which can be paraphrased down to "pseudocode is overrated". Paraphrasing an article down to a string smaller than its Kolmogorov complexity is a feat only possible by a mathemagician like me. That's how I can defeat this creature of the night: lossy compression.
Alright, now I'm going to start making sense. Insofar as I normally do. Yeah.
It's no secret that I like pseudocode. When you're in a situation in which a specific programming language isn't required, pseudocode is a great way to express an algorithm. Even in formal situations like defining mathematical algorithms, pseudocode is often the most expressive way to do it.
I use it all the time in my professional and hobby code, too. I am generally in favour of top-down design and coding, starting from a conceptual idea in my hairy brain, mentally breaking it down into classes. Once I get the level of individual functions I write the less obvious algorithms out in pseudocode which will serve as both documentation and a guide for writing the code itself.
The best thing about pseudocode is it can be whatever you need it to be. It can be as high-level or low-level as demanded by the situation. It can model itself on English, French, Chinese, Old English, Elvish, Elvis, whatever. It can model itself on any programming language or paradigm, from object-oriented to functional to birdcode (the code for birds (it's mostly tweeting (and some chirping (and it's based on Lisp (this is a nesting joke))))).
Our vampiric pundit thinks that the situations in which pseudocode is useful are few. I tend to agree with his opinion that most of the time good code should be self-documenting and so the idea of spending effort writing code that isn't code seems kind of a waste. But what better way to express the logic of the algorithm than in something that was designed to express algorithms? I don't think it's a good idea to write pseudocode of every line of code, because good code is obvious, but sometimes the logic is hard to follow or has to be not as obvious as possible for performance reasons, in which case the clear descriptive nature of pseudocode is perfect.
So next time a man without a reflection asks you for an algorithm, make sure you tell him in pseudocode and eat some garlic.