Slashdot Mirror


One-a-Day-Compiles: Good Enough For Government Work In 1983

theodp (442580) writes "Simon Allardice takes a stroll down coding memory lane, recalling that when he got started in programming in 1983, hand-writing one's programs with pencil on IBM coding sheets was still considered good enough for British government work (COBOL, Assembler forms). Allardice writes, 'And when you were finished handwriting a section of code — perhaps a full program, perhaps a subroutine — you'd gather these sheets together (carefully numbered in sequence, of course) and send them along to the folks in the data entry department. They'd type it in. And the next day you'd get a report to find out if it compiled or not. Let me say that again: the next day you could find out if your code compiled or not.' So, does anyone have 'fond' memories of computer programming in the punched card era? And for you young'uns, what do you suppose your C++ or Java development times would be like if you got one compile a day?" The other way you could program in 1983.

32 of 230 comments (clear)

  1. In the late 70s by Anonymous Coward · · Score: 2, Informative

    We started with two languages. One was APL\360 which was interactive and fast for debugging. The other was FORTRAN IV on punched cards, which was an overnight batch sort of thing. I still think APL was far better, once you could wrap your head around the mathematical details it entailed. With APL, it was always better and faster (in programmer time and processor time) to work in parallel with array operations than to break them into loops of scalar operations like you'd have to do with FORTRAN..

    1. Re:In the late 70s by Arnold+Reinhold · · Score: 5, Insightful

      The punched card era ended for me in 1975, when I started working on Data General Nova minicomputers at Computervision. But I spend more than a decade before that with cards and keypunch machines. I never let anyone else punch in my programs, as I usually found some errors when I typed them in myself. Card decks weren't dropped often and it wasn't that big a deal. Dropping a deck is not an effective way to shuffle it. I'm more nervous about my online source files being munged by accident. The overnight or 24 hour turnaround was common, but possible to work around. I spend many nights after mid-night at the MIT computer center in the late 1960s, when hour or even half hour turnarounds were possible. One spent the time waiting socializing or helping others find their bugs. During summer jobs at NASA MSC, I found a Honeywell 316 that wasn't being used much and could get time on it all to myself when needed. In the early 1970s my employer had an IBM 1130 and we took turns using it, so turnaround was not an issue there, though it could be when software was to be installed at a client. Finding ways to get around obstacles in your path was a valuable skill then as now.

    2. Re:In the late 70s by GerryGilmore · · Score: 2

      Actually, Data General had a line of card punch and reader machines (I think they were OEM'ed, though) in the late 70s. I know because I was DG Field Engineer and had to work on those during election cycles. That's why I knew what "hanging-chad" was very early in the 2000 election fru-fru.

    3. Re:In the late 70s by Ravenger · · Score: 2

      My first computer program was written on optical cards in the late 70's. I was 11 years old, and our maths teacher showed us how to write simple basic programs.

      We'd write them out by hand, work out the ascii code in binary for each character of the program line, then using a soft pencil would painstakingly fill in the 'holes' for the binary code of each character on an optical card. One card for each line of program.

      These cards were sent off to a university to be batch-processed on their mainframe. If you were lucky you got your output a week later with vaguely sensible results. In my case I think I only got a print-out back saying 'syntax error'.

    4. Re:In the late 70s by Jane+Q.+Public · · Score: 2

      Back in those days I was an undergrad in engineering, which meant I didn't often get to use the computer, except in the required Computer Science classes. In the theory classes we actually turned in things like hand-coded PASCAL programs; the teachers (or rather, graduate students) then "compiled" them in their heads and issued a grade.

      Passwords obtained from notebooks by looking over other students' shoulders were a precious commodity. Computer time was carefully rationed, but access to the keypunch machines and cards was not, so you could write all the Fortran programs on cards you wanted. You just could not normally run them.

      Once you got to 200-level classes, you could actually get some computer time, strictly for those classes. CPU time was still rationed, but not as closely. They figured you were a n00b so you'd probably run a few infinite loops from time to time. But if you had left-over CPU time for your class, you could run some of the "fun" card stacks you did in your spare time (if you didn't tell anybody). And especially if you had a "borrowed" account password from an upperclassman.

      Punching cards was a real PITA. Especially if you got a "dumb" keypunch. Click the "load" button, wait for the card to load, then type your cards one character at a time... oops! Hit "reject", hit "load" again, retype your card. If you were lucky you got on one of the "verifier" keypunches, which had some simplified error-checking, and if you made a mistake you could hold down "copy" up to the place where you made the error, then it would discard the old card and you continued with the new one.

      As OP says: input was punch cards. One "line" per card, and the first 7 columns of each card was reserved. (Because Fortran.) Output was paper! Only! You went to the window in the computer lab the next day and if you were lucky they ran your batch and you got your output. So you were VERY careful to punch correct code.

      Dropping a stack of cards was a major disaster. And if somebody was mad about something, one way they would get back at them was to mix up their cards. Even one card out of place would ruin a compile. So everybody learned these tricks very quickly: (1) you keep your card stacks firmly wrapped in both directions with rubber bands. And (2) you draw (anything with diagonal lines, like your name) on the side of your stack with a Sharpie, so that you can detect tampering at a glance.

  2. ah, those were the daze;-) by airdrummer · · Score: 4, Funny

    i started on punchcards in college on a cdc mainframe: drop the deck in the tray outside the machine room, operator periodically runs them, puts the output in the out tray, hours later...

    i improved my turnaround by dating 1 of the operators;-)

    1. Re:ah, those were the daze;-) by Chris+Mattern · · Score: 2

      Hey, I took that class! The professor graded you on how many runs it took you to make your program work, which he could do as all your runs had to go through him: One or two runs an A, three runs a B, four runs a C...

    2. Re:ah, those were the daze;-) by Chris+Mattern · · Score: 2

      Oh, and you had to include your flowchart and coding forms. If you didn't have your flowchart and everything all properly done, it got returned unrun (but it still counted as a run for your grade).

  3. 1983 was not the "punched card era" by NotDrWho · · Score: 2

    That was in the 60's and early 70's.

    --
    SJW's don't eliminate discrimination. They just expropriate it for themselves.
    1. Re:1983 was not the "punched card era" by OffTheLip · · Score: 2

      Depends on location and means. I took some programming classes at a NC public university in 1983 where we used punch cards for FORTRAN 77 programs which were batched and sent to the mainframe in Chapel Hiill for overnight processing. One job/run per day was normal. It paid to be a careful programmer.

  4. /android $make by pushing-robot · · Score: 5, Funny

    Let me say that again: the next day you could find out if your code compiled or not.

    So not much has changed, then.

    --
    How can I believe you when you tell me what I don't want to hear?
  5. Confetti on the Charles by paiute · · Score: 3, Interesting

    There was a day at the end of the term when the students in a chemical engineering course (10.something) coming back over the Harvard Bridge would take the rubber bands off the stacks and stacks of punch cards accumulated while writing FORTRAN programs for the course and toss them off the bridge. There was usually a stiff breeze and the results were satisfying.

    I took an introductory version of that course. Punch a hundred cards out on the big old typewriter workstation thing. Take the stack to the computer window. Come back next day for the wide printout. Unfold and see all the fucking errors. Repeat. Repeat. Repeat. All failures separated by a day or a weekend.

    --
    If Slashdot were chemistry it would look like this:Cadaverine
  6. Re:Huh? by Geoffrey.landis · · Score: 2

    Wow. You do know that terminals and PCs where common in 1983. Great way to make work.

    Yes, '83 was well into the "time share" era (remember "computer terminals"?), with minicomputers and Personal Computers also around, but the PC not yet ubiquitous (in '83, that would have been the IBM 5150-- still sold, back then, mostly to homes, not businesses). If the British Government was still doing hand-written code punched in by "data entry" workers, it's because of inertia, not because that was state of the art.

    --
    http://www.geoffreylandis.com
  7. More time to think by cyberspittle · · Score: 2

    When waiting for a compile, we had to make proper flowcharts for operations manual, maintenance manual, and also the prammers manual, the latter having the source code. When there was a change to any program, all needed to be updated and approved before the change was put into place. Although a compile a day seemed leisurely, there was more time for code review and complaince. I think biggest issue is the lack of code review needed. Now, people are more interested in their train of thought to correct errors from compiler that they do not slow down and think about what they are coding. Code reason why there are so many bugs and security holes. People need to slow down and do all the other required steps to ensure quality code.

  8. Dead-end bureaucracy by JDG1980 · · Score: 3, Insightful

    Of course, the vast majority of people doing programming in 1983 didn't do any of this. If you count everyone who was entering any code (from "Hello World" on up), the vast majority of programmers were working on 8-bit microcomputers that didn't require jumping through any such hoops. If you had a Commodore 64, you could get a basic test program working in less than a minute:

    10 PRINT"HELLO WORLD"
    20 GOTO 10
    RUN

    Then once you figured that out you could learn about variables, figure out how to write to the screen RAM, and eventually figure out sprites. And then once you figured out that interpreted BASIC at 1 MHz wasn't fast enough to do a decent arcade game, you'd move on to assembly. I'd wager a majority of the people programming today learned in an environment like this. Edsger Dijkstra and other academic computer scientists hated BASIC, which they thought taught bad habits and caused brain damage, but they were wrong. It was this kind of hacker culture that created the flourishing IT industry we have today, not the dead-end bureaucracy represented by Thatcherite Britain.

    1. Re:Dead-end bureaucracy by jc42 · · Score: 2

      Dijkstra was right about BASIC, but a lot of us managed to recover.

      Yeah, and I ran across part of the explanation in an earlier form that's really similar: In high school, I took several years of German and French. The teachers all commented that most of the students wrote and (occasionally;-) spoke those languages with English word order, and were obviously doing word-at-a-time translation; I was one of the few who quickly adopted non-English phrasing from these languages and sounded more like a native speaker.

      It's similarly with software. You can often identify the first programming language of the author of a piece of code, because the code is obviously structured like a "native" Fortran or Basic or whatever program, while using the surface syntax of the project's actual language. But some of us look for interesting new conceptual tools in a new programming language, and concentrate on learning to use them effectively.

      Dijkstra's comments were fairly accurate for the large majority who never really learn more than one "native" language, and treat all others as a translation task. Such people will rarely learn any conceptual tools that didn't exist in their first language, and are crippled just as he claimed. A minority of us look for the interesting new things in a new language, and his comments don't much apply to us. And I there's good evidence that Dijkstra was one of us.

      OTOH, I've often wished I could use the tools from Lisp or Prolog or Snobol or APL or ... in the languages that are in common use now. It's idiotic that we still have to write loops to add two arrays; all languages should implement parallel array operations by now. Similarly, imagine the things you could do in C++ or Java if you could simply resolve an expression. And we had much better parsing tools than Regular Expressions 3 decades ago. (And Cobol even had the "CORResponding" adverb. ;-)

      But those things didn't exist in Fortran or Basic or Pascal or C, so they'd be inaccessible to most people who had one of those as their first language.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
  9. Re:Huh? by jellomizer · · Score: 3, Insightful

    Yes but they were expensive.
    A B&W Dumb Terminal could cost about a grand, A PC would be about 2 grand.
    When a company bought a computer back then, they didn't plan for a 4 year life cycle, but because these systems cost millions of dollars, they planed for 10+ years of usage out of it.

    Secondly there wasn't much trust in the computer, and most programs were not meant to be fancy UI but straight number crunching. So a lot of the work was done by had as to have a paper backup.
    That said these old programs were smaller, and had less flaws, because they were so carefully done.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  10. Give me a few more minutes by ArhcAngel · · Score: 2

    As soon as this compile of Gentoo I started in 2010 finishes I'll tell you whether I have 'fond' memories of the experience.

    --
    "A person is smart. People are dumb, panicky dangerous animals and you know it." - K
  11. Re:We still have once a day builds where I work! by Bardez · · Score: 2

    As opposed to screwing around on Slashdot?

    --
    Perception is the thin dividing line between reality and fiction.
  12. Re:Ugh by Arker · · Score: 3, Insightful

    I think you learn more effectively that way though. It's not really all that hard to sit down with a cpu reference and a pen and some paper and write out a program by hand, checking your work at each step, and wind up with a working program written in longhand hexidecimal. It's time consuming, of course, but it's really not all that hard if you focus and spend the time.

    The biggest thing is just mindset and expectation. If it's your mindset to just spew something rough out and then start debugging it, that's what you will do (and you will produce a lot of bugs, only some of which will have to be fixed in order to compile.) You will probably learn less and more slowly, though.

    --
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-
    Friends don't let friends enable ecmascript.
  13. Re:This article is stupid by jones_supa · · Score: 5, Insightful

    You would lose your artistic vision in a blur of technical limitations.

    These days we sometimes lose the artistic vision in blur of technical abundance.

  14. Re:Huh? by gewalker · · Score: 2

    In 1979 I worked at a Fortune 200 company with a couple of IBM 370s. In our computer programming department, about 20 programmers shared 2 3270 terminals. You could hand-write coding sheets to have it keypunched, but turn-around was a day or two. Dumps & snapsdumps were common debugging tools.

  15. I wrote COBOL in 1983 for the US gov't by ReallyEvilCanine · · Score: 2

    Though I was primarily a SYSOP for our internal mini mainframe, I also coded for other sections. To do so we connected using dumb terminals via 300baud to a Boeing datacenter and paid for connection as well as processor time. While it was government work, Reagan was just starting to take money away from the agencies, so we were encouraged to compile and run as little as possible.

    Meanwhile, by 1983 there were a couple of COBOL packages for the Atari 800, a machine I happened to have at home. So I'd code on that, allowing me to compile, link, and execute, all in real time!! Every bit of my submitted code was fully tested. The downside was that I had to print it out and then type it back into those fucking dumb terminals where the occasional typo might slip in.

    Prior to that I had the misfortune of batch programming on punchcards, dropping off decks of cards to pick up a day or two later with greenbar printouts full of the most obnoxious fatal errors.

  16. Re:Huh? by cardpuncher · · Score: 3, Insightful

    >terminals and PCs w(h)ere common in 1983

    No they weren't.

    The IBM PC was introduced in 1981. You couldn't do much with it, certainly not much related to mainframe programming. They were very expensive for what they did. Minicomputers existed, but they also didn't cross over mainframe territory.

    People with heavy data processing requirements were mostly using DOS/VSE on S/370 and 4300 mainframes. No timesharing in DOS. It was still extremely common in industry to have people sitting with coding forms that were then passed to data preparation teams for punching. I've sat with teams painstakingly writing DOS JCL onto coding sheets.

    If you were a larger user that could justify the investment in MVS, you could potentially use the Time Sharing Option, an interactive environment with a reputation for being cumbersome and inefficient - you'd only extend the "luxury "of using it to a comparatively few select people.

    Computer time was also extremely expensive. Cambridge University wrote their own version of timesharing (http://en.wikipedia.org/wiki/Phoenix_%28computer%29) for their (early) S/370 in order to support a larger number of users and time on it was still so restricted that usage was "priced" to reflect demand at different times of day and CS students would either have to work at 3am or make extensive use of cards or other offline data entry to get their projects completed within the allocated budget.

    Whereas there were minicomputers and early personal computers around, they were scarcely to be seen in what was still the predominant environment of the computer industry - the (IBM) mainframe shop.

    Actually, the British government tended to prefer homegrown procurement and more of its staff were likely to be working with George 3 (http://en.wikipedia.org/wiki/GEORGE_%28operating_system%29), which had a far better interactive environment than IBM offered.

  17. many languages including C/C++ on micros by then by mr_mischief · · Score: 2

    Atari, Tandy, IBM, Apple, Wang, Sinclair, Acorn, Texas Instruments, Digital, Xerox, Toshiba, Compaq, Timex, Sun Microsystems, Epson, Osborne, Intel, Motorola, AT&T, Microsoft, Digital Research, Lotus, Watcom, and Borland are on the time phone from 1983. They want to have a word with you.

    You could buy an IBM PC and buy assemblers, COBOL, Fortran, C, C++, Pascal (including Turbo Pascal on DOS), and more for it running on a Unix system (Xenix) or DOS.

    CP/M machines from several makers including Osborne and several other micros were around before that, with Apple, Atari, Commodore, and Tandy being the big ones in the US.

    Sun had already launched the Sun-1 and in 1983 launched the Sun-2 series.

    This list could go on and on.

  18. Re:We would all be exponentially less productive by uncqual · · Score: 2

    Although I would never want to return to the old days, one thing "high turnaround time" environments do is force developers to carefully desk check their code before compiling it. In this process, most developers (including myself) would find logic errors that testing would probably never find (even very obscure race conditions).

    Now, far too many developers skip this step (and code reviews are too superficial) because it seems to get the project "done" faster while in high turnaround time environments skipping this step would mean that the project would likely never complete before it was cancelled due to coast overruns. Now, the customers find those bugs (at which time it either becomes a crisis or the customer just puts up with it and has the sense that "this software is crappy" which can be corrosive to future sales).

    It takes quite a bit more discipline to do the desk check now.

    --
    Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
  19. Re:We would all be exponentially less productive by lgw · · Score: 2

    Well, there were coping mechanisms. I did mainframe programming in the 90s where an assembler job took hours in the queue - so two-a-day. We just fixed simple bugs directly with a disk sector editor (no butterflies required), in parallel to the source fix, and moved on to the next bug. Once things looked good, or your day's patches became too tangled to progress, you submitted your assembler job.

    Then you moved to your other project. That's the key, you know. We were productive because we'd just do 2-3 bugs in parallel. Make progress on 1, submit job, make progress on 2, submit job, see if 1 really looked fixed, nope, submit job, and so on.

    --
    Socialism: a lie told by totalitarians and believed by fools.
  20. Re:Huh? by bzipitidoo · · Score: 4, Interesting

    In 1987, university budgets and aged professors made for an experience that was not much faster. PCs were a precious resource. Grad students got PC AT clones (286s) and undergrads sometimes got the use of an old PC XT clone.

    But at least one old professor didn't believe in PCs, so for his classes students shared an IBM mainframe (a 3090 as I recall) with admin. We had green screen terminals, but results were printed and the printout placed in 1 of 100 pigeonholes, according to the last 2 digits of your SSN. Admin had 2 levels of priority on mere students. The system increased the priority of an unrun job every 3 hours, so between 8 AM and 5PM, it took 6 hours for us to get back the results of a job run. After hours, performance was on the whole much better, but could still vary. Might get a result in a few minutes, or might still have to wait an hour or more. Couldn't continue working after midnight. University budgets dictated that computer labs had to close for the night. Each dorm had 2 or 3 terminals available all night long, but there you couldn't get back any printouts. You didn't want any evening classes, as that cut into the best times to use the mainframe. Weekends were good, if you didn't mind giving up the best times for a little leisure.

    --
    Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  21. You young whippersnappers get off my lawn! by n0ano · · Score: 3, Interesting

    I started in 1968 at Michigan State with punch cards on a CDC 6000 mainframe, a big one, all of 65K words of memory (60 bits per word but still, that was considered big back then). As a student I was guaranteed 1 run per day and yes, even after eyeballing my programs carefully I lost many days of work due to missplaced punctuation. It's amazing what you can get used to when you have no choice.

    I remember my excitement when I was able to move to a research account from a student one. Research accounts could get as many runs as the system could turn around, typically around 4-5 per day - nirvanna! Of course, the research runs weren't guranteed so when the system got backed up (some physics professor tying up the machine for hours or down time due to HW failures) the student jobs got priority and your research job came back whenever they could get to it. I waited 2-3 days for a job more than once.

    Back to punch cards, my favorite technique was something I saw one of the FORTRAN programmers do. The technique used the fact that you could put a line number on any card and it was possible to put multiple statements on the same card. This guy ended every single card with a goto statement to the next card in the deck. As he said, the operators could drop his deck, shuffle the cards and his program would still work properly. (We really didn't like or trust the operators back then.)

    --
    Don Dugger
    "Censeo Toto nos in Kansa esse decisse." - D. Gale
  22. First computer virus by Yakasha · · Score: 2
    Growing up, my dad liked to tell me about one of the first computer viruses he & his classmates thought of in college.

    It was a piece of string tied across a hallway that waited for programmers carrying carefully ordered (and hopefully for their sake, numbered) stacks of punch cards.

    It replicated and evolved by way of angry programmers getting back at them in creative ways.

  23. Re:Huh? by steveg · · Score: 2

    You might be underestimating the cost of a PC. I bought my first PC in 1982 and it came out to almost exactly $3000. That *was* upgraded a bit -- it had *two* floppy drives and they were double sided. *And* I upgraded the memory to 256K, and got a CGA card and an amber monitor.

    I was still using punch cards in school (FORTRAN and PASCAL) as of 1978, but turnaround was much faster than overnight. It seldom took more than two or three hours to run my several hundred millisecond program.

    --
    Ignorance killed the cat. Curiosity was framed.
  24. no flight involved? by belmolis · · Score: 2

    When I was a grad student at Bell Labs in 1983, a senior programmer told me about how she first programmed, when the labs were in New York City. She would write her program VERY carefully, punch the cards, put them in her briefcase, and fly to Washington, D.C. where she had access to a computer. She would give the deck to the attendant, wait a few minutes, receive her output, go back to the airport, and fly back to New York.