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). Describe the features and explain 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 couple of sentences) why you find your chosen observations significant.
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.
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.
Identify 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 by answering the following questions.
What are programs in this language? What are the data, the operations and the control? (make sure your chosen language has all of these characteristics --- if not, pick something else!)
Briefly describe the language's syntax; use examples if you wish.
What "values" do programs in this language evaluate to?
What is the corresponding notion of an interpreter for your language?
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. Computer programs that read score and produce the music exist (and can therefore be written).
Be creative. You will either nail this or be lost. It doesn't take much to tell one from the other. Don't pick a human spoken language (English, Esperanto, etc) and don't pick math or music -- the goal is for you to see language-like structures in the world around you. Creativity counts. In terms of write-up, a few paragraphs, at most a page, will suffice.
[Side Note: if you enjoy Graham's writing, his article Taste for Makers is a lovely piece on the role of taste in design. You don't have to read this article for this assignment, but it's worth reading when you have the time.]
For the essay responses, satisfy the criteria in the questions, and make sure you provide explanations where I asked for them.
For the language identification, your grade will reflect whether you chose a language that has all the elements mentioned above (data, operations, control, etc) and whether you identified those elements appropriately.
We will also grade for writing. Spelling and grammar errors and sloppy writing (such as sentence fragments) will cost you points.
Turn in a single TEXT file hwk5.txt containing your answers (no MS word, PDF, etc, please -- we want to be able to view these easily within a command shell in Unix). Make sure that all students' names are in a comment at the top of the file.