You might think that New Jersey would have changed its system after this – and that COVID was COBOL’s last gasp. Not enough. The state’s new unemployment system came with many improvements in quality of life, but on the backend, it was still made possible by mainframes running the ancient language.
COBOL, short for Common Business-Oriented Language, is the most widely adopted computer language in history. By the year 2000, 80 percent of the 300 billion lines of code were in COBOL. It is still in widespread use and supports a large number of government systems, such as motor vehicle records and unemployment insurance; On any given day, it can handle approximately $3 trillion of financial transactions. I consider COBOL to be a kind of digital asbestos, which was once almost ubiquitous and is now incredibly dangerously difficult to remove.
COBOL was first proposed in 1959 by a committee consisting of most of the American computer industry (including Grace Hopper). It called for “specifications for a common business language for automated digital computers” to solve a growing problem: the expense of programming. Programs were custom-written for specific machines, and if you wanted to run them on something else, it meant an almost complete rewrite. The committee approached the Department of Defence, which happily accepted the project.
COBOL’s design distinguishes it from other languages then and now. It had to be written in plain English so that anyone, even non-programmers, could use it; Symbolic mathematical notation was added only after much debate. Most versions of COBOL allow the use of hundreds of words (Java allows only 68), including “is”, “then” and “since”, making it easier to write. Some have even said that COBOL was intended to replace computer programmers, who occupied a rare position in many companies in the 1960s. He was a master of a technique that most people could barely understand. COBOL’s designers also hoped that it would generate its own documentation, saving developers time and effort in creating it. Easy to maintain for a long time.
But what does it mean to be readable? Programs are not books or articles; They are conditional sets of instructions. While COBOL could transform the complexity of a single line of code into something anyone could understand, this distinction broke down in programs running thousands of lines. (It’s like an Ikea assembly manual: Any step is easy, but somehow the thing still doesn’t come together.) Furthermore, COBOL was implemented with a piece of logic that became dispensable: the GO TO statement, an unconditional branching mechanism that rockets you from one section of a program to another. The result was “spaghetti code”, as developers like to say, which made self-documentation important.
Many computer scientists had problems with COBOL from the beginning. Edsger Dijkstra famously condemned it, saying, “The use of COBOL paralyzes the mind; therefore, its teaching should be considered a criminal offense.” Dijkstra also hated the GO TO statement, arguing that it made programs almost impossible to understand. There was a certain degree of real snobbery in this: COBOL was often seen as a purely utilitarian language intended to solve boring problems.
Jean Samet, one of the original designers, saw it differently – the language had the complex task of representing complex things like Social Security. Or as another defender wrote, “Unfortunately, there are many business application programs written by programmers who have never had the benefit of well-taught structured COBOL.” Good COBOL was indeed self-documenting, but a lot depended on the specific programmer. Fred Gruenberger, a mathematician at the RAND Corporation, put it this way: “COBOL, in the hands of a master, is a beautiful tool – a very powerful tool. COBOL, as it were controlled by a low-ranking clerk somewhere, would be a miserable mess.”
<a href