These notes are also available in PDF.
Gabriel, Richard (1996). The End of History and the Last Programming Language. In Patterns of Software. New York, Oxford University Press. pp. 111-121.
I would believe what Gabriel has said in the paper. But in his paper, there are a lot of empirical reasoning. To support each of his four sub thesis, Gabriel has used analogy to business, automotive market, etc., and unsupported psychological reasons such as mother doesn't teach kids how to risk. Most of his arguing are based on induction; as he also points out the existence of exceptions, his conclusion could be fallacy.
It seems to me that the first part of the theory that the author has specified - that "Languages are accepted and evolve by a social process, not a technical or technological one" - does not apply to the contemporary language development process. The rapid developments in the Internet technology has led to wide acceptance of languages such as PHP and Ruby. Although some social process might have affected the acceptance of these languages it seems inappropriate to neglect the influence of techonology.
Boy, it seems to me the choice to use Ruby is more a social process than a technological one.
Gabriel's understading of what makes a successful programming language explains a number of issues with Hoare's theory. The human aspect of programming cannot be ignored. If a language is too difficult to learn, it will not be adopted no matter how good it is in relation to theory.
The first reading, by Gabriel Richard, seemed a little sensationalist and somewhat fatalistic. I think the emergence of Java proved that the article was off because it followed their "virus" model, has plenty of wizards, and has been widely accepted. Richard asserts that the reason that lisp or its dialects have not caught on was because it requires mathematical sophistication from its users. Aside from the fact that I know lips dialects are used widely in IE, business programing, and academia, it would make sense to me that - as problems in computing get more complicated - mathematical knowledge would be essential for a programmer. Why, in your opinion, has scheme not been widely used for general purpose programming?
The best reason I've heard is
Pointy-haired bosses. That is,
the conservative approach to software management is to use a language that
has the most available programmers, and there are many fewer LISP
or Scheme programmers than Java programmers. We'll be reading a few
things by Paul Graham, who wrote one of the first large e-commerce
systems (in LISP), who sold his system to Yahoo (Yahoo Stores), and then
saw it rewritten in another language for just that reason.
One of the main points he appears to be making is that innovation is never really a good idea in large doses. I see two problems with this. One is that he's talking about LISP which, from what I can see here didn't catch on right away. However at least currently is, as far as I can tell, the main language for anyone who wants to program in AI. Secondly he makes no mention of Java which has also clearly become popular. Both of these languages are major types of innovations which require an entire shift in the way that people think about programming and both of these languages have achieved a significant level of popularity. How does the author reconcile these two languages with that part of their argument? Do they at all? I think as far as I can tell though the fact that this was written over 10 years ago tells a lot about his arguments. As one example he talks about programming that's done in groups of 2 or 3 and how inheritance and polymorphism are too mathematical concepts that aren't going to be used by most programmers.
Well, Java wasn't released at the point this article was published, so I'm not sure why you'd expect him to mention it. I'll let you think about the other questions.
How would Gabriel explain Java's popularity when it requires users to have "mathematical sophistication" with concepts like inheritance and polymorphism, or would he assume that C will one day beat out Java?
I'm not sure that Gabriel's approach suffices, which is one of the reasons I asked you to read it. I think the way many programmers use inheritance and polymorphism in a not particularly sophisticated way. On the other hand, folks are doing some fairly sophisticated things with introspection, which one mnight argue is mathematical.
The first point in Gabriel's theory is that "Languages are accepted and evolve by a social process, not a technical or technological one." Doesn't he weaken this claim when he says "...the theory would predict that Fortran would not succeed, and it didn't for many years, but like the natural world, the environment changed with the need for scientific computing"? Doesn't this show that both social and technological processes affect how languages are accepted?
As in some previous papers, we should commend the author for being willing to admit that there are flaws. We can consider how much his argument is falwed.
Isn't Gabriel going a little overboard with his claim that the history of programming languages is at an end? What about languages like Java? Also, he claims that languages evolve by a social process, not a technical one. Didn't Java rise because it was tied to the Internet? I've met a lot of people that can program in Java but don't necessarily like it as a language. Wouldn't that be more of a technical process than a social process?
Well, the you people primarily you interact with are novice programmers, so I'm not sure what we should think about their decisions. But, in some sense, people programming in Java because other people program in Java is really a social process.
Some questions for classroom discussion.
The author predicted that object oriented programming would fail perhaps because it requires users to have "mathematical sophistication" (such as inheritance and polymorphism). Why has OO programming flourished contrary to Gabriel Richard's prediction?
This paper was authored about three decades after Hoare published his "Hints on Programming Language Design" but it seems that little has changed since then. The qualities of machine independence, use of familiar notations and existing popularity among others still dominate the programmer's decision on which language to use. So much so that all the languages that Hoare deemed to be well designed such as ALGOL and FORTRAN are either "dead or moribund" according to Richard. How useful then are Hoare's hints?
The author says that to a large extent the sophistication of a programming language is limited by the sophistication of the hardware. At the same time he says that a language must not be a resource hog, but should also be on a popular platform. I don't quite understand how we can hope to make a language popular, easily acceptable without too much innovation and also not use a lot of innovation?
I usually create these pages
on the fly, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.
This document was generated by
Siteweaver on Sun Apr 29 11:47:07 2007.
The source to the document was last modified on Sun Feb 4 20:54:40 2007.
This document may be found at