This assignment has two parts:
- find an ``obscure'' programming language, and
- 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.