Hopper Invents the Computer Language COBOL

Grace Murray Hopper helped develop COBOL, the first user-friendly computer programming language, beginning the process whereby functional computer programs would eventually be created by amateurs and hobbyists as well as computer scientists.


Summary of Event

In 1959, Grace Murray Hopper had been involved with digital computers and computer languages almost as long as electronic digital computers had existed. Hopper, a mathematician, had been on the faculty at Vassar College when World War II began. She enlisted in the Navy and was assigned to the Bureau of Ordnance Computation Project to work with missile ballistics problems in 1943. In 1944, the Navy began using one of the first electronic computers, the Automatic Sequence Controlled Calculator (ASCC), designed by a team of International Business Machines International Business Machines (IBM) engineers headed by Howard Aiken, to solve these problems. Computers;programming languages
COBOL
[kw]Hopper Invents the Computer Language COBOL (Dec. 17, 1959)
[kw]Invents the Computer Language COBOL, Hopper (Dec. 17, 1959)
[kw]Computer Language COBOL, Hopper Invents the (Dec. 17, 1959)
[kw]COBOL, Hopper Invents the Computer Language (Dec. 17, 1959)
Computers;programming languages
COBOL
[g]North America;Dec. 17, 1959: Hopper Invents the Computer Language COBOL[06260]
[g]United States;Dec. 17, 1959: Hopper Invents the Computer Language COBOL[06260]
[c]Computers and computer science;Dec. 17, 1959: Hopper Invents the Computer Language COBOL[06260]
[c]Science and technology;Dec. 17, 1959: Hopper Invents the Computer Language COBOL[06260]
Hopper, Grace Murray
Aiken, Howard

IBM had given the completed machine, which was 15.5 meters long and 2.4 meters high, to Harvard University in 1944. The most advanced electronic calculating machine of its time, it performed approximately three mathematical operations per second, a speed that seemed very fast at the time. The ASCC became known as the Mark 1 Mark 1 computer and after the Mark 1 was pressed into service by the Navy, Hopper became the third person to work as its programmer.

Hopper’s interest in computer programming continued after the war ended. The first electronic computer, the Mark 1, had been built by IBM, but other business machine companies quickly began their own research and development programs. Instead of returning to her teaching career after the war, Hopper worked at Remington Rand and later Sperry Corporation. While she continued to serve as an officer in the Naval Reserve, she worked on software for the various successors to the Mark 1, including UNIVAC UNIVAC , the first large-scale commercial computer. By the early 1950’s, Hopper’s work with programming languages had led to her development of FLOW-MATIC FLOW-MATIC[FLOWMATIC] , the first English-language data processing compiler. Hopper’s work on FLOW-MATIC paved the way for her later work with Common Business Oriented Language, or COBOL.

Until Hopper developed FLOW-MATIC, digital computer programming was all machine-specific and written in machine code. A program for one computer could not be used automatically for another. Every program was both machine-specific and problem-specific in that the programmer would be told what problem the machine was going to be asked to solve and then would write a complete new program for that specific problem in machine code. Machine code was based upon the programmer’s knowing the physical characteristics of the computer as well as the requirements of the problem to be solved; that is, the programmer had to know what was happening within the machine as it worked through a series of calculations, which relays tripped when and in what order, as well as what mathematical operations were necessary for the problem to be solved.

Programming was a highly specialized skill, requiring a unique combination of linguistic, reasoning, engineering, and mathematical abilities that not even the mathematicians and electrical engineers who designed and built the early computers could be sure of possessing. Machine code is both complex and time-consuming to write, and while every computer still operates in response to the instructions or programming built into it, which is formatted in machine code, modern computers now can accept programs written in nonmachine code—that is, in various automatic programming languages. They are able to accept nonmachine code programs because specialized programs now exist to translate those programs into the appropriate machine code. These translating programs are known as compilers or assemblers, and FLOW-MATIC was the first natural language assembly program.

Hopper developed FLOW-MATIC after realizing that a need existed both to eliminate unnecessary steps in programming and to make computers more accessible to users. FLOW-MATIC was based, in part, on Hopper’s recognition that certain elements, or commands, were common to many different programming applications. Rather than writing a lengthy series of instructions in machine code, for example, to instruct the computer to begin a series of operations, Hopper theorized that it would be possible to develop commands in an assembly language in such a way that a programmer could write one command, such as the word add, that would translate into a sequence of several commands in machine code. Hopper’s successful development of a compiler to translate programming languages into machine code thus meant that programming became faster and easier. From assembly languages such as FLOW-MATIC, it was a logical progression to the development of high-level computer languages, such as Formula Translation or FORTRAN FORTRAN and COBOL.

High-level computer languages were developed to enable the programmer to write a personal program in a form close to English or standard mathematical notation, that is, in a form that the user was comfortable using. FORTRAN, a programming language developed primarily for use in science and engineering, is an example of a language that relies on mathematical notation and symbolism. Jean Sammet Sammet, Jean argues that FLOW-MAT1C—one of the first intermediary languages between machine code and modern high-level languages—was particularly significant for two reasons: the use of understandable English words for the operations to be performed and the data on which they are to operate, and the realization that the data designs can and should be written completely independently of the procedures to be executed. Prior to the development of FLOW-MATIC, the programmer had to translate the operations and data into machine code; following FLOW-MATIC, the compiler performed those operations.

