In this assignment, you will read three historically important articles about programming languages, and answer some questions about them. The exercise will introduce you to some very insightful and persuasive articles by people who know a great deal about programming languages and programming. It's not entirely coincidental that the articles are spaced ten years apart: computer science, like everything else, is very cyclic.
Please remember that there are very few ``right'' answers: I will judge you on the quality of your analysis, not on whether you reflect (what you think are) my opinions (which will sometimes surprise you, I might add). In all cases, if you don't have much to say, be brief; if you say something, be precise; if you say a lot, do it well. Stick to technical facts (or opinions that you believe are facts).
You may not be familiar with Lisp and Smalltalk, the two focal languages here. I won't say much about Smalltalk because I think you can get a pretty good sense of it from the first of these articles. As far as Lisp is concerned, there are two ways to think about it: a more industrial-strength (but hence slightly less powerful) version of Scheme, or as a short-hand for the functional language family (Scheme, ML, Haskell, etc). The second article really thinks of Lisp in the former sense (i.e., it's specifically about Lisp, not about other functional languages). The third one uses half of each interpretation.
Design Principles Behind Smalltalk
One of the remarkable aspects of this article is that it appeared in BYTE magazine, showing that once upon a time, relatively popular magazines cared about foundational ideas, not just Foundation Classes.
Read Ingalls's (somewhat poignant) article. Then answer the following questions:
Lisp: Good News, Bad News, How to Win Big
Ten years later, ``AI winter'' had set in, and Lisp companies (who had shared in the boom) were suffering from the bust. In response, Gabriel wrote this article that presages much of the mass-market programming language work of the next several years, which led to ``scripting'' languagesbut, for various reasons, the Lisp and Scheme communities failed to heed this advice, and thus didn't become players in scripting.
Read Gabriel's (somewhat brutal) article. Then answer the following questions:
Beating the Averages
Ten years on, Paul Graham points out that the Web introduces fundamental new freedoms in terms of the programming languages we can use. Continuations, the very feature that Gabriel so despised in Scheme, are so successful that even Perl is going to incorporate them. In turn, implementations of languages like Scheme are learning from their scripting counterparts, adopting some of Gabriel's ideas, and positioning themselves as broad-spectrum solutions.
Read Graham's (fairly hopeful) article, and then this follow-up, which makes more technical points. Then answer the following questions: