Alfred’s got a series of blog entries on nerds and geeks, and it caused me to recall an incident a few years back.
Long before I started teaching, I was a software engineer for a PC manufacturer for a decade and a half, and did all sorts of amazing low-level programming: BIOS, OS modifications, Windows (1.0!) drivers and applications, utilities, etc. My primary development languages were 80×86 Assembler and C (not C++), and I often said that my favorite language was DEBUG. Binary and hexadecimal were (are) second nature to me, and I still can recall most of the ASCII chart with my eyes closed.
Alfred and I have known each other for years now, and we happened to be in the audience of a bunch of teachers at Lake Forrest College just north of Chicago, listening to a lecture by Professor Joe Hummel about teaching teachers how to teach VB.NET. Anyway, he stops at one point and says, "Here’s a great thing to do in class, somebody quick, what’s the ASCII code for a capital B?" Without even thinking, I answered "42!", and he says, "That’s how you can tell the geeks in the class!" Amidst the chuckles, several other teachers turned and said, "Wait, the ASCII for B is 66." Realizing what I had done, I simply said "42 … hex" Over the laughter, Joe then said, "Okay, you’re an uber-geek!", and Alfred added simply, "That’s my Tom!"
But seriously, when you lived deep in the trenches of the 80×86 for so long as I did, you just don’t forget these things.
COMMENTS FROM theSpoke:
In your personal opinion, how do you match the current bunch of IT students againsts the enginners of the earlier days? I am not sure how of us here know the ASCII table off our head as well as you do.
I am just thinking with the current education and training my bunch of IT professionals are receiving, how well will we be able to push the boundary forward?
An interesting question. On the one hand, I’d say that the geeks of olde knew the low level stuff better than the current crop does. However, I’m not so sure that the modern day equivalent NEEDS to know the low level stuff as much.
Yes, there will always be a need for low-level stuff. Until the day when the computers that control microwave ovens, automobiles and room thermostats are programmed in Visual Basic (hey, it COULD happen!), someone will have to program at the bit level. Case in point: About 6 years ago I was writing code for an intelligent data collection device: 256 bytes of RAM was all there was!
But most programming today is done at the proverbial higher level, the absolute need to know ASCII is much smaller.
My opinion, of course.
I remember that "42 hex" thing. Only with the real old timers do you have to know what number base they are working in. For me for a number of years it was octal. Binary was always the common language more than decimal though because converting between binary and hex and binary and octal is so much easier than binary to/from decimal.
As to Bernard’s question – I think that today’s top CS students know things that did not exist when Tom and I were students. SOAP, XML, some database stuff, other of the buzz words of the day. We had to learn things because we were constrained by the limits of our computers. 16 kilobytes was a very large program. I remember programming a computer that had only 4 kilo words (12 bit words at that) and needing half of that space for data. There was no operating system either. So that 2k held every bit of code you needed for everything. So it was important to know how long instructions were so you knew if you had data in the same word as the instruction for example. Today you need to know stuff so that you can find and talk to web services.
Hey, let’s not forget that in that whole list of things that are new is … the Web itself!
It’s almost impossible to conceive of a world without the web, and yet it just passed its 10th birthday.
(Okay, stop me, I’m sounding old!)