Monday, June 12, 2017

Grace Hopper, COBOL Programming, and the Law of Evolutionary Potential #Science

Rear Admiral Grace M. Hopper, 1984

Grace Hopper graduated Phi Beta Kappa from Vassar in 1928 with a bachelor's degree in mathematics and physics and earned her master's degree at Yale University in 1930

It may seem gratuitous to mention but the Rockhouse believes it's valid in the context of feminism to say Hopper did not wear all that fake fruit salad on her chest often seen by Generals testifying before the Senate.  She had no need to impress anyone when her work spoke for itself and she was recognized for it but mostly among the cognoscenti since she's a Goddess to computer programmers, especially systems folk.

Also, just because we recognize there are mean-spirited cranks, we quickly recognize, no, she was not gay so take a walk, mean spirits.

Note:  we don't care about gayness but we do care about it being used to deride someone.

Grace Hopper is one of the legends of feminism but few people know of her even when she was programming computers in the early Forties and she was a primary force behind the idea of platform independency via software compilers and she was the major force behind the development of the COBOL programming language which has been a staple of the business world in a major way ever since.  And no-one even knows her name.  (WIKI:  Grace Hopper)

Although quite a good example, the purpose of the article is not about marveling at the wonders of feminism even when few have championed it more actively than she through her accomplishments.

COBOL lives to this day as arguably the most successful software compiler which has ever existed since the code generated by that COBOL compiler is still in heavy production as one of the software foundations of the free world.  That will likely sound like hyperbole but please do continue.

Amazingly enough, the world of high-end mainframe computer systems did not collapse after I left but possibly there is surprise to know COBOL is still compiling software for them.  (eWeek:  COBOL: 10 Reasons the Old Language Is Still Kicking)

We know the young grasshoppers with their Ajax and their Javascript have been telling people COBOL is in that looney Ark Park in Kentucky so that shows dinosaurs used it.  While their software Creationism is, oh, so amusing, we will give that some time since one of the coolest things about computers is a new compiler and one of the worst things of computers is converting old compiler code to use a new one.

Come one, come all, even software Creationists, to the review of the Law of Evolutionary Potential and, expressed in terms a politician would understand, it tells us it's a sight easier to build something new than it is to replace an existing facility of any kind, whether it's an obsolete infrastructure or an entirely virtual programming system.

The Rockhouse has already flogged the idea of the Law of Evolutionary Potential as it applies to highway systems which have been pushed past sensibility and practicality so no need to wear out my arm or your patience doing it again.  The system with COBOL is rather different since it's uniquely suited to purpose because it's written in a form of English and even uses verbs you would understand immediately.

In COBOL, if you want it to do something, the verb is PERFORM and, in general, the language takes that nature.  It's incredibly easy to learn but, as with most things, takes much longer to master.  I took a brief course to learn the language and was quickly writing code but that was enough to tell me, nope, this is not the language for me although I highly appreciate its suitability for purpose.

My background is in machine code and that's typically the most difficult because the coding is an almost one-for-one creation of machine code as you write since all the mnemonics used in assembler language represent machine instructions.  For one brief and hopefully painless example, there's the B mnemonic which represents a Branch which translates to X'47' in object code which is executable.  Typically a compiler of any kind works one or two levels higher in which it generates code which, in turn, will execute machine code.  The difference is subtle and far beyond anything we need here.

Assuming you read the article at 10 Reasons the Old Language is still kicking, you know COBOL is still in widespread use in the mainframe world and perhaps you dismiss that world, young grasshopper, but good luck using your ATM card or flying to Europe any time soon.  Such systems are almost invariably based on large-scale mainframe systems.

Dagwood: COBOL continues to exist because it's impossible to replace and, thus, it's an example of the Law of Evolutionary Potential?

That's correct but it's more harsh than it needs to be when COBOL still provides high value to the mainframe systems and business owners who keep them around.  The hardware isn't worth that much anymore since, relatively speaking, the value of that software is almost incalculable.

The Law of Evolutionary Potential is exemplified ... at Amazon.  Call up now and get free shipping with Amazon Prime.

In the example of Amazon, they decided, screw it with the mainframes, COBOL, or any of that so instead they replaced that entire IT universe with massive server farms running AJAX and who knows what else.  Amazon is a large-scale transaction processing system and that's precisely the thing mainframe business systems do best.  However, rather than trying to build something new within that existing framework, Amazon broke out to build something entirely new and different.

Dagwood:  so how is the Law of Evolutionary Potential bad for mainframes?

It isn't necessarily bad ... until you want to change it to something else.  IBM tried, somewhat arrogantly with PL/1 or Programming Language 1.  That was an arrogant name since FORTRAN and COBOL were first and second in whatever order you like and PL/1 was, at best PL/3.

Regardless, PL/1 is a comfortable language to write but it's a little more rigorous than COBOL insofar as it can be used relatively easily for scientific programming (i.e. software oriented to higher maths than typically needed for business purposes).  The IBM objective was likely to replace COBOL and FORTRAN with it but, we ironically note, COBOL and FORTRAN are still chugging whereas PL/1 is nowhere to be seen or, at least, not much.  Go forth to tell IBM about the Law of Evolutionary Potential if you like ... but they already know.

Note:  this got a bit more heady than I thought it might but, wtf, you're not politicians so we don't need to stay with two-syllable words although those who live that way can live in their prelapsarian delusions as they will.

No comments: