[lambdaheads]Essay 2

[Programming][Languages]

Language gives us ways to express our views and knowledge about the world, while also capturing and reflecting these views and experiences. Indeed, some linguists controversially believe that language drives behavior and culture, rather than the other way around; this is (a very coarse summary of) the famous Sapir-Whorf hypothesis. (Read, for example, a more elaborate condensation, including classic quotes.)

Think about this the other way around: a language is the repository of knowledge and goals that emerge from a domain of human activity. Computer science is replete with such examples (optimization problems led to OPL, database query optimization gave rise to SQL, scripting needs brought forth Awk and Perl, and so on). But humans have done this for much longer than computers have been around. Thus, you may not pick a language within computer science. Go exploring.

Your task is to find a ``language'' used for some activity by some subset of humans. Explain the community of people and what they share. Now, evaluate this language as you would a programming language. Briefly describe the language's syntax; use examples if you wish. What are its types? What operations does it support on these types? What about the operations on the programs? (We write type checkers, interpreters and compilers, which run on computers to operate on programs. What ``programs-processing programs'' do they write, and what do those programs ``run'' on?) You may also want to build an explicit bridge by commenting (perhaps hypothesizing) on whether or not this language is amenable to computer processing. If you wish to play it safe, you can run your chosen language by me to make sure you're not violating the spirit of the assignment.

Example: Sorry to spoil this for you, but it makes for such an excellent example, and anyway I don't want to read twenty essays on it! Consider (Western) musical score. The community is that of musicians, and the activity is capturing the music. I won't bother elaborating on the data and control elements here (but you should for the language you choose). A sample ``interpreter'' is a pianist who ``runs'' the score on a piano; the score's ``value'' is the sound we hear. As for a bridge, I'm sure someone has tried to write a program that directly reads score (which is, I believe, a fairly precise notation); as for printing it, Donald Byrd wrote a superb program to do this for his Indiana University PhD in 1984. It is, sadly, called SMUT. Try looking for that on the Internet today ...

Be creative. You will be rewarded for your creativity. (If you pick something either too narrow or too broad (such as English or Esperanto), you will fare poorly.) Be brief. You will either nail it or be all at sea. It doesn't take much to tell one from the other. A few paragraphs, at most a page, will suffice. Work alone. Don't discuss this with others.

Turn in your text on paper. Unless your handwriting is extremely legible, please print your submission. Your responses are due by 2am on 2000-12-06.