Download What in the World Is Alan Kay Up To?

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Comment (computer programming) wikipedia , lookup

Programming language wikipedia , lookup

Design Patterns wikipedia , lookup

Supercomputer wikipedia , lookup

Library (computing) wikipedia , lookup

Falcon (programming language) wikipedia , lookup

Program optimization wikipedia , lookup

Reactive programming wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Compiler wikipedia , lookup

Go (programming language) wikipedia , lookup

C++ wikipedia , lookup

Smalltalk wikipedia , lookup

Structured programming wikipedia , lookup

One-pass compiler wikipedia , lookup

Cross compiler wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Interpreter (computing) wikipedia , lookup

Object-oriented programming wikipedia , lookup

Transcript
Bootstrapping The Computer Revolution
or, What in the World Is Alan Kay Up To?
presented by Gavin Claypool
• Globally dispersed research group comes from a
tradition of whole systems design (APRAnet, PARC)
• Ideology is motivated by user-centered systems design
• Research Focus:
–
–
–
–
Teaching and learning powerful ideas (Squeak eToys)
Powerful ideas content and how to represent it (dynaWIKIpedia)
User interfaces that aid learning and doing (OLPC)
Inventing fundamental new computing technologies (SE model)
• One Laptop Per Child (OLPC) Initiative
– Launched by MIT’s Media Lab in 2005
now an independent not-for-profit group
– Machine designed for “learning learning”
“It's an education project, not a laptop project.”
– VRI designing future user interface;
one facet: it learns what kind of user
is trying to use it
This is something that every good teacher does,
but (amazingly) has not been in any existing UI.
• User interface that helps people learn things
– how their computer system works (mundane)
– math, science, reading and writing (interesting)
• Reinventing Programming (NSF grant)
A Brief History of Programming
•
•
•
•
•
•
•
Machine language (on/off switches: 1’s and 0’s)
Assembly language (1-to-1 ML mnemonics)
Compiled language (early Fortran)
Structured language (Pascal)
“Fourth-generation” language (SQL)
Object-oriented language (Java)
“Experimental” (APL, Smalltalk)
… and how it grew …
•
•
•
•
•
•
Direct execution (load and run mach. inst.)
Operating system (one program at a time)
Timesharing systems (multiple users)
Minicomputers
Microcomputers (the “personal” computer)
-- and in the last 30 years?
• GUIs (mouse, wygiwyg), Internet, Web
… and grew!
• Comparison of Code Size
– MacOS X 10.4
≈86,000,000 lines of code
– Windows Vista≈50,000,000 lines of code
– Red Hat Linux 7.1
≈30,000,000 lines of code
– Squeak Smalltalk
≈230,000 lines of code
But does it need to?
• Comparison of Code Size
– MacOS X 10.4
≈86,000,000 lines of code
– Windows Vista≈50,000,000 lines of code
– Red Hat Linux 7.1
≈30,000,000 lines of code
– Squeak Smalltalk
≈230,000 lines of code
– APL programs
1 line of code
An Excruciating Example
• An area that needs more than incremental improvements
is programming, both in the large and in the small.
• Code is too:
–
–
–
–
–
–
–
Large
Complex
Costly
Buggy
Insecure
Segregated
Inexpressive
Objective
• To make a practical working mathematical model
of a complete personal computer system
– Powerful enough to capture the phenomena
– Small enough to be comprehensible
• Reduce necessary size by a factor of 10
(≈20,000 lines)
– 5X by a different, more advanced design
– 2X by removing unused code
The “Self-Exploratorium”
• A practical working system
that is its own model
• Extremely compact
• Highly useful end-user system
• A system to learn about systems
Broader Impacts of the Model
• Most early learning of programming is
non-scalable: large v. small programs
• Deeper (mathematics-like) nature of the
most powerful ideas in computing (CS) are
poorly described and learned via papers
• What should be done differently? 
A simpler, yet stronger approach
• Well-designed system, instrumented to be:
– Learned
– Understood
– Modified
• Where “the system is the curriculum” for
– Teenagers
– University students
– Developing world (OLPC potential)
Blazing New Paths
•
•
•
•
•
•
•
Operating system
Application
Media
Internet / Web
Protection and Security
Programming
Self-Disclosure
Operating System paths
• Classical path – layers of code (kernel, shell, etc.)
• Internet-inspired path – heterogeneous mixture of
hardware and software works by obeying messagepassing conventions
(In Kay’s view, overemphasizing the objects, and
underemphasizing the messaging, has been one of
the biggest problems in OO software architectures
developed over the past 25 years.)
Utilization of “Real Objects”
• Objects (written in other forms) are dealt with safely via a
combination of message-passing and address space
confinement
Example
• Device drivers will not be part of the system
• Devices furnish their own drivers as needed to system
– Communicate using universal messaging convention
– Driver runs in separate address space
Applications path
• Traditional path – yield proprietary objects
in a way that’s difficult to combine
• DTP-inspired path – any and all objects to
freely combine visually and behaviorally
(similar to articles, pictures, drawings,
captions, etc. combined into a document)
aka HyperCard on Steroids
Media path
• Low-level media models on host machine
– Graphics (“bitblt”, vectorized 2D & 3D)
– Sound (MPEG player)
– Printing (PostScript document format)
• Consolidated into a simpler scheme (than
in Squeak Smalltalk) that provides a little
more functionality with much less code
Internet / Web path
• Traditional Web – architecture is so ad hoc
• New path – simpler functionality that can
work within existing Web (dynaWIKIpedia)
– Find, view, and wysiwyg-author arbitrary
multimedia “pages”
– “Pages” are hyperlinked, searchable, and
allow “services”
dynaWIKIpedia (prototype)
Web Learning
• Wikipedia content is
– mostly hyperlinked text with a few pictures and formulas
– very far from rich dynamic computer media and
the kind of content that most learners need
• Example
– Though it is rather easy even for children to discover
Galileo's characterization for gravity near the surface
of the Earth, and to actually derive the 2nd order
differential equation of motion, there is no such pathway
provided for experimentation
• What is needed
– a dynamic wysiwyg media that combines the full power of
computing and the ease of entry, editing, and quick (wiki)
publishing to the web
Protection and Safety
• “real objects” are already protected
– only receive messages they want to
– only act on messages they want to
• End-user recovery from all errors
– Invertible processes
– Real-time checkpointing
– Versioning
– Undo and Redo
Programming Approach
• As simple as possible scripting “all the way down”
• Allow multiple styles of programming under
one logically consistent framework
• Experiment with and innovate new ways to
program
• Expand user base being served to include
novices (including children)
• Promote computer literacy – [lower the
requirements by simplification]
Scripting Example
Scripting Example
Supported Programming
• Traditional programming
–
–
–
–
Searching
Spreadsheeting
Scripting of media (HyperCard-like)
Templates for new media types
• Non-traditional programming
–
–
–
–
Problem solving via conditions and constraints
Massive parallel “particles and fields” techniques
Deduction, induction, abduction, etc. [*duction]
System bootstrapping method
Explanation and Self-Disclosure
• Existing systems are poor at explaining themselves, even to
professionals
• Any structure should be able to explain and show how it was made
(auto-tutorial)
• Modelling time approach (rather than CPU time) allows extensive
undo, redo, checkpointing, and the ability to run computations
forward and backward to understand what is going on (invertible
processes)
• System will go beyond being reflective (capable of self-modification)
to being introspective (a system which guides programmers to full
disclosure of how it works)
Roles
• Every object is essentially the same kind of object
– The differences are small and mostly parametric:
• objects have different costumes
• have a few different specific behaviors for their special roles, etc.
– System design will emphasize the similarities and diminish the
differences
– Leads to an enormous contraction of the number of meanings (and LOC)
• Theatrical metaphor – Every entity at every level is portrayed by
an intelligent actor wearing appropriate costumes and simply
playing a role
• Biological analogy – there are 250+ cell types in human beings,
all variations of—and derived from—the original fertilized cell
The End-User Thesis
• The end-users are the only important
faction to serve
• The value of a personal computing system
comes solely from how well its users are
used.
• The user interface and user experience is
a good starting place to invent the single
kind of actor
Three Principles
• Specifications should be executable and debuggable
– Specs are actual meanings, not a model of them, in a system
– Absolute separation of meanings from optimizations
• Systems should contain complete operational and latebound* enhanceable models of themselves
• Completely late-bind* the bootstrapping of the
fundamental objects of the system
*Late-binding has to do with what has to be committed to, when, and
how much can be gracefully changed later in the process. In an explorable
field such as computing, critical new ideas that were really needed at the
beginning of the project might only be discovered ¾ of the way through.
“Albert” – Bootstrapping
Bootstrapping
• Disposable compiler implements a simple
message-passing OOL
• Specification-based Object compiler
(implementing the same OOL) is
implemented (static)
• Dynamic expression compiler/evaluator is
implemented using the static compiler;
used to replace the static message
mechanisms with dynamic equivalents
Milestones
18-24 mos. (NSF site visit)
• “meaning engineering” of the main framework
• Graphics, GUI, etc.
“early and often”
• Release of system parts to open source community
to leverage input and testing by members
5 years
• Target for completion of project
Intellectual Merits
• New (or non-mainstream) ideas disposed
in powerful and often novel ways; e.g.
– Bootstrapping method
– “Universal object” approach to end-user
facilities
– Alternatives to OS, applications, web
– Roles (instead of inheritance)
– New ways to program for end-users
Expected Benefits
• Contribute a better approach to personal computing
overall (and to many parts)
• Provide advances in CS, SE, and Design
• Boost understanding and learning about systems,
and how to explain them
(i.e., educate people about them)
• Create test-bed environment: for experiments in
“the programming of the future”
A final comment
•
This proposal for the future starts by trying to recover the best from the past,
particularly the seemingly forgotten ideas of another visionary, Doug Engelbart.
As Kay rightly points out … :
•
[Most of those ideas] were written down 40 years ago by Engelbart.
But in the last few years I’ve been asking computer scientists and programmers
whether they’ve ever typed E-N-G-E-L-B-A-R-T into Google -- and none of them
have. I don’t think you could find a physicist who has not gone back and tried to
find out what Newton actually did. It’s unimaginable. Yet the computing
profession acts as if there isn’t anything to learn from the past, so most people
haven’t gone back and referenced what Engelbart thought.
•
… Not that I agree 100% with all the ideas in the report (… [and] there’re quite
a few I don’t fully grasp) .... But it’s definitely worth the effort reading, trying to
understand and mulling over Alan Kay’s vision of the future of programming.
He knows a bit about these things.
• J. A. Ortega-Ruiz, Catalan Institute for Space Studies, his 2/12/07 blog
Links
• Steps Toward The Reinvention of Programming
NSF Proposal – Granted August 2006
A Compact And Practical Model of Personal Computing As A Self-Exploratorium
http://irbseminars.intel-research.net/AlanKayNSF.pdf
• “The Power of the Context”
remarks made upon receiving the 2004 Draper Prize:
a history of developments at PARC; *** extensive bibliography ***
http://www.vpri.org/pdf/draper_RN-2004-001.pdf
• “Alan Kay: The PC Must Be Revamped—Now”
interview by Allen B. Alter for CIO Insight – 2007 Feb 14
http://www.cioinsight.com/print_article2/0,1217,a=200162,00.asp
• Doug Englebart: Interactive Computing System demo,
1968 FJCC
video (1h 15m): described as “the mother of all demos”
http://video.google.com/videoplay?docid=-8734787622017763097&q=engelbart
• Doug Englebart: Bibliography
http://www.bootstrap.org/institute/bibliography.html