In the fall of 1976 I started as a Freshman at SUNY Stony Brook intending to major in Math and Computer Science. I took Honors Calculus I and CS 1. The CS course was in Pascal (which I still think is a fine teaching language; however, since I have rarely taught a programming course I am not qualified to debate this point). We had to write programs using
Punch cards.
(From Sept 1, 1976 until Nov 5, 2023 I thought punch cards was one word. I also thought Stony Brook was one word. Wow- the things you learn from blogging!)
It was awful. It took a long time to just write a simple program and mistakes were hard to avoid. The turn-around time for submitting the program and getting the output was 1 hour if you didn't do the project the day before it was due but a lot longer if you did. I recall spending 6 hours debugging a program only to find that I had a 1 (the numeral) instead of a capital I (the letter). Very bad for time-put-in vs knowledge-gotten-out.
I DID finish the course but decided to NOT major in Computer Science (I majored in Math and Applied Math instead). I had the following thought, though I could not possibly have expressed it this well back then:
I'll return to computer science once they have a better interface.
But I wondered, why didn't everyone think that? The ratio of time-put-in to knowledge-gotten-out was so bad that I would think people would all realize they should wait for a better interface. Of course, its a good thing that others did NOT give up. If everyone had given up then we wouldn't have our current wonderful electronic society!!
More generally, What did people in that era think? I asked several people who dealt with punch cards and there are some of their responses:
1) Paper Tape was Worse:
a) In 1960 I used a Bendix G15. It had paper tape, and I was constantly ripping them. I never imagined I would end up in this field but here I am! So actually punch cards were a major improvement.
b) In 1976, in High School, we used paper tape. So cards did not seem like a major inconvenience. A bigger problem was the lack of resources (hole-punch machines, card readers, printers, etc) which mean long lines leading up to due dates.
c) In 1980, to get to and from the computer room we had to walk uphill, 5 miles, in the snow. Abishola was lucky, she had shoes. Bidal was less lucky, they had socks but no shoes, Carol was even less lucky, she had no shoes or socks. As for me, I was the least lucky of all since I had no feet.
Bill Meta comment: Note that the rate at which places went from paper tape to punch cards varied. We will see more variation later.
2) An Upside to Punch Cards
a) Some of us, however, designed programs in advance of hitting the 029 (Bill Add: 029 and 026 were the post widely used keypunches of that era.) A reasonable case can be made that the opportunity to reason about what we do first (rather than doing the monkey-typewriter thing on fast interfaces, then debugging by friction) resulted in higher quality code and way more polished critical thinking skills. Thinking. I recommend it. And in point of fact, that is one of the truisms about software engineering writ large. Some of the most successful practices we employ are ones which magically involve freeing developers to think about what the heck they do. Quality improves accordingly. This is not advocating that we return to cards. It is however the polite push-back against your assertion that the appropriate technology of that era was awful. In fact, it was just appropriate for the computing of the day. When leveraged correctly, good things happened.
b) One of the best things that came from it was convincing you to go prove theorems for a living. Glad for that! You work your side of the street and we will work ours.
c) While entering / running code was a pain, especially compared to today, there was a hidden benefit: if your program didn't work you had to think carefully about why, because the number of run / debug / re-run loops you could engage in was very limited. This made me a better programmer, because I was less prone to "shooting from hip" to get my programs to work.
d) With punch cards, you got a lot more done more quickly if you were disciplined, and your description of yourself does not sound very disciplined. (I wasn’t either.) Dijkstra preaches the importance of discipline for formal reasons, but there is no doubt that his programming experience was that the way to get working code was to think it all through carefully ahead of time, not to write hastily and iterate by trial and error. And Knuth, who shares none of Dijkstra’s sternness, describes his experience learning to program in much the same terms.
3) Did people think that there would one day be a better interface?
a) Did not think much about it. Compared to what came before this (no access to computers) it was fantastic. I learned my first programming language (Fortran) from a text without access to a real computer at the time, so punch cards or anything was a big plus. In retrospect it's of course painful, but at the time it was just the way it was.
b) Sure, but people can only see so far into the future. I could foresee the day when we would all have access to a CRT-screen monitor with a text-based interface (with both lower and upper-case characters, wow) all connected to a mainframe. We might even have a light pen that we could use to point at the screen! Of course, we were all looking forward with anticipation to when we would be living under giant glass-domed cities and flying around with jet packs.
4) Why didn't more people do what I do and say I'll wait for a better interface?
This was somewhat covered by the answers to question: (2) What do you mean better? , and question (3) Hey, it was what it was. I also got the following:
a) We wanted to be programmers or computer scientists thought we might not have said it that way. YOU Bill could opt out and do Math which was your first love anyway. WE couldn't. And there were scientists (usually physicists) who HAD to use the machine to calculate their electrons-and-whatnot so they HAD NO CHOICE but to deal with paper tape or punch cards.
b) I was the first class at Cornell not to use punch cards. But I would have used them. Otherwise you are always waiting for the next technology (assembler, high-level language, disk drives, USB drives, dropbox, etc). What if I said in 1981, I'm going to wait until AI writes programs for me. Well, who's laughing now!
c) If you keep waiting for the next version, you never buy anything. Bill, you still don't own a camera (see blog post here). BILL RESPONSE: I have one in my cell phone, but your point is correct, I never bought a camera that was just a camera.
5) Did you think that this is tedious but that they were paving the way for a better tomorrow? (I doubt you could have expressed it that well).
a) Yes. And I could not possibly have expressed it that well. Hindsight is 20-20.
b) Not at all. Along with our pocket protectors and calculators strapped to our belts, it was all part of our proud nerdy identity.
6) Anything else you want to add?
a) As an undergraduate (Brandeis) we had PDP-11's, but my graduate school (NYU) had punch cards. Weird!
b) More nostalgia:
- Classic prank: Get a bag full of punch card "holes", go back to the dorm and stuff them in your roommate's folded-up umbrella.
- Using a thick magic marker to write the program's name along the top of the deck.
- Status was determined by the size of your card deck. You knew that you were hot stuff when you had a card deck so large that a rubber band wouldn't hold it---you needed a box to put them in.
- Heated debates with classmates on the best way to cleanly tear a computer printout along the perforation (fast snap or slow unzip?
- The physicality of machines (see here).
c) You are only talking about punch cards. There were other issues: lack of machines and to much noise. Plus, of course, we didn't know what we were doing. Unlike now :-)
d) I am not the best person to ask, but I think the answer is that you are correct — using punch cards turned people away from using computers as anything but a tool, as opposed to something fun or interesting in itself, much less beautiful. Those happier experiences were ones I had a decade before your punch card experience, because I sat down by myself at the console of a DEC PDP-4 in 1966 and never looked back. I actually HAD done some punch card programming a year or two earlier on an IBM 1620 and was left wondering why anyone would want to go into accounting — which was the application domain of that summer job. It never occurred while I was spilling those decks on the floor to me that there was something called computer science. I kind of realized that only when I took a computer graphics course in 1967, again using a standalone minicomputer (a PDP-1). However, to your point, yes I suspect that that few people got into the field (such as it was) with just a batch-processing experience.