[lambdaheads]Essay 1


This assignment has two parts:

  1. find an ``obscure'' programming language, and
  2. evaluate it.

This assignment has two purposes:

  • To understand how you would evaluate a language without any prior training. (For this reason, we're not going to suggest how you should evaluate one. Focus on the aspects you think important, and list those you are ignoring because they seem unimportant.)
  • To force you to broaden the set of languages that you know or have at least heard about. Languages shape thought, so the broader your linguistic range, the bigger the toolkit you can apply to programming problems.

You must find the language by 11am on 2000-09-15. You must propose your choice of language to the instructor by email. You may be asked for information about the language. The instructor reserves the right to reject your choice, in which case you will have to search for a different one. You may not write about a language that has not been approved by the instructor. Therefore, you would do well to propose a language as early as possible, in case your proposal is rejected and you need to look harder. You may propose more than one at a time; we will approve or reject each one individually.

Assume your target audience is a fellow computer programmer at a software company who has asked you to look into the chosen language.

A few guidelines for choosing a language:

  • Pick something in contemporary use!
  • Pick something reasonably high-level, in which you can implement significant systems.
  • No toy languages. Lots of compiler and programming language courses, for instance, create little toy languages as the object of study in the course. Skip these.
  • No phantom languages. The Web has no shortage of proposed programming language projects that never get off the ground (or at least not more than a few inches off of it). Skip these as well. Make sure your chosen language has an implementation and at least a small, real user base.
  • Avoid overly specialized languages. There are many languages designed to cater to very specialized niches. We'd prefer you picked a fairly general-purpose language (because otherwise there isn't much to say), unless your choice is especially interesting.
  • Avoid the temptation of choosing one of the billion new ``scripting languages''. This past decade has seen an explosion in their number, but all they have to distinguish themselves is sometimes nothing more than a logo. In particular, every software company that had its own hacked-up in-house language seems to have decided the smart thing to do is to get other people to do some of their work for them — so they release it as an Open Source effort, and hope lots of people will pick it up and hack on it. The end result is, of course, lots of languages each getting very little attention. Do everyone a favor and pay them even less attention! (Aside: The proliferation of these in-house languages lends credence to the premise of this course, which is that you may well find yourself designing languages sooner than you think.)
  • No proprietary languages for which you can't find any useful documentation!
Overall, be sensible.

Your essay is due by 11am on 2000-09-22. Submit it in print before the start of class. It should be one page long excluding the bibliography, pictures, and large code snippets. Usual standards of academic honesty apply; if you use material from the Web, cite it! (And be sure it's trustworthy ...) Don't quote large segments of text or code from a Web site or other source as a surrogate for doing your own writing.

Brown has a Writing Center. It's free. Use it.