SlideShare a Scribd company logo
1 of 56
Life and Work of Dr.Robin Milner


By:
Dr. Navin Kabra, Co-Founder and
CTO, ReliScore.com
Robin Milner
Turing Award 1991 For

 LCF – Automated Theorem Proving

 ML – Programming Language
    
        With Polymorphic Type Inference
    
        Type-Safe Exception Handling

 CCS – A General Theory of Concurrency
“
  A key ingredient in all of his work has been his
ability to combine deep insight into mathematical
 foundations of the subject with an equally deep
 understanding of practical and aesthetic issues,
thus allowing the feedback of theory into practice
                in an exciting way.


                       ”
Outline

    Importance of Types

    Polymorphic Types

    Type Inferencing

    ML

    Life and Work of Robin Milner
Disclaimers

    Not an Expert

    Brief Overviews Only

    High-level Handwaving
PYTHON:

def total(collection):
    tot = 0
    for item in collection:
        tot += item
    return tot


JAVA:

import java.util.*;

class Main {
      public static int total(List collection) {
          int tot = 0;
          Iterator it = collection.iterator();
          while (it.hasNext()) {
                       Integer item = (Integer)it.next();
              tot += item;
          }
          return tot;
      }
}
Java is a typed language

Python has no types (???)
Java is a statically typed language

   Python is dynamically typed
Java: types checked at compile-time

 Python: types checked at runtime
PYTHON:

def total(collection):
    tot = 0
    for item in collection:
        tot += item
    return tot


JAVA:

import java.util.*;

class Main {
      public static int total(List collection) {
          int tot = 0;
          Iterator it = collection.iterator();
          while (it.hasNext()) {
                       Integer item = (Integer)it.next();
              tot += item;
          }
          return tot;
      }
}
PYTHON:

def total(collection):
    tot = 0
    for item in collection:
        tot += item
    return tot


JAVA:

import java.util.*;

class Main {
      public static int total(List<Integer> collection) {
          int tot = 0;
          Iterator<Integer> it = collection.iterator();
          while (it.hasNext()) {
              tot += it.next();
          }
          return tot;
      }
}
Java: safer

Python: easier
The problem of generic computation
PYTHON:

def total(collection):               Works for List of any
    tot = 0                          type that supports '+'
    for item in collection:
        tot += item
    return tot


JAVA:

import java.util.*;

class Main {
      public static int total(List<Integer> collection) {
          int tot = 0;
          Iterator<Integer> it = collection.iterator();
          while (it.hasNext()) {
              tot += it.next();
          }
          return tot;                 Works for List of
      }
                                      Integer only
}
GENERIC Types in JAVA:

import java.util.*;

class Main<T> {
      public static T total(List<T> collection) {
          T tot = 0;
          Iterator<T> it = collection.iterator();
          while (it.hasNext()) {
              tot += it.next();
          }
          return tot;
      }
}
GENERIC Type Examples:

class MyList<T> {
    T[] array_of_items;

    public MyList<T>() {
        this.array_of_items = new T[10];
    }

    public T getElem(int n) {
        return this.array_of_items[n];
    }

    public void bubbleSort() {
       for(int i=0; i<array_of_items.length; i++) {
           for(int j=0; j<i; j++) {
               if (compare(array_of_items[i],
                           array_of_items[j]) > 0) {
               T tmp = array_of_items[i];
               array_of_items[i] = array_of_items[j];
               array_of_items[j] = tmp;
           }
        }
    }
}
Type Inferencing
Java (static typing): safer

Python (dynamic typing): easier
Inferring Types

    All types need not be user-
    specified

    Compiler can infer types
int f(String s) {
   return s.string_length;
}

int g(String x, int y) {
   return f(x) + y;
}
f(String s) {
   return s.string_length;
}

g(x, y) {
  return f(x) + y;
}


-------
Type inferencing

s.string_length is int hence return-type of f is int
f(x) is called, so x is String
f(x) returns int, so f(x) + y is int
Hence return-type of g is int
f(s) {
   return s.string_length;
}

g(x, y) {
  return f(x) + y;
}


-------
Type inferencing

s is any type that allows s.string_length
Only String has s.string_length, so s is String
s.string_length is int
So f is function that takes String and returns int
f(x) returns int, so f(x) + y is int
Hence return-type of g is int
f(s) {
   return s.length;
}

g(x, y) {
  return f(x) + y;
}


-------
Type inferencing

s is any type that allows s.length
Let's call that type S
s.string_length depends upon S
Let type of s.string_length be L
So f is function that takes S and returns L
f(x) + y, so L must support '+'
If only integers support '+' then L is int
Then f is function that takes S and returns int
g is a function that takes S, int and returns int
f(s) {
   return s.length;
}

g(x, y) {
  return f(x) + y;
}


-------
Type inferencing ... continued

More inferencing possible:
 if String is the only class that has s.length
 returning int, then S is String
Type Inferencing – Conceptual View

