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

Position Paper 2: An Array of Arrays

Due: Monday, 21 February at 11:59pm
Out: 8 February

The languages we have seen so far (Algol60, Algol68, BLISS, C, FORTRAN and Pascal) each support arrays in starkly different ways. The differences reveal the state of language design and compilers at the time the language was designed. In addition, they provide insights into the language designer's perspective on the engineering tradeoffs between simplicity, safety, orthogonality, performance and regularity.

Select two programming languages that have array mechanisms that differ in interesting ways. You may pick languages we have studied in class or any other language you know well. For the languages you choose:

  1. Briefly describe their array mechanisms, focusing on the similarities and differences between them. Describe any important interactions between the array mechanisms and other language features. Write this section assuming the reader knows nothing about the specific languages you choose, but is familiar with all of the programming language concepts we have encountered in class.
  2. Argue convincingly that the differences are the result of language designers making different design tradeoffs. Justify their choices in terms of the goals of the language and the state-of-art in languages and compilers at the time.
  3. Argue that one of the mechanisms has substantial advantages over the other. Back up your arguments with concrete examples of program fragments.
  4. Consider introducing the perferred array mechanism into the other language. Describe what other changes would be necessary to make this work. Consider carefully any feature interactions or violations of the design goals of the language that would result. Is this a good idea?

Follow the usual position paper directions. The email you send should have the subject line "Position Paper 2". MIME-encoded mail will bounced back to the sender unread. If you are using a Windows-based mail reader and don't know what MIME-encoded mail is, you are probably sending it and should find out how to stop.

Graders of this paper will have little tolerance for poor quality writing. You have two weeks to write this paper, and have had plenty of time to find a humanties student for whom you can make a web page. There is no excuse for turning in a paper replete with grammatical and spelling errors.

You are required to find at least one person in the class to review your paper (and vice versa). At least one of the languages selected by your review partner should be different from the ones you selected. The reviewer should read your paper and make constructive criticisms of it. The reviews are not turned in, but should provide useful feedback for you to improve your paper. In the collaborators section, list the reviewer(s) of your paper (as well as any other collaborators). Take your job as a reviewer seriously - any glaring errors (either technical or presentation) in the submitted paper reflect poorly on both the author of the paper and the reviewer.

CS 655 University of Virginia
CS 655: Programming Languages