I was first introduced to programming in 1963. The language was FORTRAN and the machine the IBM 1620. Programming and computers were not new, but they were new to the university curriculum. This was in my undergraduate days and I have to thank Prof. Jack Wolfe of the Mathematics department at Brooklyn College for awakening my interest in this new field.
When I went on to graduate school at the Univ. of Wisconsin, I learned several assembly languages, including the CDC 1604 and the IBM 7090, but FORTRAN was still the main programming tool. Programming languages were an active field of research, and the next languages to appear at my site were: Algol60, SNOBOL, and Lisp. Algol60 was implemented on the famous Burroughs 5500 computer, a stack machine. SNOBOL and Lisp were run on a Univac 1108. At the time, all published communication of programs, especially the Communications of the ACM, was done in Algol60.
As a graduate student I took my first course on Comparative Programming Languages. The goal of the course was to give the student a few weeks of exposure to each of several languages. In the late 1960s at the Univ. of Wisconsin the languages were: SNOBOL, LISP, IPL-V (due to Newell, Shaw, and Simon at Rand), and SLIP (a FORTRAN extension for handling lists). This approach to the teaching of programming languages continued into the `70s.
The `70s were a productive period in the field of programming languages, with languages such as Pascal, C, and Smalltalk being developed and refined. Pascal was originally designed as a language for teaching computing. Its clean structure and several excellent implementations helped it to become phenomenally successful in academic computer science departments. Smalltalk remained largely confined to workstations produced by Xerox. Though it never held a wide audience, it was quite influential, especially years later when others began to appreciate the notions of object-oriented programming. The C language became intimately tied to UNIX. Today, we find that the C language has become the dominant programming language, for personal computers, workstations and even on mainframes.
In the early `80s, I published my first attempt at a programming languages textbook, entitled Fundamentals of Programming Languages, W.H. Freeman. It was there that I introduced the notion that the subject was best taught by surveying the fundamental concepts of programming languages, rather than viewing the course as a tutorial in how to program in several languages. This idea has apparently caught on, as most textbooks today follow that model.
Back in the 1960s and 1970s it seemed that the proliferation in the number of programming languages was out of control. This was perceived to be a major problem. This problem was especially severe for organizations that made extensive use of computers such as the U.S. Department of Defense. They were motivated to develop a single language in which all of their applications would be built, primarily to get a better control on the language proliferation problem. The language Ada was the result of that effort, and it survives today. However, the proliferation of general purpose programming languages has significantly subsided, and today there are probably about a half dozen that are in major use: C, C++, Ada, Pascal, Fortran and Cobol. Of course various sectors are making use of Lisp, Prolog, Smalltalk, but these are quite small in comparison. Nevertheless, new languages are gaining in importance, e.g. Visual Basic.
New languages are still being designed and implemented. Many of these would not be characterized as general purpose, though they contain virtually all of the elements of a general purpose language. One such language is the macro language contained in spreadsheets such as Lotus 1-2-3(TM) and Excel(TM). These languages are used by thousands of people, who probably do not think of themselves as programmers. Another would be UNIX shell programming, which uses a language heavily influenced by C, but different in many respects.
| Rank | 1994 Results | 1995 Results | 1996 Results | |||
|---|---|---|---|---|---|---|
| 1 | Basic | 34 | C | 23 | C | 56 |
| 2 | C | 33 | C++ | 20 | Pascal | 50 |
| 3 | Pascal | 32 | Pascal | 20 | C++ | 37 |
| 4 | FORTRAN | 24 | BASIC | 19 | BASIC | 35 |
| 5 | Lisp | 19 | Lisp | 17 | FORTRAN | 33 |
| 6 | C++ | 18 | FORTRAN | 15 | Lisp | 31 |
| 7 | COBOL | 13 | COBOL | 7 | UNIX Shell | 27 |
| 8 | Prolog | 9 | ADA | 5 | ADA | 20 |
| 9 | - | - | Prolog | 5 | HTML | 20 |
| 10 | - | - | PL/I | 5 | Prolog | 19 |