Adventures in Advanced Symbolic Programming Gerald Jay Sussman

Total Page:16

File Type:pdf, Size:1020Kb

Adventures in Advanced Symbolic Programming Gerald Jay Sussman Adventures in Advanced Symbolic Programming Officially: Large-scale Symbolic Systems Gerald Jay Sussman Spring 2021: U:6.905, G:6.945 Goal: How to make robust systems: systems that are • general: have acceptable behavior over a much larger class of situations than was an- ticipated by their designers. • evolvable: can be easily adapted to new jobs with only minor modification. This kind of robustness is the holy grail of engineering design. Content We study concepts and techniques for the design and implementation of large systems that can be adapted to uses not anticipated by the designer. We learn ways to • decouple goals from strategy • implement additive data-directed invocation • work with partially-specified entities • manage multiple viewpoints We consider engineering tradeoffs: flexibility vs efficiency, correctness, security 6.945 is for People who LOVE to Program! Software Design for Fexibility (Chris Hanson and Ger- ald Jay Sussman) will serve as the basic textbook for the class. Online version will be available for rental by MIT Press. Rental for registered students will be paid for by GJS. Printed (dead tree) ver- sion willl be given to each registered student (gratis GJS). Structure and Interpretation of Computer Programs (Abel- son & Sussman with Sussman) will provide some background. There will also be readings from relevant papers and articles. Substantial weekly programming as- signments and a final project are an integral part of the subject. We will use Scheme, a dialect of Lisp. All software will be free (libre) and sharable. No proprietary software will be required for this class and all software created in this class will be free software. Prerequisites: 6.034 (or comparable programming experience).
Recommended publications
  • Reflexive Interpreters 1 the Problem of Control
    Reset reproduction of a Ph.D. thesis proposal submitted June 8, 1978 to the Massachusetts Institute of Technology Electrical Engineering and Computer Science Department. Reset in LaTeX by Jon Doyle, December 1995. c 1978, 1995 Jon Doyle. All rights reserved.. Current address: MIT Laboratory for Computer Science. Available via http://www.medg.lcs.mit.edu/doyle Reflexive Interpreters Jon Doyle [email protected] Massachusetts Institute of Technology, Artificial Intelligence Laboratory Cambridge, Massachusetts 02139, U.S.A. Abstract The goal of achieving powerful problem solving capabilities leads to the “advice taker” form of program and the associated problem of control. This proposal outlines an approach to this problem based on the construction of problem solvers with advanced self-knowledge and introspection capabilities. 1 The Problem of Control Self-reverence, self-knowledge, self-control, These three alone lead life to sovereign power. Alfred, Lord Tennyson, OEnone Know prudent cautious self-control is wisdom’s root. Robert Burns, A Bard’s Epitath The woman that deliberates is lost. Joseph Addison, Cato A major goal of Artificial Intelligence is to construct an “advice taker”,1 a program which can be told new knowledge and advised about how that knowledge may be useful. Many of the approaches towards this goal have proposed constructing additive formalisms for trans- mitting knowledge to the problem solver.2 In spite of considerable work along these lines, formalisms for advising problem solvers about the uses and properties of knowledge are rela- tively undeveloped. As a consequence, the nondeterminism resulting from the uncontrolled application of many independent pieces of knowledge leads to great inefficiencies.
    [Show full text]
  • A Critique of Abelson and Sussman Why Calculating Is Better Than
    A critique of Abelson and Sussman - or - Why calculating is better than scheming Philip Wadler Programming Research Group 11 Keble Road Oxford, OX1 3QD Abelson and Sussman is taught [Abelson and Sussman 1985a, b]. Instead of emphasizing a particular programming language, they emphasize standard engineering techniques as they apply to programming. Still, their textbook is intimately tied to the Scheme dialect of Lisp. I believe that the same approach used in their text, if applied to a language such as KRC or Miranda, would result in an even better introduction to programming as an engineering discipline. My belief has strengthened as my experience in teaching with Scheme and with KRC has increased. - This paper contrasts teaching in Scheme to teaching in KRC and Miranda, particularly with reference to Abelson and Sussman's text. Scheme is a "~dly-scoped dialect of Lisp [Steele and Sussman 19781; languages in a similar style are T [Rees and Adams 19821 and Common Lisp [Steele 19821. KRC is a functional language in an equational style [Turner 19811; its successor is Miranda [Turner 1985k languages in a similar style are SASL [Turner 1976, Richards 19841 LML [Augustsson 19841, and Orwell [Wadler 1984bl. (Only readers who know that KRC stands for "Kent Recursive Calculator" will have understood the title of this There are four language features absent in Scheme and present in KRC/Miranda that are important: 1. Pattern-matching. 2. A syntax close to traditional mathematical notation. 3. A static type discipline and user-defined types. 4. Lazy evaluation. KRC and SASL do not have a type discipline, so point 3 applies only to Miranda, Philip Wadhr Why Calculating is Better than Scheming 2 b LML,and Orwell.
    [Show full text]
  • The Evolution of Lisp
    1 The Evolution of Lisp Guy L. Steele Jr. Richard P. Gabriel Thinking Machines Corporation Lucid, Inc. 245 First Street 707 Laurel Street Cambridge, Massachusetts 02142 Menlo Park, California 94025 Phone: (617) 234-2860 Phone: (415) 329-8400 FAX: (617) 243-4444 FAX: (415) 329-8480 E-mail: [email protected] E-mail: [email protected] Abstract Lisp is the world’s greatest programming language—or so its proponents think. The structure of Lisp makes it easy to extend the language or even to implement entirely new dialects without starting from scratch. Overall, the evolution of Lisp has been guided more by institutional rivalry, one-upsmanship, and the glee born of technical cleverness that is characteristic of the “hacker culture” than by sober assessments of technical requirements. Nevertheless this process has eventually produced both an industrial- strength programming language, messy but powerful, and a technically pure dialect, small but powerful, that is suitable for use by programming-language theoreticians. We pick up where McCarthy’s paper in the first HOPL conference left off. We trace the development chronologically from the era of the PDP-6, through the heyday of Interlisp and MacLisp, past the ascension and decline of special purpose Lisp machines, to the present era of standardization activities. We then examine the technical evolution of a few representative language features, including both some notable successes and some notable failures, that illuminate design issues that distinguish Lisp from other programming languages. We also discuss the use of Lisp as a laboratory for designing other programming languages. We conclude with some reflections on the forces that have driven the evolution of Lisp.
    [Show full text]
  • Performance Engineering of Proof-Based Software Systems at Scale by Jason S
    Performance Engineering of Proof-Based Software Systems at Scale by Jason S. Gross B.S., Massachusetts Institute of Technology (2013) S.M., Massachusetts Institute of Technology (2015) Submitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of the requirements for the degree of Doctor of Philosophy at the MASSACHUSETTS INSTITUTE OF TECHNOLOGY February 2021 © Massachusetts Institute of Technology 2021. All rights reserved. Author............................................................. Department of Electrical Engineering and Computer Science January 27, 2021 Certified by . Adam Chlipala Associate Professor of Electrical Engineering and Computer Science Thesis Supervisor Accepted by . Leslie A. Kolodziejski Professor of Electrical Engineering and Computer Science Chair, Department Committee on Graduate Students 2 Performance Engineering of Proof-Based Software Systems at Scale by Jason S. Gross Submitted to the Department of Electrical Engineering and Computer Science on January 27, 2021, in partial fulfillment of the requirements for the degree of Doctor of Philosophy Abstract Formal verification is increasingly valuable as our world comes to rely more onsoft- ware for critical infrastructure. A significant and understudied cost of developing mechanized proofs, especially at scale, is the computer performance of proof gen- eration. This dissertation aims to be a partial guide to identifying and resolving performance bottlenecks in dependently typed tactic-driven proof assistants like Coq. We present a survey of the landscape of performance issues in Coq, with micro- and macro-benchmarks. We describe various metrics that allow prediction of performance, such as term size, goal size, and number of binders, and note the occasional surprising lack of a bottleneck for some factors, such as total proof term size.
    [Show full text]
  • Reading List
    EECS 101 Introduction to Computer Science Dinda, Spring, 2009 An Introduction to Computer Science For Everyone Reading List Note: You do not need to read or buy all of these. The syllabus and/or class web page describes the required readings and what books to buy. For readings that are not in the required books, I will either provide pointers to web documents or hand out copies in class. Books David Harel, Computers Ltd: What They Really Can’t Do, Oxford University Press, 2003. Fred Brooks, The Mythical Man-month: Essays on Software Engineering, 20th Anniversary Edition, Addison-Wesley, 1995. Joel Spolsky, Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity, APress, 2004. Most content is available for free from Spolsky’s Blog (see http://www.joelonsoftware.com) Paul Graham, Hackers and Painters, O’Reilly, 2004. See also Graham’s site: http://www.paulgraham.com/ Martin Davis, The Universal Computer: The Road from Leibniz to Turing, W.W. Norton and Company, 2000. Ted Nelson, Computer Lib/Dream Machines, 1974. This book is now very rare and very expensive, which is sad given how visionary it was. Simon Singh, The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography, Anchor, 2000. Douglas Hofstadter, Goedel, Escher, Bach: The Eternal Golden Braid, 20th Anniversary Edition, Basic Books, 1999. Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, 2nd Edition, Prentice Hall, 2003.
    [Show full text]
  • Introduction to the Literature on Programming Language Design Gary T
    Computer Science Technical Reports Computer Science 7-1999 Introduction to the Literature On Programming Language Design Gary T. Leavens Iowa State University Follow this and additional works at: http://lib.dr.iastate.edu/cs_techreports Part of the Programming Languages and Compilers Commons Recommended Citation Leavens, Gary T., "Introduction to the Literature On Programming Language Design" (1999). Computer Science Technical Reports. 59. http://lib.dr.iastate.edu/cs_techreports/59 This Article is brought to you for free and open access by the Computer Science at Iowa State University Digital Repository. It has been accepted for inclusion in Computer Science Technical Reports by an authorized administrator of Iowa State University Digital Repository. For more information, please contact [email protected]. Introduction to the Literature On Programming Language Design Abstract This is an introduction to the literature on programming language design and related topics. It is intended to cite the most important work, and to provide a place for students to start a literature search. Keywords programming languages, semantics, type systems, polymorphism, type theory, data abstraction, functional programming, object-oriented programming, logic programming, declarative programming, parallel and distributed programming languages Disciplines Programming Languages and Compilers This article is available at Iowa State University Digital Repository: http://lib.dr.iastate.edu/cs_techreports/59 Intro duction to the Literature On Programming Language Design Gary T. Leavens TR 93-01c Jan. 1993, revised Jan. 1994, Feb. 1996, and July 1999 Keywords: programming languages, semantics, typ e systems, p olymorphism, typ e theory, data abstrac- tion, functional programming, ob ject-oriented programming, logic programming, declarative programming, parallel and distributed programming languages.
    [Show full text]
  • What to Read
    Massachusetts Institute ofTechnology Artificial Intelligence Laboratory Working Paper 239 November 1982 What to Read A Biased Guide to Al Literacy for the Beginner Philip E. Agre Abstract: This note tries to provide a quick guide to Al literacy for the beginning Al hacker and for the experienced Al hacker or two whose scholarship isn't what it should be. Most will recognize it as the same old list of classic papers, give or take a few that I feel to be under- or over-rated. It is not guaranteed to be thorough or balanced or anything like that. A.I. Laboratory Working Papers are produced for internal circulation, and may contain information that is, for example, too preliminary or too detailed for formal publication. It is not intended that they should be considered papers to which reference can be made in the literature. Acknowledgements. It was Ken Forbus' idea, and he, Howic Shrobe, D)an Weld, and John Batali read various drafts. Dan Huttenlocher and Tom Knight helped with the speech recognition section. The science fiction section was prepared with the aid of my SF/Al editorial board, consisting of Carl Feynman and David Wallace, and of the ArpaNet SF-Lovers community. Even so, all responsibility rests with me. Introduction I discovered the hard way that it's a good idea for a beginning Al hacker to set about reading everything. But where to start? The purpose of this note is to provide the beginning Al hacker (and the experienced Al hacker or two whose scholarship isn't what it should be) with some starting places that I've found useful in my own reading.
    [Show full text]
  • 40Th Anniversary of EE-CS
    40th Anniversary of EE-CS 40th anniversary of EECS: How CS took its place alongside EE by Eric Smalley The EECS Department owes its existence to many small things. Millions of small things, in fact. In the 1960s, researchers who were developing circuit theory, and those who were writing software, were operating in a new, common paradigm. The ability to connect millions of simple components via simple connection rules can give rise to extraordinarily complex systems. At MIT, those people were in a single department: Electrical Engineering. The Electrical Engineering Department was founded at the turn of the 20th century to research and develop power systems. In the run up to World War II, the government formed the Radiation Laboratory to carry out the country’s radar R&D and housed the lab at MIT. The lab brought together hundreds of scientists and engineers from around the country who gained hands-on experience developing electronic systems and participated in one of the largest multidisciplinary collaborations in history. Many in the MIT Electrical Engineering department worked at the Radiation Laboratory, and most returned to the department after the Prof. (then student) Gerald Sussman operating the PDP-6 war. “That gave them a huge start in the whole process of reorganizing the department in quite a different direction” during the 1950s, said the Artificial Intelligence Group, which Profs. John Prof. Emeritus Campbell Searle. McCarthy and Marvin Minsky launched in 1959. Prof. Gerald Jay Sussman remembers his days as an undergraduate in the early years of Project MAC. He worked with Minsky, who had a single Digital Equipment Corporation PDP-6 computer that Minsky was able to upgrade, at a cost of $380,000 to a megabyte of RAM.
    [Show full text]
  • CS 59: Principles of Programming Languages Sergey Bratus, Fall 2016
    CS 59: Principles of Programming Languages Sergey Bratus, Fall 2016 Objectives: To explore features and abstractions of programming languages that make them \modern" and motivate their ongoing development. To understand how these features are implemented in actual inter- preters, compilers, and virtual machines. To get a taste for different styles of programming: functional, object-oriented, continuation-passing, \monadic",1 and others. To look under the hood of language abstrac- tions. In practical terms, this course should give you some idea why languages like Scala and Clojure|and before them Perl, Python, and Ruby|were sought by the industry, and why leading companies continue developing new languages such as Go and Swift. Required background: The course assumes that you wrote relatively complex programs in a language like C, C++, Java, Python, or Ruby, and have a good understanding of recursive data structures such as lists and trees. For this reason, CS 10 is a requirement and CS 30 is recommended. Having programmed in LISP, Scheme, ML, Haskell, or other functional languages will be helpful but not required. You will be expected to either have or quickly develop an understanding of how a language like C is compiled down to machine code, and how that machine code executes on the actual CPU. For this reason, CS 51 is recommended, but if you are familiar with x86 or ARM machine code from other sources, or took a class in compilers, that will be sufficient. Expect to do as much (or more) looking at how abstractions are implemented as coding. The X-hour: As a rule, we will not be using the X-hour for lectures, but may use it for optional meetings (e.g., to catch up on a background subject).
    [Show full text]
  • Structure and Interpretation of Computer Programs Second Edition
    [Go to first, previous, next page; contents; index] [Go to first, previous, next page; contents; index] Structure and Interpretation of Computer Programs second edition Harold Abelson and Gerald Jay Sussman with Julie Sussman foreword by Alan J. Perlis The MIT Press Cambridge, Massachusetts London, England McGraw-Hill Book Company New York St. Louis San Francisco Montreal Toronto [Go to first, previous, next page; contents; index] [Go to first, previous, next page; contents; index] This book is one of a series of texts written by faculty of the Electrical Engineering and Computer Science Department at the Massachusetts Institute of Technology. It was edited and produced by The MIT Press under a joint production-distribution arrangement with the McGraw-Hill Book Company. Ordering Information: North America Text orders should be addressed to the McGraw-Hill Book Company. All other orders should be addressed to The MIT Press. Outside North America All orders should be addressed to The MIT Press or its local distributor. © 1996 by The Massachusetts Institute of Technology Second edition All rights reserved. No part of this book may be reproduced in any form or by any electronic or mechanical means (including photocopying, recording, or information storage and retrieval) without permission in writing from the publisher. This book was set by the authors using the LATEX typesetting system and was printed and bound in the United States of America. Library of Congress Cataloging-in-Publication Data Abelson, Harold Structure and interpretation of computer programs / Harold Abelson and Gerald Jay Sussman, with Julie Sussman. -- 2nd ed. p. cm. -- (Electrical engineering and computer science series) Includes bibliographical references and index.
    [Show full text]
  • ICSE: Years 1976 to 1984
    ICSE: Years 1976 to 1984 Structured analysis for Requirements Definition (abstract only) Douglas T. Ross, Kenneth E. Schoman, Jr. Page: 1 PSL/PSA a computer-aided technique for structured documentation and analysis of information processing systems Daniel Teichroew, Ernest Allen Hershey, III Page: 2 Automated software engineering through structured data management C. A. Irvine, J. W. Brackett Page: 3 The design of the PSI program synthesis system Cordell Green Pages: 4 - 18 Observations on the interaction between coding and efficiency knowledge in the PSI Program Synthesis System David R. Barstow, Elaine Kant Pages: 19 - 31 Is ``sometime’’ sometimes better than ``always’’?: Intermittent assertions in proving program correctness Zohar Manna, Richard Waldinger Pages: 32 - 39 Verification of fairness in an implementation of monitors Richard Alan Karp, David C. Luckham Pages: 40 - 46 Signaling in monitors John H. Howard Pages: 47 - 52 Verification of a monitor specification Ashok R. Saxena, Thomas H. Bredt Pages: 53 - 59 The Software Development System C. G. Davis, C. R. Vick Page: 60 Software requirements: Are they really a problem? T. E. Bell, T. A. Thayer Pages: 61 - 68 A requirements engineering methodology for real-time processing requirements Mack Alford Page: 69 An extendable approach to computer-aided software requirements engineering Thomas E. Bell, David C. Bixler, Margaret E. Dyer Page: 70 Specifications a key to effective software development P. C. Belford, A. F. Bond, D. G. Henderson, L. S. Sellers Pages: 71 - 79 Process Design engineering a Methodology for Real-time Software development S. N. Gaulding, J. D. Lawson Pages: 80 - 85 Process design system an integrated set of software development tools R.
    [Show full text]
  • Reports Assigned an "AD"
    ♦. X 0 PUBLICATIONS Room NE43-908 ARTIFICIAL INTELLIGENCE LABORATORY 545 TECHNOLOGY SQUARE CAMBRIDGE, MA 02139 IJCAI Participants: This is a currsnt listing of availabls MIT Al Lab publications. If you wish to order any, please enclose completed order form and exact payment in the pre-addressed envelope and drop in any Institute Interdepartmental mailbox. Your publications will be mailed to you as soon as possible. If you prefer to pick up your order while you are at IJCAI, the Publications Office will be open between 12:15PM and I:3OPM each day of the conference. Since storage space is limited (generally we stock about 100 copies of each publication], it is likely that some, if not all, of your order will be mailed to you at a later date after supplies are replenished. Reports assigned an "AD" number are available from the National Technical Information Service, Operations Division, Springfield, Virginia 22151 in both microfiche and paper copies. PAGPtI 86 Design of the Hand, Marvin Minsky, August 1965, MAC-M-258 (see Al Memo 267) ($.90) 90 MIOAS, Petsr Samson, Oct. 1968. Revised version of MAC-M-279, Oct 1965 (see A.I. Memos 179, 214). ($1.70) 116 POP-6 LISP (LISP __3), January 1967, Rsvissd April 1967 (see A.I. Memo 190 and MACLISP Reference Manual, O. Moon et al, Project MAC). ($1.30) Thia ie a mosaic description of PDP-6 LISP, intended for readers familiar with ths LISP 1.5 Programmsr's Manual or who have used LISP on soms other computer. 122 Remarks on Correlation Tracking, Marvin Minsky, March 1967.
    [Show full text]