Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

The History of Programming Languages


AUG93: The History of Programming Languages

HOPL features top language designers

K.N. King is an associate professor of mathematics and computer science at Georgia State University. He is the author of Modula-2: A Complete Guide (D.C. Heath) and is currently at work on C and C++ books for W.W. Norton. He can be reached at [email protected].


It's official. C and C++ have come of age, or at least grown old enough to be featured at the second History of Programming Languages conference (HOPL-II) held in Cambridge, Massachusetts this past spring. HOPL-II, which provided programming-language designers a forum for discussing their languages, staking their claim to immortality, and (occasionally) taking a swipe at competing languages, brought together the likes of Dennis Ritchie, Bjarne Stroustrup, Niklaus Wirth, and Alan Kay under one roof--a rare occasion indeed.

In particular, I was curious to see how the designers of C and C++ would be received by the proponents of languages such as Ada and Pascal. Despite their enormous popularity (or perhaps because of it), there are still academics who view C and C++ with suspicion. Would Wirth exchange pleasantries with Ritchie or engage him in hand-to-hand combat? I couldn't wait to find out.

Preserving History

The computing field hasn't always done a good job of preserving its own history. As time passes, our pioneers pass away and valuable artifacts are lost with them. For instance, according to HOPL-II chair J.A.N. Lee, the first Fortran compiler now exists only in binary form as boxes of punched cards; the source code has been lost or destroyed. To help remedy this situation, the Special Interest Group on Programming Languages (SIGPLAN) of the Association for Computing Machinery (ACM) sponsored the first HOPL conference in 1978. This conference, which covered languages in use by 1967, included speakers such as John Backus (Fortran), Alan Perlis and Peter Naur (Algol 60), John McCarthy (Lisp), Jean Sammet (Cobol), Kristen Nygaard (Simula), Thomas Kurtz (Basic), George Radin (PL/I), and Ken Iverson (APL).

This year's HOPL-II picked up where HOPL left off. For a language to be eligible for HOPL-II, the program committee required that "preliminary ideas about the language were documented by 1982 and the language was in use or being taught by 1985." Thus, HOPL-II was able to cover languages developed in the '70s as well as upstarts like C++.

The Worst Programming Language Ever

In his keynote address, "Language Design as Design," Fred Brooks (project manager for the IBM System/360 and author of The Mythical Man-Month) gave a software designer's view of programming-language design.

Brooks acknowledged that his credentials in the programming-language arena are shaky. He called OS/360 JCL, which was developed under his supervision, the "worst programming language ever designed." He also ruefully admitted being "the person who tried to displace Fortran with PL/I."

In his view, the data types and data structures a language provides must come from its intended application area; the operations are then determined by the data types. Everything else, according to Brooks, is "languagehood."

Brooks also discussed "rationalism versus empiricism" in language design. As he sees it, rationalism (that is, designing a language by "pure thought") is doomed to fail, since we have "no hope of getting our complex designs right the first time."

Languages, Languages, Everywhere

Most of the other presentations were by people involved in the original design of various languages: C.H. Lindsey (Algol 68), Niklaus Wirth (Pascal), Per Brinch Hansen (Concurrent Pascal), Alain Colmerauer (Prolog), Jean Sammet (FORMAC), Barbara Liskov (CLU), Alan Kay (Smalltalk), Ralph Griswold (Icon), Dennis Ritchie (C), and Bjarne Stroustrup (C++).

Several talks didn't fit this pattern however. William Whitaker, who oversaw the development of Ada for the Department of Defense, discussed the management of the Ada project, not the design of the language itself. Guy Steele and Richard Gabriel traced the evolution of Lisp, while Richard Nance gave a history of discrete-event simulation languages. The presentation on Forth was made by Elizabeth Rather instead of Chuck Moore, the actual designer of the language.

A shorter talk, by someone involved with the language yet with a different viewpoint, immediately followed each main presentation. Kay was followed by Adele Goldberg, for example, while Stu Feldman, an early user of C and C++ and author of the UNIX f77 compiler and make utility, followed Ritchie and Stroustrup.

