Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Conversational Computing: How Okasaki made McCa...

Conversational Computing: How Okasaki made McCarthy right yet again

View the accompanying recording at https://skillsmatter.com/skillscasts/7277-conversational-computing-how-okasaki-made-mccarthy-right-yet-again

In 1960, when the computing industry was still struggling with what computer languages even were, McCarthy published his infamous paper discovering a formalism which became the guiding light for the next half century of computing.

Forty years later McCarthy published another paper with his incomplete vision for a language for 2015. Little did he know then that on the other side of the country Okasaki had just published the missing piece to his puzzle. In this talk we’ll complete the puzzle he left for us and find out if McCarthy really did end up inspiring the guiding lights for an entire century of computing history.

After doing so we’ll explore what these ideas would mean for computing. We’ll look at some projects, such as Unison, EClj, Oxcart and Kiss, which are building on this vision. Understand why Haskell is a mutable language. Explore how it will change our interactions with computers; how development, experimentation and deployment will change forever and finally how it ends up having a killer feature we wished we never needed.

Avatar for Michiel Trimpe

Michiel Trimpe

December 03, 2015
Tweet

More Decks by Michiel Trimpe

Other Decks in Programming

Transcript

  1. John McCarthy • Coined the term artificial intelligence in 1955

    • Discovered theoretical foundation for a half century of computing: Lisp • Invented garbage collection and time-sharing and non-monotonic reasoning.
  2. Advice Taker “The advice taker is a proposed program for

    solving problems by manipulating sentences in formal languages.” “The main advantages we expect the advice taker to have is that its behavior will be improvable merely by making statements to it, telling it about its symbolic environment and what is wanted from it.”
  3. Advice Taker “One will be able to assume that the

    advice taker will have available to it a fairly wide class of immediate logical consequences of anything it is told and its previous knowledge.” “We shall therefore say a program has common sense if it automatically deduces for itself a sufficiently wide class of immediate consequences of anything it is told and what it already knows.”
  4. Advice Taker • All behaviors must be representable in the

    system. • Changes in behavior must be expressible concisely. • All aspects of behavior must be improvable. • The machine must have concepts of partial success • The system must be able to create subroutines
  5. Advice Taker • All behaviors must be representable in the

    system. • Changes in behavior must be expressible concisely. • All aspects of behavior must be improvable. • The machine must have concepts of partial success • The system must be able to create subroutines
  6. Elephant 2000 “Communication inputs and outputs are in an I-O

    language whose sentences are meaningful speech acts approximately in the sense of philosophers and linguists. These include questions, answers, offers, acceptances, declinations, requests, permissions and promises.”
  7. Elephant 2000 “The correctness of programs is partly defined in

    terms of proper performance of the speech acts. Answers should be truthful and responsive, and promises should be kept. Sentences of logic expressing these forms of correctness can be generated automatically from the form of the program.”
  8. Elephant 2000 “Elephant source programs may not need data structures,

    because they can refer directly to the past. Thus a program can say that an airline passenger has a reservation if he has made one and hasn’t cancelled it.”
  9. Elephant 2000 “Elephant programs themselves can be represented as sentences

    of logic. Their extensional properties follow from this representation without an intervening theory of programming or anything like Hoare axioms.”
  10. Elephant 2000 “Elephant programs that interact non-trivially with the outside

    world can have both input-output specifications, relating the programs inputs and out- puts, and accomplishment specifications concerning what the program accomplishes in the world. These concepts are respectively generalizations of the philosophers’ illocutionary and perlocutionary speech acts.”
  11. Elephant 2000 “The most obvious applications of Elephant are in

    programs that do transaction processing and refer to databases in more general ways than just answering queries and making updates.”
  12. Elephant 2000 “Human use of speech acts involves intelligence. Elephant

    2000 is on the borderline of AI, but the article emphasizes the Elephant usages that do not require AI.”
  13. Elephant 2000 “Communication inputs and outputs are in an I-O

    language whose sentences are meaningful speech acts approximately in the sense of philosophers and linguists. These include questions, answers, offers, acceptances, declinations, requests, permissions and promises.”
  14. Elephant 2000 “Elephant source programs may not need data structures,

    because they can refer directly to the past. Thus a program can say that an airline passenger has a reservation if he has made one and hasn’t cancelled it.”
  15. Elephant 2000 “The most obvious applications of Elephant are in

    programs that do transaction processing and refer to databases in more general ways than just answering queries and making updates.”
  16. Elephant 2000 1. The value of some parameter at a

    given time, say the account balance of a certain person on January 5, 1991. 2. The time of a certain event, say the time when a person was born. 3. The first or last time a certain parameter had a certain value, say the most recent time a certain person was overdrawn at his bank. 4. The unique time or the first or last time a certain proposition was true. 5. Time-valued functions of the whole past, e.g. an average time. 6. Whether a person has an airplane reservation is determined by whether one has been made for him and not subsequently cancelled.
  17. Elephant 2000 “Elephant programs themselves can be represented as sentences

    of logic. Their extensional properties follow from this representation without an intervening theory of programming or anything like Hoare axioms.”
  18. Unison • Typed fully pure lambda calculus • AST is

    a content-addressable Merkle-tree • Embedded distributed computation model • Semantic editor with paredit-style type correctness
  19. Unison Oldest and most comprehensive Actively developed by multiple contributors

    Excellent blog with explorations of this new model Unfortunately not practically usable yet
  20. Kiss Kiss is Immutable, Statically compiled and Symbiotic (with Clojure)


    • Immutable environments - Code is compiled against immutable environments and creating new ones. • Statically compiled - Objects have first-class static types which can be used at both compile- and runtime. • Symbiotic with Clojure - Bootstrapped on Clojure and designed to be used within Clojure environments
  21. EClj • Inspired by the theoretical foundation of Oleg Kisyelov’s

    work on Extensible Effects. • Completely virtualizes Clojure so that code can run in controlled immutable environments. • Processes effects at the top-level interpreter loop, making them fully programmable.
  22. Oxlang • An experiment aimed at building a simpler, static

    lisp in a spirit like that of Clojure • Built on the foundations of the statically optimizing Oxcart compiler • A mostly typed, mostly pure language sufficiently well specified to support both static and dynamic implementations on a variety of platforms.
  23. Historical Code Awareness • Append-only machine-optimized reflection of code •

    Reuse of historical code in event log reprocessing • Reuse in visualization of long-running interactions
  24. Distributed Programming • Function memoization as a distribution model •

    Drastically simplified offline / caching model • Code sharing enables optimistic off-line work
  25. Transparent Actors Actor you interact with sequentially but whose actions

    you can fully predict barring defined synchronization/branching points
  26. Experimentation • Easy to create alternate versions for A/B tests

    • Deployments can be considered alternate versions • Using bandits can create self-healing deployments • Drilling down to full playback of user experience
  27. Holistic Optimisation • Analyze the flow of all users through

    a system • Query for all users exhibiting certain patterns • Design experiments targeting those specific users • Verify experiment and integrate if successful
  28. Conversational Interfaces • Explanations on first reaching parts of the

    system • Detect satisficing and propose better approach • Rewind to get that approach into muscle memory • Create optimized interface using historical patterns
  29. Conversational Interfaces • Explanations on first reaching parts of the

    system • Detect satisficing and propose better approach • Rewind to get that approach into muscle memory • Create optimized interface using historical patterns
  30. Conversational Computing Computing using
 sequences of immutable statements 
 which

    reference the past and
 using these historical statements
 to adjust system behavior
  31. Conversational Privacy • Off-The-Record (OTR) embeds our concept of privacy

    in conversations in cryptographic reality. • For simple messaging the technology is solved, • But solving the social problem requires offering 
 state-of-the-art interactivity and expressiveness.
  32. Conversational Privacy Statements can be: • Encrypted/signed with your private

    key(s) • Shared privately using OTR messaging semantics • Shared publicly by releasing decryption keys
  33. Conversational Privacy You have access to information which: • you

    have created yourself • has been shared with you • has been made public
  34. Conversational Computing or How McCarthy discovered the foundations for the

    first and second half of computing’s first century