Programming with Punched Cards (2005) [pdf]
columbia.edu
columbia.edu
From the older professors I learned about the diagonal stripe trick and that the biggest fear they had on a cold winter day was to slip when carrying a box of cards down the long nasty stone stairs just outside the maths department, when taking their code to the computing centre. Something that I did not see mentioned in the submission that I learned from them was that at least some computers in the 60;s would make a different sound depending on which instruction that was being processed. Now, remember that this, just like in the article, was before the days of displays. So, a way to detect infinite loops was to listen to the machine. An infinite loop would of course be detectable by the same sound pattern repeating itself over and over. Auditory debugging indeed.
So they tell me - I missed punch cards by months. We had them around the lab as a reminder and as note paper.
Its interesting how little programming has changed since these days. The way we program has changed significantly, put what we produce is almost identical. Each punch card represents a single instruction, equivalent to a line of code in our modern text editors.
I wrote a small punch card toy in JavaScript not too long ago to get a feel for what programming with punch cards may have been like. That's here if your curious: http://tyleregeto.com/article/punch-card-emulator
I recall one day in our terminal room one of the engineers came in logged on - then commented with a sigh 48 jobs in the queue ahead of hers.
One of my leading regrets from college is that a couple of quarters later, I sat in the back row of a classroom where I could see the cursor blinking on a CRT (probably connected to a Data General Nova), and thought "Hmmm" but did not follow up, and let a dozen years go by before I took up programming again.
Will courses teach old languages like they teach Latin and Greek now? Centuries from now, we may need people to decipher old computer programs just like old texts.
Or, perhaps all the documentation will be preserved and there will be little need to study the old languages beyond their primary docs.
C has good survival characteristics. The other language that I expect to last 1000 years is Javascript.
There will probably always be a small but lucrative business in binary-patching systems that have long lost all their documentation but are critical to the functioning of something.
I surely hope that in all those years developers finally learn to take security and software quality seriously, making it available in the same amount, or less, of computer systems that still run PL/* [0] nowadays.
[0] As an example for a systems programmer language family older than C.
He speaks of the paradigm shift he underwent there, from punched cards to terminals with screens (which seems close enough to using a text editor or IDE on your workstation now :)). Do you think a similar paradigm shift may happen again? If so, what could it be?
Could programming with a keyboard ever become obsolete? What if you could just ask your computer what you want in plain English and it actually understands and "implements" it?
I don't write self-modifying code any more, but I can relate to the times when that was a sheer necessity. I find it important that documents like these help us keep those times alive so we don't forget where we came from.