Steele and Gabriel employed a "tag-team" approach in their presentations on Lisp. Using two overhead projectors, the pair alternately traced the development of Lisp on an amazingly detailed schematic. Still, honors for the most unusual presentation go to Alan Kay. Although his paper in the conference proceedings discussed the history of Smalltalk, his talk had little to do with the language. Instead, Kay focused on issues that he finds important, including the importance of general education instead of specialized training and the need for creative freedom. His overheads were unique, to say the least, featuring pithy sayings ("You can make a doghouse out of anything"--in other words, it's easy to write small programs), a picture of an E. coli bacterium, and a copy of The Federalist Papers (labeled "Best Book on Complex Systems Design?").

One potential speaker was conspicuous by his absence from the podium. Jean Ichbiah, the chief designer of Ada, had been invited to write a paper on the history of Ada, but declined, citing lack of time. Nonetheless, he attended and participated in question-and-answer sessions.

Second-guessing

Language designers spent a lot of time discussing the reasons for their decisions--and even indulged in a bit of second-guessing. Ritchie's paper on C identified its major problems, including "the failure of the original language to include argument types in the type signature of a function." He called ANSI C "a noticeably better language" and acknowledged in later questioning that he uses ANSI C himself.

Stroustrup was fairly happy with the decisions made in the design of C++. He did, however, confess to making one major mistake: not providing a basic class library from the beginning. As he put it, "Release 1.0...should have been delayed until a larger library including some simple classes such as singly- and doubly-linked lists, an associative array class, a range checked array class, and a simple string class could have been included."

Wirth, however, refused to second-guess himself: "It is... fruitless to question and debate early design decisions; better solutions are often quite obvious in hindsight. Perhaps the most important point was that someone did make decisions, in spite of uncertainties."

Secrets of Success

Designers also spent time analyzing the reasons for their success. Ritchie was modest about C's success, even somewhat embarrassed by his own celebrity. (When asked if there were anything he'd do differently, Ritchie replied, perhaps only half in jest, "I'd become a monk!") He summed up the reasons for C's success on two overheads, titled "How to Succeed in Language Design without Really Trying." The first noted C's widespread availability, its ability to interact with its environment, and its adaptability to unexpected situations. But the second gave the real secret: "Be lucky."

For his part, Stroustrup noted "the need for a programming language and the code written in it to be just a cog in a much larger machine" as a key factor in the success of C++, while Wirth said that the most important reason for Pascal's success was that "many people capable of recognizing its potential actively engaged themselves in its promotion."

Exploding Myths

Speakers often cleared up common misconceptions about their languages. Ritchie, for instance, pointed to the widespread belief that C's ++ and -- operators were added to take advantage of the PDP-11's autoincrement and autodecrement addressing modes. In fact, these operators were present in B, the immediate predecessor of C, which was designed before the PDP-11 existed.

Stroustrup said that he chose C as the basis for C++ because it was "the best systems programming language available," not because he worked at Bell Labs, as people have often assumed. He also attacked the belief that C++ is successful because of AT&T's marketing clout. "We once had a marketing budget; it was $3,000. It lasted for three years."

Oddities

