coding turning inside out
Tue, Jan 24, 2006
This article on the “dumming down” of computer science is quite a hoot. It bemoans the old days of pointers and recursion, unkempt beards and sandals with your punched cards. I always find these kinds of articles interesting as they’re signs of a changing landscape. They’re rarely of value in themselves, rather, they make you sit up and have a look around, see what’s doing. As a programmer, that’s always a good thing to do.
So that’s what I did and while browsing Artima, I came across this article on the next generation of C++ and this quote that, for me, explains everything:
“Many C++ users quite reasonably don’t want to become C++ experts‚Äîthey are experts in their own fields (e.g., physicists, graphics specialists, or hardware engineers) who use C++”
Programming is no longer an end in itself. You don’t need expensive contractors to build systems you rely on in your day to day job. Instead, you learn Java, or VB, PHP or some other “user oriented” language.
When I first started in academia I was suprised by the number of “Java for Dummies” books lying around and the number of teaching professionals who were knocking up VLEs in their spare time. OK, according to Frederick P. Brooks in The Mythical Man Month, these would be classed as “Software Applications” rather than “Software Systems”, in that they’ll run on the machine they were developed on. Move them to another machine and they might blow up. However, even that restriction is disappearing as J2EE makes inroads into academia. J2EE essentially makes the Brooks' “Application” into a “System” by providing the same functionality on all machines the software will run on.
Lecturers, who have ideas on how to deliver online courses don’t have to get a budget to hire a C programmer. They just go to Amazon and buy Java2 for professionals. Professionals, hmmm. Who are the professionals of the book title? Us programmers always instantly make the assumption that it’s us, the coders. However, this isn’t the case any more, as the Artima article makes quite clear. There are professionals in many domains who need to code. They don’t, shock horror, need to master pointers or recursion. They just need to learn the syntax and off they go.
The Artima article says about novices:
“The sooner novices become experts the better”
but the people in question aren’t “novices” as coders consider novices. They’re experta with an itch that needs scratching and with the “dumming down” of coding languages such as Java and C++ they can really scratch that itch.
In fact, it’s not really dumming down. To me, it’s more the encapsulation of knowledge. C++09 will be more library oriented. i.e. you won’t have to roll-your-own, you just call library functions. This can only be good (or as good as the libraries).
Having said that, I looked for instances of “dumming down” in domains other than programming. I’m a cyclist and it occurred to me that a lot of “dumming down” has been going on in bike technology for a long time. I mean “dumming down” in the same way that the first article quoted means. In the old days, I had to dismantle the wheel hubs on my bike about once a month, take out and clean the bearings and regrease everything. I also had to do the same with the bottom bracket and remove the cranks. The bottom bracket was a pig of a job as it’s very sensitive to incorrect insertion. Get it wrong and you will ruin the bike frame and you’ll need to buy a new bike.
Cycle maintenance took know-how, time and knowledge, not to mention a lot of oil and grease, mostly over you. Now however, wheel hubs and bottom brackets come in sealed units which are virtually maintenance free. They come with their own little sealed worlds that contain all the grease and bearings they’ll ever need. All you do is fit and forget. It’s more than that though. When you can get hold of such easy to use parts, you start to realise that you can “configure and build” your own bike. You don’t have to buy a “shrink wrap” bike from the shop. You pick-n-mix the components and build the bike you want. I’m in Audax so taking such an approach to bike building yields benefits that helps me in my area of “expertise”.
Programming languages are starting to offer the same benefits as cycle components. They offer experts in domains other than computer science a way to add value to what they do.
To the “pointers and recursion” crowd I offer the following fictional exchange, though no doubt enacted somewhere out on the road:
Young cyclist at side of road with puncture. Old cyclist stops and remarks, “you’ll have a hell of job gluing that tyre back on in this rain sonny”. Young cyclist whips off old inner tube, replaces with new one and rides off into the rain. Old cyclist: “new fangled clincher tyres. Kids these days don’t even know how to stitch tubs back on”
Us cyclists have already progressed from the pointers/recursion (tubular tyres) to library oriented programming (clinchers). It’ll be interesting to see how the programming languages do the same.