in reply to (OT) Programming as a craft

. . . Software Engineer and Computer Programmer are essentially synonyms, even if the former perhaps sounds more important to a certain portion of the population.

What you express here is the underappreciated difference between "connotation" and "denotation". Denotation is the raw dictionary definition. Connotation is what people think of when they hear a certain word (note that connotations often vary between cultures). Words that are synonyms have the same denotation. However, no two words ever have preciely the same connotation.

As of now, I'd say that "Software Engineer" and "Programer" fill the same position within most companies, so they do have the same denotation. As you pointed out, the conotations are very different, and this may lead to a split between the two in the future.

(Side point: the underappreciation for the denotation/conotation difference has led to the abuse of the Thesaurus by encouraging people to use egregious words that they don't fully understand (which, I've heard, is exactly the opposite effect the creator of the Thesaurus was trying to make). The Thesaurus says they're synonyms, so people just fill it in. MS Word's worst feature, IMHO, is that you need only right-click on a word to bring up a list of synonyms. At least before people need to page through a book before they rammed a bullet through their foot.)

I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
-- Schemer

: () { :|:& };:

Note: All code is untested, unless otherwise stated