Between 1955 (when FLOW-MATIC was introduced) and 1959, a number of attempts at developing a specific business-oriented language were made. IBM and Remington Rand Remington Rand Corporation believed that the only way to market computers to the business community was through the development of a language that business people would be comfortable using. Remington Rand officials were committed especially to providing a language resembling English.

The company position was that business people were not interested in writing symbolic formulas and would, in addition, prefer to write complex operations as a series of individual statements rather than nesting them. They also thought that any mathematical symbolism was unsuitable for a business data processing language. They argued that the average business person would prefer to enter programming commands not as (a × b), for example, but instead as MULTIPLY A BY B or A TIMES B. None of these attempts at developing a business-oriented language succeeded, however, and by 1959 Hopper and others in the United States Department of Defense had persuaded representatives of different companies of the need for cooperation.

On May 28 and 29, 1959, a conference sponsored by the Department of Defense Department of Defense, U.S. was held at the Pentagon. Approximately forty representatives from government agencies, computer manufacturers, and other interested parties met to discuss the problem of establishing a common language for the adaptation of electronic computers for data processing. Three committees were created: the Short Range, Intermediate Range, and Long Range. The Short Range Committee adopted the ambitious goal of meeting its objective within three months. Members of the Short Range Committee consisted of representatives from six manufacturers and two government agencies. This committee represented the first attempt ever to have an intercompany committee specify a machine-independent language, and Sammet reported that many participants initially were not very optimistic about their chances of success.

Surprisingly, the committee succeeded, and the first distribution of COBOL was accomplished on December 17, 1959. Sammet reports that while there were numerous people involved with the development of COBOL, Hopper played an especially crucial role. Not only did Hopper find solutions for technical problems but also she succeeded in the task of selling the concept of a common language from an administrative and managerial point of view. Hopper recognized that while the companies involved in the commercial development of computers were in competition with one another, the use of a common, business-oriented language would contribute to the growth of the computer industry as a whole, as well as simplifying the training of computer programmers and operators. The form COBOL assumed as a language may have been the result of discussions within a committee, but its existence as a common language within the computer industry resulted from Hopper’s salesmanship before the committee met.



Significance

Common Business Oriented Language, or COBOL, was the first procedure-oriented, natural language, machine-independent computer program developed for business data processing operations. Its development simplified the training required for computer users in business applications as well as demonstrating that computers could, indeed, be practical tools in government and industry as well as in science. Prior to the development of COBOL, electronic computers had been criticized as merely expensive oversized adding machines that were adequate for doing time-consuming mathematics but lacking the flexibility business people required.

In addition, the development of COBOL freed programmers not only from the need to know machine code but also from the need to be as cognizant of the physical characteristics of the machine as they must be of the characteristics of the problems they hope to solve. There is no longer a need to know what specific hardware instructions are required to activate the computational and logical processes or what registers are available. In short, programmers can write programs without knowing much about the specific physical characteristics of the machines on which the program is to be run. This means that, unlike the early programs of the 1940’s and 1950’s, programming languages can now be written that are both machine-independent and almost universally convertible from one computer to another.

Finally, because Hopper and the other committee members worked under the auspices of the Department of Defense, the software was not copyrighted, and COBOL became widely available to anyone who wanted to use it in a comparatively short period of time. It diffused rapidly within the industry and contributed to the widespread adaptation of computers for use in a countless number of settings. Computers;programming languages
COBOL



Further Reading

  • Hodge, Marie. “An Admiral’s Amazing Grace.” 50 Plus 26 (October, 1986): 16-17. Report on Hopper’s retirement after serving forty-two years in the Navy.
  • Hopper, Grace M. “Admiral Hopper Talks to AAAS Staff.” Science 223 (September 5, 1986): 1095-1096. Discusses the future of computers and the need to educate workers.
  • _______, et al. “What Lies Ahead.” Byte 14 (January, 1989): 343-349. Brief reminiscences about early days of computers as well as speculations about future developments.
  • Keerjoda, Eileen. “The Grand Old Lady of Software.” Newsweek 101 (May 9, 1983): 13-14. Brief biography of Hopper.
  • Sammet, Jean E. Programming Languages: History and Fundamentals. Englewood Cliffs, N.J.: Prentice-Hall, 1969. Thorough explanation of computer languages that not only explains how they work but also explicates the principles underlying them.
  • Sanderson, Peter C. Computer Languages: A Practical Guide to the Chief Programming Languages. London: Newnes-Butterworths, 1970. Explains FORTRAN, ALGOL 60, COBOL, and PL/I.
  • Shurkin, Joel. Engines of the Mind: A History of the Computer. New York: W. W. Norton, 1984. A general history of the computer focusing on priority disputes. Mentions Hopper only in passing, but is interesting in providing background on the early years in the industry.
  • Stern, Nancy, Robert A. Stern, and James P. Ley. COBOL for the Twenty-First Century. 11th ed. New York: Wiley, 2006. Text seeking to update and preserve the usefulness of the language Hopper helped invent.


Secret English Team Develops Colossus

First Electronic Stored-Program Computer Is Completed

UNIVAC I Becomes the First Commercial Electronic Computer

IBM Develops the FORTRAN Computer Language

Kemeny and Kurtz Develop the BASIC Computer Language