• Chris (unregistered)

    Weren't punch cards usually numbered (in pencil/pen) on the edges to specifically prevent problems like this -- you know, so you could count the cards and realize that one was missing?

  • Calli Arcale (unregistered) in reply to Tilendor

    So far, our company has been spared such horror stories. The worst I can remember is how the cleaning staff clearly are not advised of the ESD policies. They don't touch any of the product, so the odds of an actual incident are pretty low -- but still nonzero. We have signs explaining that you must wear an ESD smock with at least three snaps fastened if you wish to cross the stripey lines in the labs, but the cleaners don't pay any attention to them. Their focus is entirely on locating wastebaskets, emptying them, and replacing the liners.

    Complaining to the cleaning company had little effect; the staff didn't understand why the smocks might be required if they weren't going to be touching any of the hardware. (At least, not deliberately touching it.) So most of us have adopted the simple strategy of keeping our wastebaskets on the safe side of the stripey line. ;-)

  • jhc (unregistered) in reply to Anon

    [quote user="Anon"][quote user="JaySee"]Can someone who knows how punch cards work explain to me why this is a problem?

    Punch cards work like this: You write code, the code turns into cards that get punched, the computer runs off the punched cards. So if she was using a punch card, that card was no longer there FOR them to run. It'd be like commenting out a random line of C code.[/quote]

    That's ONE way punched cards were used. But the more common use was for data input. You loaded your program from one card deck and when it ran, it read the card reader to get its input from a (usually) separate card deck.

    Or, depending on your time-share situation, you might put them together into one big deck and run the whole thing.

    So the cleaning lady probably didn't do anything to the code (which still ran), but she hosed up the data the program was reading.

  • JAM (unregistered)

    TRWTF is that she was using a CARD WITH HOLES IN IT to sweep up DUST.

    Big dust.

  • (cs)

    I'm waiting for someone to tell us they know someone who used a CD-ROM drive as a cupholder. HAR HAR!

  • Izkata (unregistered) in reply to Anon

    Then why did the code fix itself each day?

    Were the punch cards recreated every single day/every single run?

  • (cs)

    Ahhhh, Hollerith cards. Memories.

    Personally, I never numbered the cards as inserting a new card (code or data) required repunching the deck. Much better to draw a thin sharp diagonal line down the side of the deck, and only repunch when it got too out of hand.

    I used to love messing with the phone/electric/gas companies by punching/spindling/mutilating the bill/cards every month just to guarantee it was processed by a human.

    Now if only we could punch/spindle/mutilate folks via e-mail...

    BTW: they made pretty good dust pans as even a card with a punch in every column was still 99% not-hole...

  • Otis P Criblecoblis (unregistered) in reply to JAM
    JAM:
    TRWTF is that she was using a CARD WITH HOLES IN IT to sweep up DUST.

    Big dust.

    Obviously. Big Iron mainframes generate big dust.

  • Steve (unregistered)

    Aanyone know how many of those punch cards could be read before the mainframe ran out of relays to store the data?

    I know the newer high-tech mainframes had vacuum-tubes.

    I am trying to get our company to upgrade to a state-of-the art solid-state mainframe with these new-fangled transistor thingys.

    Joking aside, I assume these mainframes did use transistors and not integrated circuits?

  • LEGO (unregistered) in reply to Steve
    Steve:
    Aanyone know how many of those punch cards could be read before the mainframe ran out of relays to store the data?

    I know the newer high-tech mainframes had vacuum-tubes.

    I am trying to get our company to upgrade to a state-of-the art solid-state mainframe with these new-fangled transistor thingys.

    Joking aside, I assume these mainframes did use transistors and not integrated circuits?

    It is the mid 1960s. Integrated circuits had not been invented yet, so yeah discreet transistors. They were all the rage back then.

  • Mik Lernout (unregistered)

    No TrackBack support? That is a good WTF for tomorrow!

    Anyway: That Harsh World We Call Reality

  • (cs) in reply to LEGO
    LEGO:
    It is the mid 1960s. Integrated circuits had not been invented yet, so yeah discreet transistors. They were all the rage back then.
    Wikipedia begs to differ. The IC was conceived of in '52, and invented in '58.
  • Andy (unregistered) in reply to Max
    Max:
    TRWTF is how anything ever got done with punchcards, given how error prone the whole system is :)

    It is interesting that the programs seemed to work so much better back then than they do now.

  • LEGO (unregistered) in reply to Bappi
    Bappi:
    LEGO:
    It is the mid 1960s. Integrated circuits had not been invented yet, so yeah discreet transistors. They were all the rage back then.
    Wikipedia begs to differ. The IC was conceived of in '52, and invented in '58.

    Ok, you win, but as wikipedia points out they were not in commercial use until the early 1970s. It would have been very unlikely to find these in a commercial computer in the 1960s.

  • Manic Mailman (unregistered) in reply to James
    James:
    Or were programmers back then so stupid they just read until people stopped feeding in cards?
    Why is it stupid to keep reading records until EOF?
  • Tim (unregistered)

    Holy, Holy Crap.

    I'm 31. I don't really know much about punch cards. But after reading all the comments (not the parent story, kinda boring), I am SOOO glad I wasn't alive in the punch card era. I mean, WTF??

  • (cs)

    Hehe. If it was in the '60s, I'm pretty sure they would be using those systems that didn't have any kind of EOF marker. At least this was true for older System/360 versions, my dad's friend used to work with these. If that is any indicator, I wouldn't be surprised a program back then would just not detect the missing record. Oops!

  • Coincoin (unregistered)

    I heard a similar story from a coworker. At his previous company they had a server that would go down every Wednesday night. The company installed $25000 of security equipement and cameras and discovered to their surprise the following day that there was a cron job rebooting the server.

  • GrumpyFan (unregistered)

    Good story. Mr Murphy showed himself quite well.

    For those too young to remember punch cards, the moral here is when debugging, do not overlook the data and input method(s).

    My first job in IT, was in the Army in the mid-80s. They were still using some punch cards on some systems, in spite of DoD mandate to stop. Funny thing, DoD mandated that all divisions should cease using them 1 Jan 87, but the budget to replace the card reader/punch machines wasn't approved until the following year.

    Once we had a new maintenance guy who was told to clean the card reader/punch machine. He was thourough, very thourough. He took all of the IC boards (14) out of the machine, stripped it down and vacuumed it out entirely. Unfortunately, he didn't document the order in which the IC cards were supposed to go back in to the machine. It had to be replaced.

  • (cs) in reply to Otis P Criblecoblis
    Otis P Criblecoblis:
    I thought I had purged all COBOL from my brain, but now with your mention of ENVIRONMENT DIVISION, FILE SECTION, and WORKING-STORAGE SECTION it's coming back.

    DATA DIVISION !!!!!!!! PROCEDURE DIVISION !!!!!!!!!

    PERFORM 00190-BEGIN-INITIALIZATION THRU 00190-END-INITIALIZATION !!!!!!!!

    MOVE CORRESPONDING 050-INPUT-RECORD TO 050-OUTPUT-RECORD !!!!!!

    AAAAAAAAAAAAUGH!!!!!!!!!!!!!!!!!!!!!!!

    Looks like your Cobol program finally became self-aware.

    Proof that sometimes Pointy-Haired Bosses are absolutely correct, and that consciousness can be a serious impediment to productive work.

  • Sa (unregistered) in reply to Tim
    Tim:
    Holy, Holy Crap.

    I'm 31. I don't really know much about punch cards. But after reading all the comments (not the parent story, kinda boring), I am SOOO glad I wasn't alive in the punch card era. I mean, WTF??

    Actually, it was really kind of fun. Keep in mind that this was all batch processing. The term "interactive" hadn't been invented yet. Writing code involved writing out your program on coding sheets and then punching (or having someone punch) what you wrote onto punch cards. You then grabbed appropriate "pre-punched" JCL cards and stuck them onto the front of your punched deck (extending any program specific JCL cards that you included in your original coding sheets).

    For small decks, you bound them together with a rubberband. Large decks you placed back into the card box careful to keep them in order. You wrote your name on the deck (or box) with a sharpie. Then you placed your deck into an input bin (a two sided shelf in the operator's room just outside of the computer room.

    Sometime later, the operator would grab your deck along with a bunch of other decks from other programmers. He would remove the rubberbands and cram them all together into the input hopper on the card reader and hit the "Go" button. The card reader would do its thing and 8 out of 10 times it would read all of the loaded card decks without jamming or tearing the crap out of a bunch of paper cards.

    Later (on the order of a half hour to eight or ten hours depending upon how busy the system was) your job would run. Printed output from your program would eventually get printed by the huge printers inside the computer room.

    When the stack of print outs got big enough, the operator would tear off the stack of pages and carry it into the operator's room. He would then spend five or ten minutes separating the individual printouts. He would then shove the printouts into shelves organized alphabetically by user name.

    You as the programmer then went to the shelf, picked up your printout, took it back to your desk, and looked it over. Often, you were presented with a couple of pages of compiler syntax errors resulting from a combination of your dumb programming logic and weak typing skills.

    You debugged the code and marked up your print out to correct the errors. You then returned to the card punch machine and re-punched the cards that contained the errors and replaced them in your deck.

    And then you repeated the input/run/output process all over again.

    When you finally got a clean compile and a fully debugged program, you treated the resulting card deck like "gold". The good news was that some of the card punch machines had a "copy" mode that allowed you to automatically create a duplicate of your card deck. It would even automatically add sequence numbers in columns 72-80 of the generated copy. So you distributed copies of the program to users and never let the original out of your sight.

    Programming using punch cards was really quite fun and it taught important lessons. Turn around for just a simple compilation and test run took so long that you were extremely careful every step of the way. You double and triple checked all of your logic and did everything in your power to weed out syntax errors before attempting a run.

  • Jana Vasseru (unregistered) in reply to Escalator

    I had a similar issue several times in a small company. It has only about 20 networked computers and a domain server, mail server and a router all of which are actually housed in wooden table cabinet. The cabinet itself is quite unfortunatelly suited in a small conference room. Appart from the two servers and the router the cabinet also housed a 3 UPS units and a couple of switches, a cable modem, a couple of 10/100 ethernet converters and maybe some other stuff like that. In order to be able to plug the switches and convertors in the UPS, there was a custom made extension cable which looks like an ordinary extension cable (so that you can plug the various plugs) but the other and plugs into the UPS. Well of course i thought that one day someone might plug something horrible into it - so i taped the empty sockets in the extension cable with bright yellow tape and written on it "Do not unplug anyting. Do not plug anything new into me! Especially NO vacuum cleaners, i hate vacuum cleaners." Well then, someone hired a new cleaner. Few weeks later we lost one UPS. Someone silently send it to repair and plugged everything into the remaining two. Few weeks later i was by pure chance there in the evening fixing something. At the same moment i heard the vacuum cleaner start, the network went down. I went to the server room, found a beeping and blinking UPS and half of the cabinet dead. The conversation with the cleaner went roughly like this:
    "Umm, hi, what actually happened here?" "what do you mean?" "you know, the beeping - did the power go out or what?" "oh that, i don't know" "haven't you touched the cabinet or the cables or something?" "no" Then i noticed, that she hadn't the extension cord to the vacuum cleaner - they used to have a very long one actually tied to the vacuum so that they can plug it in one room and vacuum all the offices at once. "Where is the extension cord to the vacuum cleaner?" "what?" "that long white cable which used to be tied to it" "oh, that long rope? i removed it, it was very cumbersome, i don't know who put it on the vacuum in the first place" knowing that most of the sockets were hidden behind some furniture i asked: "So, where exactly thit you plug the vacumm in? there is not a socket here." "oh yes there is" Then she reached in the server cabined - from behind thru the hole for the cables, dragged the extension (and a couple of ethernet cables with it), unplugged one of the switch plugs (the one just few milimeteres above the big red text "NO vacuum cleaners" and said: "see? here is an extension" me: "do you have problems with eyes?" "no, why?" "can you read?" "what?"

    But there is no wtf there, it's just plain old stupidity. I replaced the text with a skull pictogram.

  • Paul Cull (unregistered) in reply to Otis P Criblecoblis

    "That is data processing" -> ie DP

    The way to remember the correct order of Identification, Environment, Data e Procedure divions.

    Horrors.... I can still remember that junk too!

    Paul

  • SomeCoder (unregistered) in reply to Jana Vasseru
    Jana Vasseru:
    ... me: "do you have problems with eyes?" "no, why?" "can you read?" "what?"

    Wait! Finish the story! I want to know what she said after you beat her over the head with the sign :)

  • (cs) in reply to Jana Vasseru
    Jana Vasseru:
    I had a similar issue several times in a small company. It has only about 20 networked computers and a domain server, mail server and a router <and snip and/<"Do not unplug anyting. Do not plug anything new into me! Especially NO vacuum cleaners, i hate vacuum cleaners."<and snip and/> "Umm, hi, what actually happened here?" "what do you mean?" "you know, the beeping - did the power go out or what?" "oh that, i don't know" "haven't you touched the cabinet or the cables or something?" "no"<and snip and/>i asked: "So, where exactly thit you plug the vacumm in? there is not a socket here." "oh yes there is" Then she reached in <and snip and/> "can you read?" "what?"

    But there is no wtf there, it's just plain old stupidity. I replaced the text with a skull pictogram.

    Is it just me, or does it seem like a worth-while investment to pay cleaners in data centers half as much again as minimum wage, train them to read, give them a two-week course in a closed room where they get to play games on a "server" and somebody randomly comes in at odd hours of the day or night and unplugs the server/spills coffee into the router/leaves Bon Jovi playing at full volume through a boom-box in a wall-safe for which they don't have the combination?

    Just asking.

  • (cs)

    Where can I find one of these cool card punching machines?

  • Sa (unregistered) in reply to TheDude
    TheDude:
    Where can I find one of these cool card punching machines?

    If you are running *nix and have the traditional games installed then you already have one. Just type:

    "bcd Hello World"

  • Dave Platt (unregistered) in reply to Otis P Criblecoblis

    Worse yet:

    ALTER 00190-BEGIN-INITIALIZATION TO 00993-RANDOM-SURPRISE.

  • CynicalTyler (unregistered) in reply to Otis P Criblecoblis
    Otis P Criblecoblis:
    I thought I had purged all COBOL from my brain, but now with your mention of ENVIRONMENT DIVISION, FILE SECTION, and WORKING-STORAGE SECTION it's coming back.

    DATA DIVISION !!!!!!!! PROCEDURE DIVISION !!!!!!!!!

    PERFORM 00190-BEGIN-INITIALIZATION THRU 00190-END-INITIALIZATION !!!!!!!!

    MOVE CORRESPONDING 050-INPUT-RECORD TO 050-OUTPUT-RECORD !!!!!!

    AAAAAAAAAAAAUGH!!!!!!!!!!!!!!!!!!!!!!!

    I must be too young, I don't know what the "AAAAAAAAAAAAUGH!!!!!!!!!!!!!!!!!!!!!!!" command is supposed to do.

  • Tore Sinding Bekkedal (unregistered)

    That actually does not look like it is a standard IBM card since most cards I've seen have rounded corners.

    The only exception to this rule I have seen was a diagnostic for a soviet computing system. I therefore believe the illustration photo might be a USSR card.

  • Carlos92 (unregistered) in reply to shadowman

    I saw cleaning people do thing I couldn't believe...particularly, tripping the circuit breakers for servers with the cleaning machines and not telling you, burning electrical outlets, and so on. I wouldn't think any cleaning lady story can be apocryphal, they exceed imagination.

  • D C Ross (unregistered)

    My "Cleaning Lady Story". or rather "Cleaning Guy Story", took place at a small company where I worked as a VMS admin. Never mind that they had retired all of their Vaxen and Alphas left by the time I started, as that's another story.

    The server room was just a couple of offices with the walls knocked out and a raised floor put in (so that when the air conditioner leaked there would be somewhere for the water to go). Although I tried valiantly to introduce concepts like "rack mounting" and "Unliftable Power Supplies", the inside of the room was mostly filled with tables and desks covered with towers of every description. A few of the higher end servers had accidentally been ordered with redundant power supplies, but in most cases both power cords wound up in the same little white power bar underneath the desk anyway.

    The 'Cleaning Guy' part of the story came when the company was going through some expansion and had sent a quite a few more desktops into the server room to pretend they were servers. This naturally meant that the draw on the circuits in that room was a bit heavier, but it was still well within the limits so nobody was all that worried about it.

    Naturally, we soon started seeing circuit breakers popping open and servers crashing in the early evenings after everyone had gone home. The first time the director of IT shrugged, closed the breaker again and powered everything back on. After it happened a few more times he started to get suspicious.

    As it turned out the nighttime cleaning staff, who were unable to enter the server room anyway because it was locked, came in to vacuum the carpets in the hallway just outside of it. The only outlet in that hallway was a leftover from the Time Before The Server Room, and was on the same circuit as half of the outlets on the inside. The combined draw from all of the servers inside the room plus the vacuum cleaner on the outside was enough to overload the circuit and cause nature to take its course.

    Once this was all figured out the proper solution was immediately implemented. The director of IT took out a roll of masking tape, covered up the offending outlet and wrote "DO NOT USE" on the tape with a red pen. Problem solved.

    Until the day when one of the new cleaning guys forgot to bring an extension cord and asked the innocent question "Hey, is it okay if I move this tape out of the way?", but that's another story and you already know how it ends.

  • Andrew (unregistered) in reply to Escalator

    Waiting for permission... to check the disk? Fail.

  • shortbaldman (unregistered) in reply to Otis P Criblecoblis

    Aw, cmon! COBOL wasn't all that bad! If you had the self-discipline to use appropriate procedure and variable names, you could pick up a COBOL source after years and still see that it was self-documenting.

    Mind you, if one was bouncing back and forth from COBOL to C it was a pain to remember it was a HYPHEN in COBOL variable names and an UNDERSCORE in C.

  • European (unregistered)

    Reminds me of a story where a program shipped from the US to France in the sixties wouldn't run. Customs had collected samples from the stack of punchcards ...

  • synp (unregistered) in reply to Steve
    Steve:
    Aanyone know how many of those punch cards could be read before the mainframe ran out of relays to store the data?

    I know the newer high-tech mainframes had vacuum-tubes.

    I am trying to get our company to upgrade to a state-of-the art solid-state mainframe with these new-fangled transistor thingys.

    Joking aside, I assume these mainframes did use transistors and not integrated circuits?

    When they're talking about "mainframes" in the '60s they're usually referring to System/360. These were introduced in '64 and definitely had IC. The brochure showed the later-to-be-cliche picture of a small black square on someone's thumb with a caption saying this is the whole computer. So what were all these huge boxes around? Power, water cooling, and storage.
  • (cs) in reply to oldie

    Happy days indeed. I remember being so used to typing everything in UPPER CASE ALL THE TIME that I (and many others) actually resisted doing anything in lower case until we really had to. And as for having to hit the shift button for underscore rather than good-old-hyphen, well that was culture shock. And I still have a nagging worry about file names that exceed 8 bytes...

  • M.I.K.e (unregistered) in reply to Sa
    Sa:
    You as the programmer then went to the shelf, picked up your printout, took it back to your desk, and looked it over. Often, you were presented with a couple of pages of compiler syntax errors resulting from a combination of your dumb programming logic and weak typing skills.

    One of my professors told me that in the very beginning all the got was a program counter from the compiler. Then they had to look up in a chart what kind of compile error this address was related to.

    CAPTCH: causa (quite fitting)

  • d000hg (unregistered) in reply to Carlos92
    Carlos92:
    I saw cleaning people do thing I couldn't believe...particularly, tripping the circuit breakers for servers with the cleaning machines and not telling you, burning electrical outlets, and so on. I wouldn't think any cleaning lady story can be apocryphal, they exceed imagination.
    It's the company's fault: a)for not explaining what cleaning staff can and can't touch. To a poorly educated cleaner, your production server doesn't look like anything special. b)for letting cleaners into server rooms and/or putting servers in non-secure areas.
  • synp (unregistered) in reply to d000hg
    d000hg:
    It's the company's fault: a)for not explaining what cleaning staff can and can't touch. To a poorly educated cleaner, your production server doesn't look like anything special.
    Typically this is farmed out to some contractor with employee churn so great that it puts to shame all IT and high-tech companies.
    b)for letting cleaners into server rooms and/or putting servers in non-secure areas.
    And what would you have them do? Not clean the room with the servers? Have the CompSci grads do it?
  • dg (unregistered) in reply to Ollie Jones

    One of the classic tricks for keeping track of the order of a big deck of punched cards was to stack up the deck (in the right order) and then use a felt-tip pen to draw a big diagonal line across the top of it. It made life so much easier when you dropped the deck and had to resort it.

  • JerseyDog (unregistered) in reply to Otis P Criblecoblis

    I started programming in COBOL back in 1980, we ALWAYS put numbers on the cards - good thing too, because on more than one occaision the operators (the folks who ran the jobs, programmers were NEVER allowed in the computer room!) would drop the deck on the way from the card drawer to the reader. I think there was an un-official competition to see who could carry the most cards. You were SOL if there were no numbers...

    And I DO remember the havoc caused when you punched ALL the holes in the card :) (hee hee!)

    BTW, those little bits make GREAT confetti!

  • grg (unregistered) in reply to synp

    You make the common mistake of believing what you see in sales literature.

    IBM nor anyone else used IC's until the very late 60's. It just wasn't cost effective until the industry had matured enough. By 1968 there was a standard line of IC's (The TI 74xx series) that had enough functions per chip, and in an economical plastic package, and sourced by several manufacturers. before then IC's were very expensive, needed special sockets, and were single-sourced.

    What IBM had in the 360's was a "hybrid" IC. Lines and resistors were laid down by plain old silk-screening. Transistor chips were glued down by hand and little gold bond wires used to hook them up. The whole shebang was about the size of a postage-stamp. About 1000 times the size of a 74xx series chip. It took several large cabinets of these hybrids to make a CPU.

  • Death (unregistered) in reply to Calli Arcale
    Calli Arcale:
    Complaining to the cleaning company had little effect; the staff didn't understand why the smocks might be required if they weren't going to be touching any of the hardware. (At least, not *deliberately* touching it.) So most of us have adopted the simple strategy of keeping our wastebaskets on the safe side of the stripey line. ;-)

    I worked for an electronics manufacturing company and it was made very simple. EVERYBODY entering production wears ESD shoes and ESD coat and is ESD compliant tested no matter if you cross the lines or not or what is your position in the company. Cleaners had light blue coats, mechanical/maintenance dark blue(dirty work), the rest wore white coats. Anybody seen in production without a coat or ESD shoes got their ass whipped and it did not matter who it was. If it was someones visitor then that someone got theirs. That is really the only solution that works.

  • kwah (unregistered) in reply to frustrati
    frustrati:
    ...

    I have seen my share of off-by-one-element sums and it is usually quite easy to spot the one missing element. If they had paper records, the developer should have compared the computer records to those and the fact that a card was missing would have been easy to spot. Lazy problem determination!

    ...

    err, i thought it'd be quite obvious that the card was only missing for maybe upto half an hour each week in the evening, when most of the debugging / error checking would have been after the cleaner has placed the top-most card back on the top i assume ..

    seriously, did nobody else think of this?

  • (cs) in reply to kwah
    kwah:
    err, i thought it'd be quite obvious that the card was only missing for maybe upto half an hour each week in the evening, when most of the debugging / error checking would have been after the cleaner has placed the top-most card back on the top i assume ..

    seriously, did nobody else think of this?

    jake vinson:
    Nonchalantly, she reached into the punch card bin and swept the dirt onto one of the cards, picked it up and carried it to the trash, and threw away the card with the dirt.
  • (cs) in reply to James
    James:
    So, as a naive C++ native speaker who was still in kindergarten when the Apple ][ came out, I'm having trouble grokking the problem here. If I wanted to parse, say, a block of data in memory, I'd either a) read the size, then read [size] bytes of data, or b) read data until I hit a predefined delimiter. If the cards have a sequence number, the only way to miss one without noticing is if the one she tossed was the last one. But in that case, either a) there's not enough data to meet the stated size, or b) she'd have thrown out the card with the delimiter. Or were programmers back then so stupid they just read until people stopped feeding in cards?

    There. I highlighted the answer in your own reply... I guess being a "naive C++ speaker" means you lost your ability to think somewhere along the way.

    If you're reading a text file until you hit the EOF marker, and someone goes in and deletes a line in the middle of the file, can you tell? (Clue for the clueless: No.) Using a "predefined delimiter" to indicate the end means that, until you hit that delimiter, you have no idea how much data you're going to read; if you knew how much ahead of time, you wouldn't need the delimiter then. Right?

    Maybe an actual illustration helps. Let's say I'm supposed to read data from the list below until I hit the predefined delimiter "X", which indicates the end of data. Here's the initial data:

    1 1 1 1 1 1 X

    Now, I go in and delete a line (any line that's not the one containing "X"):

    1 1 1 1 1 X

    Which line did I delete? Can't tell? Does that make you one of those programmers "so stupid they just read until people stopped feeding in cards"?

    Jeez - it never ceases to amaze me how people lose their ability to reason when presented such simple problems.

  • (cs) in reply to Izkata
    Izkata:
    Then why did the code fix itself each day?

    Were the punch cards recreated every single day/every single run?

    No. Data was never changed, no matter what. Even accounting data - they picked a really good day (financially speaking) and just used that same data every day thereafter. It made their stock prices really good, 'cause they always showed a profit.

    Try and use your head a little. It'll be a really nice change for you.

  • (cs) in reply to KenW
    KenW:
    James:
    So, as a naive C++ native speaker who was still in kindergarten when the Apple ][ came out, I'm having trouble grokking the problem here. If I wanted to parse, say, a block of data in memory, I'd either a) read the size, then read [size] bytes of data, or b) read data until I hit a predefined delimiter. If the cards have a sequence number, the only way to miss one without noticing is if the one she tossed was the last one. But in that case, either a) there's not enough data to meet the stated size, or b) she'd have thrown out the card with the delimiter. Or were programmers back then so stupid they just read until people stopped feeding in cards?

    There. I highlighted the answer in your own reply... I guess being a "naive C++ speaker" means you lost your ability to think somewhere along the way.

    If you're reading a text file until you hit the EOF marker, and someone goes in and deletes a line in the middle of the file, can you tell? (Clue for the clueless: No.) Using a "predefined delimiter" to indicate the end means that, until you hit that delimiter, you have no idea how much data you're going to read; if you knew how much ahead of time, you wouldn't need the delimiter then. Right?

    Maybe an actual illustration helps. Let's say I'm supposed to read data from the list below until I hit the predefined delimiter "X", which indicates the end of data. Here's the initial data:

    Now, I go in and delete a line (any line that's not the one containing "X"):

    Which line did I delete? Can't tell? Does that make you one of those programmers "so stupid they just read until people stopped feeding in cards"?

    Jeez - it never ceases to amaze me how people lose their ability to reason when presented such simple problems.

    What he was saying, and you completely ignored, was that the ONLY way that you, as the operator, would not be able to tell from the sequence numbers that a line had been deleted was if the X (being the last one) was the one that was deleted.

  • (cs) in reply to Anon
    Anon:
    JaySee:
    Can someone who knows how punch cards work explain to me why this is a problem? Did she use a card that was already punched, and thus threw off the computations the machine made based on the cards?

    Punch cards work like this: You write code, the code turns into cards that get punched, the computer runs off the punched cards. So if she was using a punch card, that card was no longer there FOR them to run. It'd be like commenting out a random line of C code.

    Yeah, but I have a feeling that commenting out a random line of C code would cause the system not to compile / run, at least most of the time.

    Therefore, failure to make analogy: 1 Explanation of punch cards: 0

Leave a comment on “A Training Issue”

Log In or post as a guest

Replying to comment #:

« Return to Article