    Program consists of literals,
    variables and expressions

    Literals have fixed types

    Variables' types have to be
    inferred
Type Inferencing – Basic Idea

    Every expression imposes
    constraints on possible types of
    variables

    Find an assignment of types that
    satisfies all constraints

    “Unification” problem
Most General Type

    Case 1: x is int, y is List<int>, f is
    function taking int, List<int> and
    returning int

    Case 2: x is T, y is List<T>, f is
    function taking T, List<T> and
    returning T
ML
ML

    Milner's ML first programming
    language with polymorphic type
    inference

    Direct Influence on F#, Scala,
    O'Caml, Java

    Indirect influence on most modern
ML Features

    Impure functional programming
    language
    
        Allows side-effects


    Features
    
        Call-by-value (greedy)
    
        First class functions
    
        Garbage collection
ML
Solid Mathematical Foundation, but
        Practical Language
Why ML?
Life & Work of
 Robin Milner
Robin Milner – Early Life

    Born in UK – military family
    
        Second Lieutenant in Royal Engineers


    1950s: King's College Cambridge
    
        B.Sc. Math & Philosophy
    
        First exposure to programming
        −   (Assembly!)
First Programming
            Experience

                       “
  Programming was not a very beautiful thing. I
resolved I would never go near a computer in my
                      life.

     Millner found the activity of "writing one
instruction after the other" to be "inelegant" and
                    "arbitrary".
Early Life - Contd

    No PhD

    1 year as a school teacher

    2 years of National Service – Suez

    Job for Computer Manufacturer
    Ferranti
    
        QA, Program Library Maintenance, Compiler
Entry to Academia

    1963 City University London:
    
        “moved to academia with a passionate belief that a
        deeper understanding of programming could form
        the basis for a more elegant practice.”


    Exposure to relational algebra
    
        “but did not get very far with that”
Program Semantics

    1968: Exposure to Christopher
    Strachey & Dana Scott
    
        “Computable Functionals”
    
        Abstract mathematical model for programs
        −   Meaning of programs
        −   “Denotational Semantics”


    Exposure to Provably Correct
Automated Theorem Proving

    Program Verification
    
        Manually intensive, boring, error-prone job


    Milner's idea: Use programs for
    automated proofs
    
        Result: Toy programs only
    
        Difficult to do anything interesting
Assisted Theorem Proving

    1971-1973 Stanford
    
        Exposure to John McCarthy's AI program
    
        Milner's idea: assist human intelligence, don't
        replace it
    
        Use machines to help humans do Strachey-Scott
        style proving
        −   On practical examples
Stanford LCF

    Interactive user-driven proof
    system

    Computer given goals, sub-goals

    Computer constructs whole proof
    under user direction

    Reduces tedium, ensures
What's a Proof?

    Start with axioms
    
        Known facts


    And inference rules
    
        Method of generating new facts from old ones


    Repeatedly apply rules to prove
    theorems
Proof Assistant

    Understands axioms, inference
    rules

    Understands standard patterns of
    proof
    
        e.g. substitution, induction, simplification
    
        “Tactics”


    Understands how to combine
Applications of Theorem Proving

    Intel/Motorola use for chip
    verification
    
        FDIV bug
Generalizing Theorem Proving

    How to add new tactics and new
    tacticals to a proof assistant

    How to prove that they don't have
    bugs
Meta Language

    Language to define:
    
        Axioms
    
        Inference Rules
    
        Patterns of Proof (Tactics)
    
        Composition of Tactics (Tacticals)


    How
    
        Data types, whose pre-defined values are axioms
    
ML Requirements - Broad

    Solve practical problems

    Use absolute minimum concepts

    Rigorously defined and analyzed
ML Requirements -
              Detailed

    Algebra based (not hardware)

    Very simple foundation

    Orthogonal ideas
    
        Study and analyze independently
    
        Combine in powerful ways


    Easy to define and prove
ML Design

    Needs of theorem proving
    influenced design

    Narrow focus = simple/elegant
    language

    But (surprisingly?) wide
    applicability
Problems with LCF

    Works only for simple sequential
    programs
    
        What about concurrent programs?
    
        What about user inputs
    
