Paul Graham wrote the original software for setting up on-line stores that Yahoo! currently uses. He wrote it in Lisp, which is a close cousin to Scheme (very similar syntax, constructs, and features). Graham's article, Beating the Averages, discusses why he believes Lisp gave his million-dollar startup a competitive advantage. Read the article.
Identify three features of Lisp that Graham believes gave his company a competitive advantage. At least two should be technical (rather than social). State the features and how they provided an advantage.
Graham's article makes several observations about programming and programming languages. Identify and state the two that you find most significant. Explain (in a sentence or two) why you chose the observations that you did.
In another article, Graham provides a surface-level critique of Java. Read the article. In your own words, state three questions that Graham's article teaches you to ask when approaching a new language.
In class on Friday, we talked about how languages are everywhere once you get used to looking for them. In general, 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.
Your task is to find a non computer science ``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.
What are programs in this language? What's the data and what's the control?
Briefly describe the language's syntax; use examples if you wish.
What "values" do programs in this language evaluate to?
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?)
Comment on whether or not this language might be amenable to computer processing (you do not need to choose a language that can be machine-processed).
Example: 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. Programs that read score and produce the music should be feasible to write.
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.
Turn in a single file hwk6.txt containing your answers. Make sure that both students' names are in a comment at the top of the file.