As an article at the Wired site reminds us, it was 51 years ago today that a meeting at the US Defense Department generated the initial impetus to the development of COBOL (an acronym for COmmon Business-Oriented Language), one of the first high-level computer programming languages (along with FORTRAN). As its name implies, COBOL’s focus was to be on business data processing, just as FORTRAN was originally intended for scientific and engineering problems. In both cases, the initial developers of the languages attempted to use syntax that would be familiar to the intended audience. FORTRAN used a pseudo-mathematical notation (I am ignoring the issue of data types for the moment):
INCOME = SALES - COGS
COBOL might have represented the same computation as:
SUBTRACT COST-OF-GOODS-SOLD FROM SALES GIVING INCOME.
As this example might suggest, COBOL was a very “chatty”, not to say verbose, language. One of the initial design ideas was that having programs written in a language that, at least superficially, resembled English would lead to clearer programs that could be read by non-technical users and managers. This was a nice idea that, as far as I know, never amounted to much; it is hard enough to get non-technical people to read documentation that is written in actual English. And I think most programmers would agree that, except in the initial learning stages, most significant errors are semantic, not syntactical.
Nonetheless, the introduction of COBOL and FORTRAN really was an enormous step forward for the craft of software development; the two languages shared the common idea that a program could be represented in a form that was independent of the particular machine on which it would be run. They represented early steps toward the idea of standardized computing, an idea that IBM developed with the introduction of the System/360 series of compatible computers in 1964, and one that is a commonplace today.
One of the early champions of the COBOL project was Grace Hopper, an officer in the US Naval Reserve, who was a Vassar graduate with a degree in math and physics, and subsequently a PhD in math from Yale. She was on the faculty at Vassar until 1943, when she obtained a leave of absence to enlist in the US Navy Reserve. She worked with many of the pioneers in computing, including work with Howard Aiken at Harvard on the Mark I computer. According to a story which may be apocryphal, she also coined the term “debugging” after a particular computer problem was found to be due to a moth squashed inside a relay. I also feel reasonably sure that she is the only female Naval officer to have retired three times, in 1966, 1971, and 1986, the last time as a Rear Admiral.
The original COBOL language was criticized — not without reason — as being too wordy and as encouraging the development of wildly unstructured programs. Edsger Dijkstra, structured programming advocate and author of the seminal paper, A Case Against the GOTO Statement, was not a big fan of COBOL:
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
A number of attempts have been made to introduce more structured language constructs into COBOL, but none of them has been notably successful. Still, an awful lot of the world has been run on COBOL; although it may now miss the mark in terms of details, its development was an important milestone in the development of computing.