Dysmey Post > Essays > Computing > COBOL


This was written on the first week of August 2008.

California, the state of I want it all and I don't want to pay for it.

Arnold Schwartzenegger, the Sie werden dafür bezahlen müssen, oder Sie werden nicht haben! governor of said state.

Budgetary pain, as said governor orders 200,000 state peons on minimum wage.

COBOL, the Common Business Oriented Language, which is the reason why it is not even possible to reduce the wages of said peons (well, not immediately), as there is almost nobody who writes programs with it anymore.

And that is the way of it.

The article on which the Slashdot entry is based calls COBOL a Vietnam-era computer language so outdated that many college students don't even bother to learn it anymore. Another entry, trying to claim that the language might come back, resulted in gales of laughter.

Well, that not entirely true that there is now almost nobody to writes in COBOL. It is just that those happy few are taken up by those other businesses, banks and governmental entities that have their own COBOL code to maintain. And they do not want to share. And they will grab whatever COBOL coder just happens to be free. That is the main reason why Herr Schwartzenegger's firing of the state government's temporary COBOL programmers was thick-glass myopic: They might not come back.

Yes, nobody teaches COBOL anymore because nobody wants to learn it anymore. COBOL was never a hacker language like C or Java or the interpreted script languages. This is partly due to the mind-bogglingly verbose nature of the language itself. Mainly, however, it is due to the academic contempt for COBOL, which in turn has rubbed off on the college-born hackerdom that helped build the Internet and the cultures of both it and the personal computer. Computer academicians were scant among the collegiate, corporate and Pentagon suits that created the language in 1959; and they neither forgave nor forgot it.

How much does hackerdom hate COBOL? Here is COBOL's entry in the Jargon File:

A weak, verbose, and flabby language used by code grinders to do boring mindless things on dinosaur mainframes. Hackers believe that all COBOL programmers are suits or code grinders, and no self-respecting hacker will ever admit to having learned the language. Its very name is seldom uttered without ritual expressions of disgust or horror. One popular one is Edsger W. Dijkstra's famous observation that The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.

Thanks to academic contempt — which, when COBOL was taught in the 1970's and 1980's at both Purdue and Ball State, relegated its teaching to graduate assistants — COBOL stayed in the business, banking and government worlds. That meant it was gathering cobwebs in the back office while the personal computer and Internet revolutions came and went. But it still existed with its tribe of programmers maintaining old but still important systems. Until the California budget meltdown, the only time people ever heard of COBOL was the Y2K Scare, when too many banking and business code had too many two-digit PICTURE clauses for their year fields. Back then was when O'Reilly Media, the publishing house in service to hackerdom, issued their only book that had a COBOL primer.

It is not that COBOL had no effect on the rest of the computing field. It was COBOL that gave it the ideas of the separation of code and data, of the record as a grouping of different data types, of the file as an off-line storage of data separate from the program. These ideas still exist in one form or another. But apart from one article in an ACM monograph from 1981 on programming language history, there has been nothing written that points this out.

Yet, it is the equal power of the corporate and government worlds that keeps COBOL alive. That, and a parsimony that keeps ancient COBOL code in accounting, payroll, and document systems alive long after their shelf life has expired. It is this parsimony that helped bring about the Y2K Scare. And those systems are still with us. That is why the State of California is in this crisis. While it throws money at every other worthless thing, it does not throw it at writing more modern, more efficient systems written in anything but COBOL.

In the meantime, the language is no longer taught, and the current set of COBOL programmers is aging. One IT analyst suggests making them teach COBOL.

[C]ompanies that are having trouble finding experienced Cobol programmers should hire programmers with other skills — especially business skills and applications knowledge — and train them in Cobol internally. [The analyst] says companies should ask their senior Cobol programmers to train the younger ones. Many of these older workers don't want to learn new technology and aren't suited for management positions. So their career path is to mentor new programmers, he says.

