* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download What in the World Is Alan Kay Up To?
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
Go (programming language) wikipedia , lookup
Structured programming wikipedia , lookup
One-pass compiler wikipedia , lookup
Cross compiler wikipedia , lookup
C Sharp (programming language) wikipedia , lookup
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