general

OOPSLA, first day

October 28, 2009 6:02:13.394

Sunday and Monday were workshops and tutorials at OOPSLA.  I went to mini-PLoP on Sunday and to the refactoring tools workshop on Monday.   The purpose of mini-plop was to help some authors with their pattern papers, and I am always glad to help.  The papers were interesting, and the group was really good, generating a lot more ideas than the authors will ever have time to implement. 

The refactoring workshop was good, too.  Most of the people there were working on refactoring tools, though a few were just interested users.  The workshop made me want even more to build a tool for C++.  Newer languages are easier to refactor, but the need is greater for older languages.

Tuesday was the start of the main program.  OOPSLA started off with a bang with a talk by Barbara Liskov, who is the latest Turing Award winner.  This was not her official Turing Award Lecture, but rather a repeat of it.  It was a survey of the ideas that lead up to her work on languages for data abstraction, and to her famous OOPSLA '87 talk that led to the Liskov Substitution Principle.  (She didn't name it, and was surprised to discover in the 90s that she was famous for something she said in a talk that was not really in her area.)

She gave a list of papers that had influenced her, and I thought it was a great history lesson.  I wanted to record that list so I would not lose it.

Djikstra - "Goto Statement Considered harmful" - which raised the innovative claim that programs ought to be easy to reason about, and language elements that made them hard to reason about were bad

Wirth - "Program development by stepwise refinement" - which pointed out that a program is a series of design decisions, and these decisions give rise to a family of related programs, corresponding to different design choices.

Parnas - "Information Distribution Aspects of Design Methodology".  I haven't read this one!  I thought I had read all his papers.  It sounded a lot like his modularity paper. "The connections between modules are the assumptions that the modules make about each other."

Liskov - "A Design Methodology for Reliable Systems"

I can't read my handwriting on the next one.

Balzer - Dataless Programming - I read this one a long time ago but I don't remember it and ought to read it again

Dahl and Hoare - Hiearchical Program Structures", in "Structured Programming" from 1972.  She said there were three very good papers in this book.  I think I have a copy, but I don't remember this paper. 

Morris - "Protection in Programming Languages" - I don't think I read this one

Wolf and Shaw - "Global Variables Considerd Harmful"

Liskov and Zilles - "Programming with Abstract Datatypes"

Goodenough - "Exception Handling" Issues and a Proposed Notation"

The world has changed!  Students tend to think these papers are boring.  "Everybody knows that!"  It is good to remember that these were revolutionary papers, opposed by many at the time they came out.  If we want to start a revolution, it is good to study the revolutionaries of the past.

Tom Malone of the MIT Business School gave the afternoon keynote for Onward!  It was about using computers to amplify the intelligence of groups of humans.  He is a very good speaker.  I wondered whether he had a teleprompter, or whether he had the talk memorized.  That is how slick it was.  He has been studying internet systems that make use of the power of crowds and gave a detailed analysis of the design choices that go into these systems.  The talk was very pattern-like, and he noted that he could have called the design choices patterns, but instead called them "genes".  He had four major decisions, and a list of choices for each, with reasons to make or avoid each choice.

I'm looking forward to today!