There are problems with that idea. A programmer with other skills may not want to learn COBOL, or more precisely, wants to learn something other than a language that is archaic by computer standards. If the programmer realizes that COBOL is required of them, they may well bail out. On the other side of the hall, a programmer who no longer wants to learn new technology is one who is at career's end, for whom there is no career path. That is, unless, perhaps, that career is somewhere other than their current employer, and doing something other than programming.

The real problem is that big business and big government created a programming language and environment, and invested a small fortune in them. Meanwhile the the people who were supposed to teach that language and environment are ignored, probably on the supposition that the eggheads would fall in line to supply the big guys with their programmers and analysts for that environment.

The teachers did not fall in line. They damned the langauge and consigned its teaching to graduate assistants or to vocational schools. The budding hacker community adopted the teachers' hostile attitudes to the language due to its verbose ugliness. Time passed; as the mainframe was pushed aside first by the minicomputer in the 1970's, then by the microcomputer in the 1980's, then by the Internet in the 1990's, the language was pushed aside with it.

As the mainframe still exists, so does COBOL. But COBOL exists in a world of money and status, in the ghetto of big business and big government, where the investment bankers are the pushers, where the entertainment world is the pimp. In that freakish world the programmers wear the suits and ties, and are supposed to be motivated by money and status. That is why this world falls drunk on its face when confronted with the values of hackerdom; and when it gets back up it spews slanders in the popular media it funds and controls.

This sort of besotten ignorance, made doubly evident by the San Francisco network fiasco, makes the city and state governments of California — the very state that is home to Stanford University (a hackerdom nexus) and Silicon Valley — figures of both fun and shame in the programming world.

This is an update to the original text, written on 20 September 2008, in response to a veteran writer on the programming magazine Dr. Dobb's.

Michael Swaine wrote an editorial on COBOL, starting with a rehash on Herr Schwartzenegger's attempt at penny-pinching.

Because California's payroll systems are written in antiquated Cobol code, it would take six months to implement the change and nine months to restore salaries later. That's if we had the Cobol programmers to do the job, which we don't, because you fired them last week, Governor. And we can't hire them back because nobody's going to take a pay cut from Social Security to program Cobol for minimum wage.

Yeah, and after all that bullcrap shovelled by Herr Schwartzenegger and the legislators of the California Staatsrat, it will be hard to get those COBOL programmers to come back to work for the State for any wage.

Anyway, there are points that Mr. Swaine is trying to make. Here is how I see what he is trying to say. COBOL is still the most widely used language, but that is because there is so much legacy code out there. There is new code written in COBOL, but it is written to prop up the legacy code. Businesses have no trouble porting COBOL code from one computer to another, because COBOL has existed — almost unchanged — for so long that it can be considered the most portable of languages, more portable than even C (which has changed over the years). And there is so much COBOL-based code that it has long been worth it to write plugins to translate COBOL output to XML or other markup languages for the Web.

All this is true. So what?

COBOL is still despised by the academic community. It is still despised by hackerdom. It is still despised for historical reasons that would not change, no matter how modern the tools it can now use, no matter how much demand there is for COBOL programmers, no matter how much pressure that Microsoft and IBM can exert.

I have no doubt that COBOL will persist, for the same reason LISP/Scheme will persist: Because the social groups that created both will still require both to maintain their systems. That does not mean either will grow or expand beyond their social groups. COBOL is too baroque to write in, just as LISP/Scheme is too weird to get one's mind around.

Code grinder is one of the rudest things you can call a hacker. The Jargon File definition below is not pretty. For the recond, RPG is even more primitive than COBOL and is not taught anywhere anymore.

A suit-wearing minion of the sort hired in legion strength by banks and insurance companies to implement payroll packages in RPG and other such unspeakable horrors. In its native habitat, the code grinder often removes the suit jacket to reveal an underplumage consisting of button-down shirt (starch optional) and a tie. In times of dire stress, the sleeves (if long) may be rolled up and the tie loosened about half an inch. It seldom helps. The code grinder's milieu is about as far from hackerdom as one can get and still touch a computer; the term connotes pity.