        What about non-deterministic behavior?
CCS

    1980s

    Theoretical foundation for
    provable correctness of concurrent
    programs

    Modeling of shared data structures
    (memory locations)
After Turing Award

    Pi-calculus

    Theory of comunicating and
    mobile programs

    Allow network topology to change
    during program execution
Impact of pi-calculus

    spi-calculus used in proofs of
    cryptographic protocols

    Stochastic pi-calculus used in
    molecular biology

    Also used in business processes
Challenges

    Need mathematical foundations
    for:
    
        Data provenance
    
        Privacy
    
        Authorization
    
        Trust (amongst users)
    
        Self-awareness
    
        Self-management
Milner died on 20 March 2010
               th

   but his work lives on
“
  A key ingredient in all of his work has been his
ability to combine deep insight into mathematical
 foundations of the subject with an equally deep
 understanding of practical and aesthetic issues,
thus allowing the feedback of theory into practice
                in an exciting way.


                       ”

More Related Content

What's hot (20)

Python advance
Python advancePython advance
Python advance
 
Python basics
Python basicsPython basics
Python basics
 
Solid Deconstruction
Solid DeconstructionSolid Deconstruction
Solid Deconstruction
 
Data types in python
Data types in pythonData types in python
Data types in python
 
Python revision tour i
Python revision tour iPython revision tour i
Python revision tour i
 
Java Generics
Java GenericsJava Generics
Java Generics
 
Python 3 Programming Language
Python 3 Programming LanguagePython 3 Programming Language
Python 3 Programming Language
 
Introduction To Programming with Python
Introduction To Programming with PythonIntroduction To Programming with Python
Introduction To Programming with Python
 
Chapter 10 data handling
Chapter 10 data handlingChapter 10 data handling
Chapter 10 data handling
 
Fundamentals of Python Programming
Fundamentals of Python ProgrammingFundamentals of Python Programming
Fundamentals of Python Programming
 
Python Basics
Python Basics Python Basics
Python Basics
 
Lazy java
Lazy javaLazy java
Lazy java
 
What is Python?
What is Python?What is Python?
What is Python?
 
Python Session - 4
Python Session - 4Python Session - 4
Python Session - 4
 
Introduction to Python - Part Three
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Three
 
Python
PythonPython
Python
 
C++ Standard Template Library
C++ Standard Template LibraryC++ Standard Template Library
C++ Standard Template Library
 
Effective Java - Enum and Annotations
Effective Java - Enum and AnnotationsEffective Java - Enum and Annotations
Effective Java - Enum and Annotations
 
Python Tutorial Part 1
Python Tutorial Part 1Python Tutorial Part 1
Python Tutorial Part 1
 
Introduction to Python Part-1
Introduction to Python Part-1Introduction to Python Part-1
Introduction to Python Part-1
 

Viewers also liked

What is wrong with the Internet? [On the foundations of internet security, fu...
What is wrong with the Internet? [On the foundations of internet security, fu...What is wrong with the Internet? [On the foundations of internet security, fu...
What is wrong with the Internet? [On the foundations of internet security, fu...Persistent Systems Ltd.
 
Life & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@PersistentLife & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@PersistentPersistent Systems Ltd.
 
Alan Turing Centenary @ Persistent Systems
Alan Turing Centenary @ Persistent SystemsAlan Turing Centenary @ Persistent Systems
Alan Turing Centenary @ Persistent SystemsPersistent Systems Ltd.
 
Systems Design Experiences or Just Some War Stories…
Systems Design Experiences or Just Some War Stories…Systems Design Experiences or Just Some War Stories…
Systems Design Experiences or Just Some War Stories…Persistent Systems Ltd.
 
Early History of Fortran: The Making of a Wonder | Turing100@Persistent
Early History of Fortran: The Making of a Wonder | Turing100@PersistentEarly History of Fortran: The Making of a Wonder | Turing100@Persistent
Early History of Fortran: The Making of a Wonder | Turing100@PersistentPersistent Systems Ltd.
 
Life and Work of Jim Gray | Turing100@Persistent
Life and Work of Jim Gray | Turing100@PersistentLife and Work of Jim Gray | Turing100@Persistent
Life and Work of Jim Gray | Turing100@PersistentPersistent Systems Ltd.
 

Viewers also liked (7)

What is wrong with the Internet? [On the foundations of internet security, fu...
What is wrong with the Internet? [On the foundations of internet security, fu...What is wrong with the Internet? [On the foundations of internet security, fu...
What is wrong with the Internet? [On the foundations of internet security, fu...
 
System Anecdotes | Turing100@Persistent
System Anecdotes | Turing100@PersistentSystem Anecdotes | Turing100@Persistent
System Anecdotes | Turing100@Persistent
 
Life & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@PersistentLife & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@Persistent
 
Alan Turing Centenary @ Persistent Systems
Alan Turing Centenary @ Persistent SystemsAlan Turing Centenary @ Persistent Systems
Alan Turing Centenary @ Persistent Systems
 
Systems Design Experiences or Just Some War Stories…
Systems Design Experiences or Just Some War Stories…Systems Design Experiences or Just Some War Stories…
Systems Design Experiences or Just Some War Stories…
 
Early History of Fortran: The Making of a Wonder | Turing100@Persistent
Early History of Fortran: The Making of a Wonder | Turing100@PersistentEarly History of Fortran: The Making of a Wonder | Turing100@Persistent
Early History of Fortran: The Making of a Wonder | Turing100@Persistent
 
Life and Work of Jim Gray | Turing100@Persistent
Life and Work of Jim Gray | Turing100@PersistentLife and Work of Jim Gray | Turing100@Persistent
Life and Work of Jim Gray | Turing100@Persistent
 

Similar to Life & Work of Robin Milner | Turing100@Persistent

Functional Programming You Already Know - Kevlin Henney - Codemotion Rome 2015
Functional Programming You Already Know - Kevlin Henney - Codemotion Rome 2015Functional Programming You Already Know - Kevlin Henney - Codemotion Rome 2015
Functional Programming You Already Know - Kevlin Henney - Codemotion Rome 2015Codemotion
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python ProgrammingVijaySharma802
 
Functional Programming You Already Know
Functional Programming You Already KnowFunctional Programming You Already Know
Functional Programming You Already KnowKevlin Henney
 
Introduction to Python Programming | InsideAIML
Introduction to Python Programming | InsideAIMLIntroduction to Python Programming | InsideAIML
Introduction to Python Programming | InsideAIMLVijaySharma802
 
TypeScript and Deep Learning
TypeScript and Deep LearningTypeScript and Deep Learning
TypeScript and Deep LearningOswald Campesato
 
D3, TypeScript, and Deep Learning
D3, TypeScript, and Deep LearningD3, TypeScript, and Deep Learning
D3, TypeScript, and Deep LearningOswald Campesato
 
D3, TypeScript, and Deep Learning
D3, TypeScript, and Deep LearningD3, TypeScript, and Deep Learning
D3, TypeScript, and Deep LearningOswald Campesato
 
Python interview questions and answers
Python interview questions and answersPython interview questions and answers
Python interview questions and answersRojaPriya
 
Python interview questions and answers
Python interview questions and answersPython interview questions and answers
Python interview questions and answerskavinilavuG
 
Functions2.pdf
Functions2.pdfFunctions2.pdf
Functions2.pdfDaddy84
 
Functional programming with FSharp
Functional programming with FSharpFunctional programming with FSharp
Functional programming with FSharpDaniele Pozzobon
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingRichardWarburton
 
PRESENTATION ON PYTHON.pptx
PRESENTATION ON PYTHON.pptxPRESENTATION ON PYTHON.pptx
PRESENTATION ON PYTHON.pptxabhishek364864
 
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxStatic abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxMarco Parenzan
 
Functions_21_22.pdf
Functions_21_22.pdfFunctions_21_22.pdf
Functions_21_22.pdfpaijitk
 

Similar to Life & Work of Robin Milner | Turing100@Persistent (20)

Functional Programming You Already Know - Kevlin Henney - Codemotion Rome 2015
Functional Programming You Already Know - Kevlin Henney - Codemotion Rome 2015Functional Programming You Already Know - Kevlin Henney - Codemotion Rome 2015
Functional Programming You Already Know - Kevlin Henney - Codemotion Rome 2015
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
 
Functional Programming You Already Know
Functional Programming You Already KnowFunctional Programming You Already Know
Functional Programming You Already Know
 
Introduction to Python Programming | InsideAIML
Introduction to Python Programming | InsideAIMLIntroduction to Python Programming | InsideAIML
Introduction to Python Programming | InsideAIML
 
TypeScript and Deep Learning
TypeScript and Deep LearningTypeScript and Deep Learning
TypeScript and Deep Learning
 
D3, TypeScript, and Deep Learning
D3, TypeScript, and Deep LearningD3, TypeScript, and Deep Learning
D3, TypeScript, and Deep Learning
 
D3, TypeScript, and Deep Learning
D3, TypeScript, and Deep LearningD3, TypeScript, and Deep Learning
D3, TypeScript, and Deep Learning
 
Functions.pdf
Functions.pdfFunctions.pdf
Functions.pdf
 
Functionscs12 ppt.pdf
Functionscs12 ppt.pdfFunctionscs12 ppt.pdf
Functionscs12 ppt.pdf
 
Python interview questions and answers
Python interview questions and answersPython interview questions and answers
Python interview questions and answers
 
Python interview questions and answers
Python interview questions and answersPython interview questions and answers
Python interview questions and answers
 
Functions2.pdf
Functions2.pdfFunctions2.pdf
Functions2.pdf
 
Functional programming with FSharp
Functional programming with FSharpFunctional programming with FSharp
Functional programming with FSharp
 
Python for dummies
Python for dummiesPython for dummies
Python for dummies
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional Programming
 
PRESENTATION ON PYTHON.pptx
PRESENTATION ON PYTHON.pptxPRESENTATION ON PYTHON.pptx
PRESENTATION ON PYTHON.pptx
 
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxStatic abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
 
Functions_21_22.pdf
Functions_21_22.pdfFunctions_21_22.pdf
Functions_21_22.pdf
 
Python for Dummies
Python for DummiesPython for Dummies
Python for Dummies
 
C# programming
C# programming C# programming
C# programming
 

More from Persistent Systems Ltd.

Skilling for SMAC by Anand Deshpande, Founder, Chairman and Managing Director...
Skilling for SMAC by Anand Deshpande, Founder, Chairman and Managing Director...Skilling for SMAC by Anand Deshpande, Founder, Chairman and Managing Director...
Skilling for SMAC by Anand Deshpande, Founder, Chairman and Managing Director...Persistent Systems Ltd.
 
Embedded Linux Evolution | Turing Techtalk
Embedded Linux Evolution | Turing TechtalkEmbedded Linux Evolution | Turing Techtalk
Embedded Linux Evolution | Turing TechtalkPersistent Systems Ltd.
 
Life and Work of Ken Thompson and Dennis Ritchie | Turing Techtalk
Life and Work of Ken Thompson and Dennis Ritchie | Turing TechtalkLife and Work of Ken Thompson and Dennis Ritchie | Turing Techtalk
Life and Work of Ken Thompson and Dennis Ritchie | Turing TechtalkPersistent Systems Ltd.
 
Life and Work of Ivan Sutherland | Turing100@Persistent
Life and Work of Ivan Sutherland | Turing100@PersistentLife and Work of Ivan Sutherland | Turing100@Persistent
Life and Work of Ivan Sutherland | Turing100@PersistentPersistent Systems Ltd.
 
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Persistent Systems Ltd.
 
Life and Work of Ronald L. Rivest, Adi Shamir & Leonard M. Adleman | Turing10...
Life and Work of Ronald L. Rivest, Adi Shamir & Leonard M. Adleman | Turing10...Life and Work of Ronald L. Rivest, Adi Shamir & Leonard M. Adleman | Turing10...
Life and Work of Ronald L. Rivest, Adi Shamir & Leonard M. Adleman | Turing10...Persistent Systems Ltd.
 
Life and Work of Judea Perl | Turing100@Persistent
Life and Work of Judea Perl | Turing100@PersistentLife and Work of Judea Perl | Turing100@Persistent
Life and Work of Judea Perl | Turing100@PersistentPersistent Systems Ltd.
 
Life and Work of Dr. John Backus | Turing100@Persistent
Life and Work of Dr. John Backus | Turing100@PersistentLife and Work of Dr. John Backus | Turing100@Persistent
Life and Work of Dr. John Backus | Turing100@PersistentPersistent Systems Ltd.
 
Software Faults, Failures and Their Mitigations | Turing100@Persistent
Software Faults, Failures and Their Mitigations | Turing100@PersistentSoftware Faults, Failures and Their Mitigations | Turing100@Persistent
Software Faults, Failures and Their Mitigations | Turing100@PersistentPersistent Systems Ltd.
 
Life & Work of Dr. Vinton Cerf and Dr. Robert Kahn | Turing100@Persistent
Life & Work of Dr. Vinton Cerf and Dr. Robert Kahn | Turing100@PersistentLife & Work of Dr. Vinton Cerf and Dr. Robert Kahn | Turing100@Persistent
Life & Work of Dr. Vinton Cerf and Dr. Robert Kahn | Turing100@PersistentPersistent Systems Ltd.
 
Net Neutrality | Turing100@Persistent Systems
Net Neutrality | Turing100@Persistent SystemsNet Neutrality | Turing100@Persistent Systems
Net Neutrality | Turing100@Persistent SystemsPersistent Systems Ltd.
 
Alan Turing Scientist Unlimited | Turing100@Persistent Systems
Alan Turing Scientist Unlimited | Turing100@Persistent SystemsAlan Turing Scientist Unlimited | Turing100@Persistent Systems
Alan Turing Scientist Unlimited | Turing100@Persistent SystemsPersistent Systems Ltd.
 
Life and work of E.F. (Ted) Codd | Turing100@Persistent
Life and work of E.F. (Ted) Codd | Turing100@PersistentLife and work of E.F. (Ted) Codd | Turing100@Persistent
Life and work of E.F. (Ted) Codd | Turing100@PersistentPersistent Systems Ltd.
 

More from Persistent Systems Ltd. (13)

Skilling for SMAC by Anand Deshpande, Founder, Chairman and Managing Director...
Skilling for SMAC by Anand Deshpande, Founder, Chairman and Managing Director...Skilling for SMAC by Anand Deshpande, Founder, Chairman and Managing Director...
Skilling for SMAC by Anand Deshpande, Founder, Chairman and Managing Director...
 
Embedded Linux Evolution | Turing Techtalk
Embedded Linux Evolution | Turing TechtalkEmbedded Linux Evolution | Turing Techtalk
Embedded Linux Evolution | Turing Techtalk
 
Life and Work of Ken Thompson and Dennis Ritchie | Turing Techtalk
Life and Work of Ken Thompson and Dennis Ritchie | Turing TechtalkLife and Work of Ken Thompson and Dennis Ritchie | Turing Techtalk
Life and Work of Ken Thompson and Dennis Ritchie | Turing Techtalk
 
Life and Work of Ivan Sutherland | Turing100@Persistent
Life and Work of Ivan Sutherland | Turing100@PersistentLife and Work of Ivan Sutherland | Turing100@Persistent
Life and Work of Ivan Sutherland | Turing100@Persistent
 
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
 
Life and Work of Ronald L. Rivest, Adi Shamir & Leonard M. Adleman | Turing10...
Life and Work of Ronald L. Rivest, Adi Shamir & Leonard M. Adleman | Turing10...Life and Work of Ronald L. Rivest, Adi Shamir & Leonard M. Adleman | Turing10...
Life and Work of Ronald L. Rivest, Adi Shamir & Leonard M. Adleman | Turing10...
 
Life and Work of Judea Perl | Turing100@Persistent
Life and Work of Judea Perl | Turing100@PersistentLife and Work of Judea Perl | Turing100@Persistent
Life and Work of Judea Perl | Turing100@Persistent
 
Life and Work of Dr. John Backus | Turing100@Persistent
Life and Work of Dr. John Backus | Turing100@PersistentLife and Work of Dr. John Backus | Turing100@Persistent
Life and Work of Dr. John Backus | Turing100@Persistent
 
Software Faults, Failures and Their Mitigations | Turing100@Persistent
Software Faults, Failures and Their Mitigations | Turing100@PersistentSoftware Faults, Failures and Their Mitigations | Turing100@Persistent
Software Faults, Failures and Their Mitigations | Turing100@Persistent
 
Life & Work of Dr. Vinton Cerf and Dr. Robert Kahn | Turing100@Persistent
Life & Work of Dr. Vinton Cerf and Dr. Robert Kahn | Turing100@PersistentLife & Work of Dr. Vinton Cerf and Dr. Robert Kahn | Turing100@Persistent
Life & Work of Dr. Vinton Cerf and Dr. Robert Kahn | Turing100@Persistent
 
Net Neutrality | Turing100@Persistent Systems
Net Neutrality | Turing100@Persistent SystemsNet Neutrality | Turing100@Persistent Systems
Net Neutrality | Turing100@Persistent Systems
 
Alan Turing Scientist Unlimited | Turing100@Persistent Systems
Alan Turing Scientist Unlimited | Turing100@Persistent SystemsAlan Turing Scientist Unlimited | Turing100@Persistent Systems
Alan Turing Scientist Unlimited | Turing100@Persistent Systems
 
Life and work of E.F. (Ted) Codd | Turing100@Persistent
Life and work of E.F. (Ted) Codd | Turing100@PersistentLife and work of E.F. (Ted) Codd | Turing100@Persistent
Life and work of E.F. (Ted) Codd | Turing100@Persistent
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

Life & Work of Robin Milner | Turing100@Persistent

  • 1. Life and Work of Dr.Robin Milner By: Dr. Navin Kabra, Co-Founder and CTO, ReliScore.com
  • 2. Robin Milner Turing Award 1991 For  LCF – Automated Theorem Proving  ML – Programming Language  With Polymorphic Type Inference  Type-Safe Exception Handling  CCS – A General Theory of Concurrency
  • 3. “ A key ingredient in all of his work has been his ability to combine deep insight into mathematical foundations of the subject with an equally deep understanding of practical and aesthetic issues, thus allowing the feedback of theory into practice in an exciting way. ”
  • 4. Outline  Importance of Types  Polymorphic Types  Type Inferencing  ML  Life and Work of Robin Milner
  • 5. Disclaimers  Not an Expert  Brief Overviews Only  High-level Handwaving
  • 6. PYTHON: def total(collection): tot = 0 for item in collection: tot += item return tot JAVA: import java.util.*; class Main { public static int total(List collection) { int tot = 0; Iterator it = collection.iterator(); while (it.hasNext()) { Integer item = (Integer)it.next(); tot += item; } return tot; } }
  • 7. Java is a typed language Python has no types (???)
  • 8. Java is a statically typed language Python is dynamically typed
  • 9. Java: types checked at compile-time Python: types checked at runtime
  • 10. PYTHON: def total(collection): tot = 0 for item in collection: tot += item return tot JAVA: import java.util.*; class Main { public static int total(List collection) { int tot = 0; Iterator it = collection.iterator(); while (it.hasNext()) { Integer item = (Integer)it.next(); tot += item; } return tot; } }
  • 11. PYTHON: def total(collection): tot = 0 for item in collection: tot += item return tot JAVA: import java.util.*; class Main { public static int total(List<Integer> collection) { int tot = 0; Iterator<Integer> it = collection.iterator(); while (it.hasNext()) { tot += it.next(); } return tot; } }
  • 13. The problem of generic computation
  • 14. PYTHON: def total(collection): Works for List of any tot = 0 type that supports '+' for item in collection: tot += item return tot JAVA: import java.util.*; class Main { public static int total(List<Integer> collection) { int tot = 0; Iterator<Integer> it = collection.iterator(); while (it.hasNext()) { tot += it.next(); } return tot; Works for List of } Integer only }
  • 15. GENERIC Types in JAVA: import java.util.*; class Main<T> { public static T total(List<T> collection) { T tot = 0; Iterator<T> it = collection.iterator(); while (it.hasNext()) { tot += it.next(); } return tot; } }
  • 16. GENERIC Type Examples: class MyList<T> { T[] array_of_items; public MyList<T>() { this.array_of_items = new T[10]; } public T getElem(int n) { return this.array_of_items[n]; } public void bubbleSort() { for(int i=0; i<array_of_items.length; i++) { for(int j=0; j<i; j++) { if (compare(array_of_items[i], array_of_items[j]) > 0) { T tmp = array_of_items[i]; array_of_items[i] = array_of_items[j]; array_of_items[j] = tmp; } } } }
  • 18. Java (static typing): safer Python (dynamic typing): easier
  • 19. Inferring Types  All types need not be user- specified  Compiler can infer types
  • 20. int f(String s) { return s.string_length; } int g(String x, int y) { return f(x) + y; }
  • 21. f(String s) { return s.string_length; } g(x, y) { return f(x) + y; } ------- Type inferencing s.string_length is int hence return-type of f is int f(x) is called, so x is String f(x) returns int, so f(x) + y is int Hence return-type of g is int
  • 22. f(s) { return s.string_length; } g(x, y) { return f(x) + y; } ------- Type inferencing s is any type that allows s.string_length Only String has s.string_length, so s is String s.string_length is int So f is function that takes String and returns int f(x) returns int, so f(x) + y is int Hence return-type of g is int
  • 23. f(s) { return s.length; } g(x, y) { return f(x) + y; } ------- Type inferencing s is any type that allows s.length Let's call that type S s.string_length depends upon S Let type of s.string_length be L So f is function that takes S and returns L f(x) + y, so L must support '+' If only integers support '+' then L is int Then f is function that takes S and returns int g is a function that takes S, int and returns int
  • 24. f(s) { return s.length; } g(x, y) { return f(x) + y; } ------- Type inferencing ... continued More inferencing possible: if String is the only class that has s.length returning int, then S is String
  • 25. Type Inferencing – Conceptual View  Program consists of literals, variables and expressions  Literals have fixed types  Variables' types have to be inferred
  • 26. Type Inferencing – Basic Idea  Every expression imposes constraints on possible types of variables  Find an assignment of types that satisfies all constraints  “Unification” problem
  • 27. Most General Type  Case 1: x is int, y is List<int>, f is function taking int, List<int> and returning int  Case 2: x is T, y is List<T>, f is function taking T, List<T> and returning T
  • 28. ML
  • 29. ML  Milner's ML first programming language with polymorphic type inference  Direct Influence on F#, Scala, O'Caml, Java  Indirect influence on most modern
  • 30. ML Features  Impure functional programming language  Allows side-effects  Features  Call-by-value (greedy)  First class functions  Garbage collection
  • 31. ML Solid Mathematical Foundation, but Practical Language
  • 33. Life & Work of Robin Milner
  • 34. Robin Milner – Early Life  Born in UK – military family  Second Lieutenant in Royal Engineers  1950s: King's College Cambridge  B.Sc. Math & Philosophy  First exposure to programming − (Assembly!)
  • 35. First Programming Experience “ Programming was not a very beautiful thing. I resolved I would never go near a computer in my life. Millner found the activity of "writing one instruction after the other" to be "inelegant" and "arbitrary".
  • 36. Early Life - Contd  No PhD  1 year as a school teacher  2 years of National Service – Suez  Job for Computer Manufacturer Ferranti  QA, Program Library Maintenance, Compiler
  • 37. Entry to Academia  1963 City University London:  “moved to academia with a passionate belief that a deeper understanding of programming could form the basis for a more elegant practice.”  Exposure to relational algebra  “but did not get very far with that”
  • 38. Program Semantics  1968: Exposure to Christopher Strachey & Dana Scott  “Computable Functionals”  Abstract mathematical model for programs − Meaning of programs − “Denotational Semantics”  Exposure to Provably Correct
  • 39. Automated Theorem Proving  Program Verification  Manually intensive, boring, error-prone job  Milner's idea: Use programs for automated proofs  Result: Toy programs only  Difficult to do anything interesting
  • 40. Assisted Theorem Proving  1971-1973 Stanford  Exposure to John McCarthy's AI program  Milner's idea: assist human intelligence, don't replace it  Use machines to help humans do Strachey-Scott style proving − On practical examples
  • 41. Stanford LCF  Interactive user-driven proof system  Computer given goals, sub-goals  Computer constructs whole proof under user direction  Reduces tedium, ensures
  • 42. What's a Proof?  Start with axioms  Known facts  And inference rules  Method of generating new facts from old ones  Repeatedly apply rules to prove theorems
  • 43. Proof Assistant  Understands axioms, inference rules  Understands standard patterns of proof  e.g. substitution, induction, simplification  “Tactics”  Understands how to combine
  • 44. Applications of Theorem Proving  Intel/Motorola use for chip verification  FDIV bug
  • 45. Generalizing Theorem Proving  How to add new tactics and new tacticals to a proof assistant  How to prove that they don't have bugs
  • 46. Meta Language  Language to define:  Axioms  Inference Rules  Patterns of Proof (Tactics)  Composition of Tactics (Tacticals)  How  Data types, whose pre-defined values are axioms 
  • 47. ML Requirements - Broad  Solve practical problems  Use absolute minimum concepts  Rigorously defined and analyzed
  • 48. ML Requirements - Detailed  Algebra based (not hardware)  Very simple foundation  Orthogonal ideas  Study and analyze independently  Combine in powerful ways  Easy to define and prove
  • 49. ML Design  Needs of theorem proving influenced design  Narrow focus = simple/elegant language  But (surprisingly?) wide applicability
  • 50. Problems with LCF  Works only for simple sequential programs  What about concurrent programs?  What about user inputs  What about non-deterministic behavior?
  • 51. CCS  1980s  Theoretical foundation for provable correctness of concurrent programs  Modeling of shared data structures (memory locations)
  • 52. After Turing Award  Pi-calculus  Theory of comunicating and mobile programs  Allow network topology to change during program execution
  • 53. Impact of pi-calculus  spi-calculus used in proofs of cryptographic protocols  Stochastic pi-calculus used in molecular biology  Also used in business processes
  • 54. Challenges  Need mathematical foundations for:  Data provenance  Privacy  Authorization  Trust (amongst users)  Self-awareness  Self-management
  • 55. Milner died on 20 March 2010 th but his work lives on
  • 56. “ A key ingredient in all of his work has been his ability to combine deep insight into mathematical foundations of the subject with an equally deep understanding of practical and aesthetic issues, thus allowing the feedback of theory into practice in an exciting way. ”