Simple Things Simple, Intro
Making Simple Things Simple, Making Complex Things Possible
Mitchel Resnick
Henry Lieberman
The Problem
Why programming [as opposed to "being a user"]?
Why is programming hard?
What can make programming easier?
Address failures of conventional programming systems
Programming languages are difficult to learn
Programs are difficult to debug
Programs are difficult to modify
Build on successes
People have intuitive understanding of procedures
Make programming more like real-world activities that people are good at
People succeed in using commercial applications
Very young children can learn a suitable programming language
Well, what are you going to do about it?
Simpler programming languages
Better programming environments, programming models
Visual programming languages
Programming by example
Programmable applications / scripting languages
Intelligent agents
*** Your idea here ***
Provide a programming language that is easier to use
More like English: "Dear Mr. Computer"
Simplified syntax
Provide more high-level primitives
Provide an environment that is easier to use
Programming ain't just programming languages
* Better debuggers
* Better browsers
* Better editing tools
Provide a programming model that is better suited to the task
Parallelism
Constraints
Logic Programming
Rule-based Programming
Use graphics: Provide a visual programming language
1 Picture = 1K Words ?
Some people are more comfortable with visual, concrete problem solving than textual, abstract domains
When the subject matter is best expressed visually, textual languages are awkward
Make the application itself programmable
Application [e.g. spreadsheet] comes with built-in programming language
So-called "scripting" languages
Primitives have one-to-one correspondence with interface elements
Teach the machine: Programming by Example / by Demonstration
User shows the machine how to work out an example
Interface records user actions
Learning mechanism generalizes a program that can work on analogous examples
Mondrian:
An Instructible Graphical Editor
Mondrian =
* An object-oriented graphical editor +
* An agent that records user interface actions +
* Learning and generalization heuristics
Delegate, don't program!
Intelligent interface agents
lieber@media.mit.edu