Unix in 1979 – continued

Continuing my way off topic rant that will return to the original 🙂

So we’re sitting there in 1979 listening to this presentation from The Phone Company (pre breakup) telling us why we really should consider adopting Unix for our banking work…

so the questions start getting harder for the Phone Company friends…

Us:   So a lot of what we do is we maintain very large databases of customer information.   What kind of database support does Unix have that is built into the operating system or supported by AT&T?

AT&T:  Well, Unix is very fast at reading flat files into memory!

Us:   Hmmm…. but different applications and users are all interacting with that data in real time – it can’t be stored in memory.   Some of the data may even be on a computer in another city

AT&T:   Well, typically what happens is that if an application is that complicated (like our billing systems), each application develops its own database system to suit its needs

Us:  So you’re saying that if we use Unix, there is no fairly standard way to access a specific data record randomly using a key value like an account number

AT&T:  Yeah, that’s basically right.  Each application will have its own way of accessing the data it needs

Us:  So if we buy an application from 3rd party, only the people from that company will know how their database works?

AT&T:  Yes, that’s pretty much the way it is.   At AT&T, we write all of our own software, so that’s not an issue.   We are a government monopoly and have a guaranteed profit no matter how inefficient we are.

Us:  So if we buy two packages from two different companies – say a Checking Account system and a Time Deposit (CD) system, each package is going to have its own database?   We do a lot of sharing of data between applications.   How does record locking work to prevent concurrent updates corrupting data?

AT&T:   Hmmm…  well, Unix does support the idea of Semaphores.   Your applications could use them to create a kind of record locking.

Us:   Downstairs when you took the tour of the computer room, you probably noticed the 3800 printing subsystems printing out customer statements at 10 pages per second that are fed into the envelope stuffing machines that match up the checks for the statement with the printed statement.  We have to print 30,000 statements a day to keep up.  Can Unix do that?

AT&T:  Well, Unix supports Ghostscript and over 200 different types of dot matrix printers!

Us:   So we don’t have any people who know C.   Most of our people are trained in COBOL.   What compilers come with Unix?

AT&T:  C.   That’s all you’ll ever need.   Trust us – It will become the universal programming language.

Us:   All of our data is stored in EBCDIC.   Can Unix read or write a magnetic tape that contains EBCDIC data?

AT&T:  Not a problem – since we have no idea what a 9 track tape drive is or how to connect one to a computer, codeset conversion is the least of your problems!

Us:  But that’s how we interchange data with the Fed and Credit Bureaus

AT&T:  The Fed?  What is that?

So taking this back to the starting point – this is why there are so few people who studied computer science in college that end up doing programming for a living.   The CompSci major doesn’t know what they don’t know, but think they know everything.    There are probably 5 people in the world who actually make their living because they know how to write BNF.

Go to monster.com or your favorite job search web site and type in COBOL.  30 years after COBOL was declared dead, it’s still a highly sought after skill – one that no CompSci major would ever lower their standards to use.   So they work as Linux Admins baby sitting computers for $10 an hour writing great perl scripts to extract data from log files….  complaining how unfair life is and showing up at Occupy Wall Street protests 🙂

 

This entry was posted in Technology. Bookmark the permalink.