HOPL-II was a goldmine for trivia buffs. What do Scheme and Forth have in common? (Both languages originally had longer names that were shortened to satisfy operating-system restrictions. Scheme was originally named Schemer, after the AI languages Planner and Conniver, while Forth was supposed to be Fourth, as in "fourth-generation."

Which language was the first not to have goto statements? (Concurrent Pascal, according to Brinch Hansen, who added "What are you supposed to do with goto's in a concurrent programming language? Where are you going?")

What was the origin of the // comment convention in C++? (Far from being an innovation, it was lifted directly from BCPL, a predecessor of C.)

What did the Department of Defense do before officially choosing Ada as the name of their new language? (According to Whitaker, they contacted the heirs of Ada Lovelace for permission to use her name. He jokingly wondered whether Wirth had gotten similar permission from Pascal's descendants.)

How much code is written for the DoD each day? (Two million lines!)

Warfare in the Hallways?

So how did these luminaries get along? For the most part, just fine. During coffee breaks, Ritchie talked to Wirth while Stroustrup chatted with Ichbiah. So much for my visions of warfare in the hallways. Similar respect was evident during the talks, with speakers generally avoiding direct attacks on competing languages. There were exceptions however.

In his talk on Concurrent Pascal, Brinch Hansen referred to Ada as "large" and "incomprehensible" and C as "small" but "insecure." Later, he again criticized Ada and C, going so far as to accuse them of not being programming languages at all.

Wirth likewise attacked Ada, saying it lacked "an economy of design without which definitions become cumbersome and implementations monstrous." He refrained from criticizing C, however, until the closing panel, where he said that "hacking is in" and claimed that "most programmers enjoy working by trial and error." Looking at Ritchie, who was sitting next to him, Wirth continued: "The most important promoter of this trend: C." He said that languages such as C are useful for bootstrapping software onto a new machine, but their use should be only "temporary."

Ritchie, taking these attacks graciously, noted that Wirth's points were "well-taken" and acknowledged that "it is possible to use C in a better way than people do." But he also said that "one sometimes has to make compromises" in the real world.

In his earlier talk on C, Ritchie actually said good things about Pascal, even admitting that Pascal is "elegant." He listed many similarities between C and Pascal, which were developed at about the same time but without contact between the designers. He observed that the languages even share some of the same problems, such as handling arrays with varying bounds.

Even Stroustrup couldn't resist a few shots at C. Of all the languages he used in the '70s, Algol 68, not C, he said, was his favorite, noting in particular his dislike for C's syntax and the loopholes in its static type checking.

Improving SEX

An excursion to Boston's Computer Museum one evening featured the opening of what was billed as the "first-ever museum exhibit on programming languages." The museum had asked conference attendees to bring buttons, T-shirts, and other pieces of "programming language ephemera" which would later be added to the exhibit's "Tower of Babel," a tall structure listing hundreds of programming languages.

At a banquet the next evening, Cobol pioneer Jean Sammet told of being upbraided by a visiting IBM executive, who complained that members of her group were discussing sex on company time. It turned out that the visitor had overheard the staff referring to a subroutine named FMCSEX by the last three letters of its name, which stood for "symbolic expression." At the time of the visit, unfortunately, the group had been discussing ways to improve SEX and make it faster.

Survival of the Fittest

While history was clearly the focus of the conference, the future was not ignored.

One important issue, of course, is the survival of programming languages as we know them. William Whitaker rhetorically asked, "Will there be languages such as Ada, Fortran, and Pascal in 15 years?" He answered his own question with a resounding "yes," admitting, however, that the "growth of new languages will probably slow down" and "evolution will produce dominant languages" that will "force out" weaker ones.

Other speakers concurred. Early in the conference, for instance, Sammet noted that, of the approximately 1000 languages implemented up to 1993, 700 are dead. Even well-known languages are not immune, as evidenced by Steele's comment that "Lisp has been on the decline for 3--5 years."

Not that every language designer would be upset if his or her language disappeared. Alan Kay admitted that he "wouldn't shed a tear" if Smalltalk disappeared tomorrow. Languages shouldn't hinder progress by outliving their usefulness, he said.

What will drive the development of future languages? Opinions varied, but several speakers singled out the need for better parallel computing support. In his paper on Concurrent Pascal, Brinch Hansen stated, "I don't think we have found the right programming concepts for parallel computers yet. When we do, they will almost certainly be very different from anything we know today."

Both Ritchie and Kay pointed out the growing number of people using computers, and Kay also mentioned the influence of "pervasive, worldwide networking." Both trends could have a long-term effect on programming languages.

What should students learn as a first programming language? Many colleges are beginning to teach C as a first language. Ritchie didn't endorse this trend. Any approach that tends to produce dependence on a particular language is bad, he said, suggesting that Scheme might be a good choice. Kay refused to pick a particular language. Wirth asked "Are you teaching a skill or [providing] general education?" In the former case, he recommended Ada; in the latter, he advised using "a simpler language"--but not C. "I view the landslide of C use in education as rather a calamity," he said.

Another HOPL?

Will there be a HOPL-III? Probably. When will it be held? Maybe 5 years from now, maybe 15.

Preprints of the HOPL-II papers appear in the ACM SIGPLAN Notices, March 1993. A more complete record of the conference is to be published in 1994 as the book, History of Programming Languages-II. (The original History of Programming Languages, based on the 1978 HOPL conference, is still in print.) Reading these histories is the next best thing to a long chat with Dennis or Bjarne.

References

Second ACM SIGPLAN History of Programming Languages Conference Preprints. Published as ACM SIGPLAN Notices (March, 1993).

Wexelblat, Richard L., ed. History of Programming Languages. New York: Academic Press, 1981.


Copyright © 1993, Dr. Dobb's Journal


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.