University of Virginia, Department of Computer Science
CS655: Programming Languages, Spring 2001

Problem Set 3:
Not My Favorite Programming Language
Out: 27 February 2001
Due: Tuesday, 6 March 2001 (in class)

Why X Is Not My Favorite Programming Language

The goal of this assignment is to get you thinking about language design in a critical way both in terms of its technical and asthetic aspects. You should also view this as an opportunity to practice writing well. I expect papers to be well-organized and well-written.
Collaboration Policy
For this problem set, each student will turn in their own work. You are encouraged to discuss the problems and work with other students. It would be wise to ask a classmate to read your essay before you turn it in. A similar assignment was used as the first position paper in last year's CS655. Some of the better papers are available on the course web site. Since you are getting this assignment later in the course, I hope all of your papers will be at least this good!
Write a paper in the spirit of Kernighan's Why Pascal Is Not My Favorite Programming Language. You may choose any programming language (using a broad definition of programming language) you want, but you are encouraged to pick a language some people actually like rather than an obvious target.

Your paper should focus on properties of the language itself, not flaws in available implementations (unless you can argue that those flaws stem from more fundamental problems in the language itself). Violations of principles of good design such as simplicity, regularity, and safety are more interesting than the lack of some particular feature you like.

Your paper may be as short as you like, but no longer than the Declaration of Independence (which you should read even if it isn't about programming languages). A one or two sentence paper could be worth full credit, if you can be as witty and insightful as Edsger Dijkstra was in How do we tell truths that might hurt? (e.g., "APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.")

If you think you need more space to answer convince someone a programming language is not your favorite than Mr. Jefferson did to start a revolution, create a new government, and establish basic human rights, you are probably overestimating the difficulty of the question or the importance of your writing. Try harder to organize your thoughts and present them clearly and concisely!

Note, by this standard, Kernighan's paper would not merit a very high grade since it would have ended in the middle of Section 2.1. You should aim to make your points much more clearly and concisely that Kernighan did, and include only the things you feel are most important to make your points.

Like the Declaration of Independence, your position papers should identify some general principles (e.g., "that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness"), make some bold claims about how well a specific thing satisfies those principles (e.g.,"history of the present King of Great Britain is a history of repeated injuries and usurpations, all having in direct object the establishment of an absolute Tyranny over these States"), and support them with specific examples (e.g., "He has plundered our seas, ravaged our Coasts, burnt our towns, and destroyed the lives of our people").

CS 655 University of Virginia
Department of Computer Science
CS 655: Programming Languages
David Evans