SlideShare a Scribd company logo
Turing’s Curse
July 26, 2013 

John Graham-Cumming

www.cloudflare.com!
A LONG, LONG TIME
AGO...

www.cloudflare.com!
The Mother of All Demos - 1968

www.cloudflare.com!
WHAT’S NEW?

www.cloudflare.com!
I’ve got a bad feeling about this

www.cloudflare.com!
CLOUD COMPUTING

www.cloudflare.com!
Cloud Computing - 1966

www.cloudflare.com!

1966 - 1968
BIG DATA

www.cloudflare.com!
Big Data in 1955

www.cloudflare.com!

1955 - 1968
VIRTUAL MACHINE
HYPERVISOR

www.cloudflare.com!
Virtual Machine Hypervisor - 1967

www.cloudflare.com!

1955 - 1968
HYPERTEXT

www.cloudflare.com!
Hypertext - 1945

www.cloudflare.com!

1945 - 1968
HYPERTEXT WITH
CLICKABLE LINKS

www.cloudflare.com!
Hypertext with clickable links - 1967

www.cloudflare.com!

1945 - 1968
MARKUP LANGUAGES

www.cloudflare.com!
Markup Languages
•  IBM Generalized Markup Language – 1960s

www.cloudflare.com!

1945 - 1968
FIBRE OPTIC
NETWORKING

www.cloudflare.com!
Fibre Optic Networking - 1966

www.cloudflare.com!

1945 - 1968
WIRELESS
NETWORKING

www.cloudflare.com!
Wireless Networking – 1971

www.cloudflare.com!

1945 - 1971
ETHERNET

www.cloudflare.com!
Ethernet - 1973

www.cloudflare.com!

1945 - 1973
SOLID STATE DISKS

www.cloudflare.com!
SSDs – 4MB in 1976

www.cloudflare.com!

1945 - 1976
PROCESSOR
ARCHITECTURE

www.cloudflare.com!
Processor Architecture

1945 - 1976

•  RISC (1960s Cray; 1980s)
•  CISC (1960s IBM mainframes)
•  Instruction and Data Caching (1960s; IBM System/360)
•  Instruction Pipelining and Prefetch (1961 IBM Stretch;

1979 8086)
•  Branch Prediction (1961 IBM Stretch)
•  Vector processor (1974 STAR-100)

www.cloudflare.com!
INTERNETWORKING

www.cloudflare.com!
Internetworking

1945 - 1976

•  Chat – 1967 (NLS later Unix Talk)
•  File Transfer – 1971 (FTP)
•  Email – 1971 (host to host)
•  Remote Procedure Calls – 1975 (RFC 707)



www.cloudflare.com!
GRAPHICAL USER
INTERFACE

www.cloudflare.com!
GUI – Xerox 8010 (1981)

www.cloudflare.com!

1945 - 1981
GUI – Apple Lisa (1983)

www.cloudflare.com!

1945 - 1983
1945 - 1983

INTERNET
TCP/IP – 1983

www.cloudflare.com!
1945 - 1983

FUNCTIONAL
PROGRAMMING 

LISP – 1958
APL - 1964
ML – 1973


www.cloudflare.com!
1945 - 1983

OBJECT ORIENTED
PROGRAMMING
Simula 1 – 1967
C++ - 1979
Smalltalk - 1980

www.cloudflare.com!
1945 - 1983

CONCURRENT
PROGRAMMING
CSP – 1978
Ada - 1979
Occam – 1983


www.cloudflare.com!
1945 - 1983

EVENT DRIVEN
PROGRAMMING 

PL/1 - 1966

www.cloudflare.com!
1945 - 1983

DECLARATIVE
LANGUAGES 

SQL – 1979
Regular Expressions – 1970s

www.cloudflare.com!
HIGH WATER MARK IS
(ROUGHLY) 1983

www.cloudflare.com!
IMPLICATIONS

www.cloudflare.com!
THE THING YOU ARE
DOING HAS BEEN DONE
BEFORE 
There’s great value in computer science
education

www.cloudflare.com!
WE ARE IN THE AGE OF
GREAT PRODUCTIVITY
Be thankful all that stuff’s been invented
already

www.cloudflare.com!
WE HAVE YET TO
CONQUER
UNRELIABILITY

www.cloudflare.com!
Ada Lovelace (1840s)

www.cloudflare.com!
Grace Hopper (1947)

www.cloudflare.com!
Maurice Wilkes (1950s)
• As soon as we started programming,

we found to our surprise that it wasn't
as easy to get programs right as we
had thought. Debugging had to be
discovered. I can remember the
exact instant when I realized that a
large part of my life from then on
was going to be spent in finding
mistakes in my own programs.
www.cloudflare.com!
Donald Knuth (1990s)
•  Question from audience: “Which programming language

do you prefer Java or C++?”
•  Knuth: “Which has the better debugger?”

www.cloudflare.com!
TURING’S CURSE
1936: There is no program that, given a
description of an arbitrary computer program,
can decide whether the program finishes
running or continues to run forever. 


www.cloudflare.com!
WORK ON RELIABILITY
Help programmers make fewer mistakes
Help programmers find their mistakes

www.cloudflare.com!

More Related Content

OSCON 2013: Turing's Curse