The Development of Computer Languages and Programmers
The Development of Computer Languages and Programmers
One of the principle strengths of the modern electronic digital computer is its ability to be programmed to perform a wide variety of useful and disparate functions. Originally designed as "super-calculators" for limited use in military and scientific computation, computers have become one of the most ubiquitous technologies of late twentieth-century society. What makes the computer so powerful is its enormous flexibility: given the appropriate software, an inexpensive and mass-produced computer chip can emulate the function of many more costly, special-purpose devices. The remarkable success of the computer industry in the United States is in large part due to the ability of programmers to develop software applications that appeal to a broad range of corporate consumers. The cornerstones of this "software revolution" are the computer programming languages used to create versatile and efficient software.
The earliest electronic digital computers were designed and constructed for military or scientific purposes and were generally large, expensive, and designed for speed and reliability rather than ease of use. Programmers used numeric machine codes to communicate directly with the computer's hardware in order to achieve the high level of performance required by repetitive scientific computations. Since programming costs represented only a small percentage of the total cost of owning and operating these computers, and the amount of software development that occurred in this period was small, there was little incentive to develop expensive programming tools. A number of organizations developed assembler programs that allowed programmers to write software using simplified mnemonic codes instead of esoteric machine language, but for the most part programming in the early 1950s required extensive knowledge and a painstaking attention to detail. Individual programmers often developed reputations for their idiosyncratic styles and displays of virtuoso programming technique.
As commercial computers became less expensive and more widely used by corporations interested more in processing data than crunching numbers, the need for new programming methods and techniques became increasingly apparent. Computer manufacturers wanted to ensure that their devices were accessible to the broadest range of corporate consumers. Programmers hoped to eliminate some of the tedious clerical work associated with machine code and assembly language. Corporate managers wanted to free themselves from a dependence on apparently eccentric programmers. A whole host of new products appeared aimed at making programming less difficult and time consuming. Most of these so-called "auto-coders," however, simply exchanged one confusing and incomprehensible set of mnemonic shortcuts for another. As programming projects became larger and more complex, the costs of software development increased dramatically; by the middle of the 1950s it was estimated that programming and debugging accounted for as much as three-quarters of the cost of operating a computer.
The first widely used programming language, called FORTRAN (FORmula TRANslator), was developed by the IBM Corporation in response to the rising costs of software development. The head of the FORTRAN development team, mathematician John Backus (1924- ), was outspoken in his belief that programming in the 1950s was "a black art" lacking in generally accepted standards and principles and overly dependent on the individual programmer's "private techniques and inventions." FORTRAN allowed programmers to describe their programs using relatively comprehensible algebraic expressions, rather than in cryptic assembly code. The FORTRAN compiler translated these algebraic expressions into the machine-level code required by the underlying hardware. One of the principle reasons behind the widespread adoption of FORTRAN was its ability to produce efficient machine code that would run almost as fast as that produced by the experienced programmers. Another is that it was supported by IBM, by then an industry giant. FORTRAN was an essential component of IBM's successful line of Model 704 computers, and by the end of the 1960s a version of FORTAN was available on almost every computer ever made up until that point.
FORTRAN was by no means the only high-level programming language developed in the 1950s, however. By the end of the decade, the proliferation of new computers and programming tools had created a veritable Tower of Babel of competing languages and dialects. A demand for a universal programming language developed among user groups and industry consortiums. In 1957 the Association for Computing Machinery (ACM) began work on a universal programming language called ALGOL (ALGOrithmic Language). Although ALGOL was never widely adopted outside of academia, the ACM effort highlighted the benefits of language standardization. In 1959 an influential group of government, military, and industry leaders held a meeting at the Pentagon to discuss the need for a common business-oriented programming language. The outcome of this and other meetings was the development of COBOL (COmmon Business Oriented Language). COBOL rapidly became a de facto standard within the business and defense community, largely as a result of a 1960 Department of Defense decree that the military would longer purchase or lease any computer that did not have a COBOL compiler available. Despite the many changes that have occurred in computer and programming technology since the early 1960s, COBOL remains the world's most widely used programming language.
The same developments in the computer industry that created a need for new programming languages also led to a demand for more and better programmers. By the end of the 1950s a number of universities had established programs in computer science and computer engineering. At Dartmouth University in New Hampshire, Professors John Kemeny (1926-1992) and Thomas Kurtz (1928- ) began work on what was to become the BASIC (Beginner's All-purpose Symbolic Instruction Code) programming language. Their purpose was to create a language that could be easily learned by non-technical undergraduates. BASIC was part of a whole system of technologies (including time-shared computers and teletype terminals) designed to allow Dartmouth students immediate and intimate access to computers. Although not as fast or powerful as FORTRAN or COBOL, BASIC was nevertheless a useful and capable language, especially for the specific pedagogical purposes for which Kemeny and Kurtz designed it. Millions of students who otherwise would have been intimidated by programming have learned the fundamentals of computing through their exposure to BASIC.
By the end of the 1960s a "software crisis" was brewing in the computer industry. Despite the widespread adoption of standardized languages like FORTRAN and COBOL, software development costs continued to skyrocket and numerous large programming projects either exceeded their budgets or failed altogether. A number of related developments contributed to the growing sense of crisis: the increase in the size and complexity of software applications; an influx of inexperienced and poorly trained programmers; and the failure of corporate executives to recognize that programming was a highly creative activity difficult to predict and control using traditional management methods. Whatever the underlying causes, the "software crisis" provoked a new interest in developing programming languages that would speed development and encourage good programming practice. The PASCAL programming language, named after the seventeenth-century French mathematician and philosopher Blaise Pascal (1623-1662), was particularly suited to a "structured programming" approach to software engineering. First developed in 1970, PASCAL was widely adopted by the academic community as the ideal tool for teaching proper technique to aspiring computer scientists and programmers.
As the commercial computing industry expanded and new computer technologies developed, the needs of the programming community evolved accordingly. In 1965 the Digital Equipment Corporation (DEC) introduced a new class of relatively small and inexpensive "mini-computers." These computers were less powerful than traditional mainframes but were accessible to a broader range of organization and were extremely popular. Many of these mini-computers did not have the resources required by highly structured languages such as PASCAL. Innovative computer scientists developed languages specifically suited to this new technology. Ken Thompson (1943- ) and Denis Ritchie, two researchers at Bell Telephone Laboratories in New Jersey, created the UNIX operating system and the C programming language on a DEC PDP-8 mini-computer. Since the UNIX operating system was written in C, the success of the one contributed to the adoption of the other. The C language and its successors (C+ and C++) are the most widely used programming languages for workstation and personal computer software development.
The development of useful and efficient programming languages has had a dramatic influence on the adoption of computer technologies by contemporary society. In the early 1950s it was not at all clear to many corporate observers what computers were good for or how they could best be utilized. Standardized programming languages such as FORTRAN and COBOL allowed these companies to share their software and experience with others, thereby encouraging the spread of information, personnel, and techniques. Each of the many programming languages that were developed in this period served a different purpose: FORTRAN enabled scientists to make more efficient use of computers; COBOL provided features peculiar to the computing needs of businesses; BASIC and PASCAL allowed universities to train the next generation of programmers and computer-savvy executives. The move away from machine code and assembly language towards more algebraic and English-like statements expanded the user base of computers and made computers more accessible and understandable by a broad public audience. Finally, the accumulation of programming expertise and techniques allowed for the further development of more sophisticated and imaginative software.
NATHAN L. ENSMENGER
Campbell-Kelly, Martin and William Aspray. Computer: AHistory of the Information Machine. New York: Basic Books, 1996.
Ceruzzi, Paul. A History of Modern Computing. Cambridge, MA: MIT Press, 1998.
Sammet, Jean. Programming Languages: History and Fundamentals. Englewood Cliffs, NJ: Prentice-Hall, 1969.
Weinberg, Gerald. The Psychology of Computer Programming. New York: Dorset House Publishing, 1998.
Wexelblat, Richard, ed. History of Programming Languages. New York: Academic Press, 1981.
Fritz, W. Barklay. "The Women of ENIAC." Annals of theHistory of Computing 18 (3): 13-23.