6 Responses to Unix in 1979 – continued

  1. zekepine says:

    My core languages in college were Pascal and C (mid to late 1980’s). COBOL was an elective course taken mostly as an afterthought to fill out the compsci major. I’ve been programming in COBOL ever since.

    • Art Stone says:

      Y2k was very important at NASDAQ – the SEC was making lots of noise about making sure that the exchanges were not going to have any glitches the first day of trading in January 2000. We had a separate test environment and operations staff specifically to test Y2k (where the clocks were changed to Dec 31, 1999 and run through the century change, etc….)

      Meeting Y2K compliance was a company wide goal that was going to affect the bonus of every employee if the goal was not met. One of the systems within my management responsibility had actual Y2k issues (most NASDAQ applications don’t retain data from day to day so had no date related issues).

      We were down to the last Friday that all the changes had to be submitted to QA for final testing to roll out in time (this application had to be fixed and in production before Jan 1st, 1999). So I discuss things with the project leader working for me. He assures me everything is squared away. The employee programmer – who was always whining about how stupid it was that NASDAQ was not using C – had made the changes to the COBOL programs (this was on TANDEM computers if you’re curious). He assured me that it had been thoroughly tested and was ready to go.

      So being the cautious person I am, I do one last look at the code changes…. being a “manager”, I really really was aware that I had to resist the urge to “fix code” myself, but I have some reason to not trust this particular programmer. I look at the changes made to the date related code…. Not wanting to erupt on a false alarm, I grab a contractor who I know understands COBOL and say…. “give a look at this COBOL code and see if you see anything wrong with it”…. He comes to the same conclusion.

      So I drag in the programmer and his boss….
      “So I’m looking at this change – where is the period at the end of this statement?”…..
      “Period??? Why would that matter?”
      “Oh God…. you don’t know what periods do in COBOL?”
      Programmer to his leader: “I told you I don’t know COBOL”
      “But even if you didn’t understand COBOL, you said it was all tested and worked – this coding error is so fundamentally wrong that every test you would have tried would have failed”

      To his boss: “You told me these changes went through the Y2K system and worked – that’s not possible”
      His boss: “Well, we installed it on the Y2K test system, but nobody wanted to actually test it. It’s not my fault.”

      Me to COBOL consultant: “Stand behind me and watch over my shoulder. There is no time left to test any of this. I’m going to fix this code and submit it to QA completely untested. We know for sure what I am looking at now is wrong”….
      Me to project Leader: “Go down to QA and explain the situation and what I’m doing so they know what to expect – we’ll talk on Monday about how you allowed this to happen”.

      So I rewrote all the Y2K changes and submitted them completely untested to go into the final Y2K certification test that weekend. QA did find one minor problem where I had missed one of the wrong changes….

      Do you think the Statute of Limitations is up yet?

  2. briand75 says:

    Hmm. I used ALGOL. It was never popular because it was invented in Europe. It was actually loop friendly (didn’t pulverize the stack with mounds of pointers) and was what we would now call “organic”. C is purported to have been invented/developed at Bell Labs. I think they took an awful lot of core compiler from ALGOL. I liked C and I liked Unix. I wrote COBOL but detested 88’s and such. Worst of all was Hollerith – he should be shot. I know he’s dead, but it would be for all of the suffering of punch cards when paper tape was light years ahead.

    Even after seemingly countless years, I still don’t get Linux. I understand Mac OS – it is *nix. I understand Windows – it is garage-ware. I can still do some Mainframe assembler and converse with you on such lofty topics as VM, MVS, IMS DB/DC, Hash, Heap, BTree and a thousand other acronyms. My brain is full of pretty much useless information.

    Does this qualify as a rant?

    • Art Stone says:

      ALGOL was a popular subject in Computerworld for a while. As I remember it, the US Military or maybe it was the entire government wanted to choose a “standard” programming language where the same language could be used to run IRS tax systems, the Space Shuttle, FAA’s radar systems and the navigation systems of military aircraft. It’s one of those ideas that sounded good in theory.

      My first job was using PL/1 – IBM’s attempt at creating a “universal language” – but it was a resource hog and no other vendor created a compiler. It had a unique tool called the Checkout Compiler – it was a little like Visual basic – an interactive debugger, but it did lots if extra checking like seeing if you were testing or using a variable that had never been assigned a value.

      Another quirky language I played with in college (my college didn’t have any compsci courses) was APL. It is a language designed for mathematicians. It has many builtin functions for manipulating arrays and vectors and uses Greek symbols for its operations, requiring a special keyboard. IBM had a statistics / graphing package that worked on the 3279 color terminal, so I actually did use it a bit. APL is referred to as a write once language. The code is so short and complex that not only will nobody else be able to figure out what it does, after a week you won’t be able to figure out your own code.

      One of my favorite sayings is “people who have only used C and *nix are convinced that it is the best tool for any job and can’t understand why everyone doesn’t agree”

      Object Oriented Programming has been the most fundamental different thing to come along. I’ve done some C++ but basically my C coding style evolved to being object oriented like, which was already what I did. NCNB had a COBOL coding standard that paragraphs should be named Pxxx-action-object to clearly define the purpose – this was part of what people called structured programming.

      So I create libraries that manipulate an object defined in a structure, and every function either returns a pointer to that object or is passed a pointer as the first parameter. That doesn’t give you function overloading, multiple inheritance, polymorphism and all that stuff – but strongly forces you to think about what you’re trying to do, and a C++ person would look at the code and immediately get what you’re doing.

      I’m still not comfortable in a 100% OOP way of doing things. At some point, PHP added Classes and other OOP functionality, which I think was a mistake,

      The associative array is incredibly powerful as a concept. I’m not sure where it originated – it’s clearly part of perl so it may have been Noam Chomsky, but I suspect it came from somewhere else.

  3. briand75 says:

    Amen to APL – what a kludge. Fortran is a math language.

    PL/1 joins IBM’s list of famous inventions – right alongside the PS/2, Token Ring networks, EBCDIC, TSO, and OS/2.

    I learned OO way before it was popular (with a very obscure compiler). First language to implement OO commercially was Java (AFIK) which I was a student of for years.

Leave a Reply