13. MY CAREER, GEOGRAPHY & NUMBERS (THIS IS PLDI AFTER ALL)
1980
1984
1985
1987
2001
14. MY CAREER, GEOGRAPHY & NUMBERS (THIS IS PLDI AFTER ALL)
1980
1984
1985
1987
2001
15. MY CAREER, GEOGRAPHY & NUMBERS (THIS IS PLDI AFTER ALL)
1980
1984
1985
1987
2001
G*DDAMN FOREIGNER
16. MY CAREER, GEOGRAPHY & NUMBERS (THIS IS PLDI AFTER ALL)
1980
1984
1985
1987
2001
G*DDAMN FOREIGNER
17.
18. WHAT’S LOVE GOT TO DO WITH IT
πrogramming
λanguages
You are here because
you fell in love with
something about
programming languages.
19. YOU CAN’T JUST KEEP YOUR FINGERS OFF
πrogramming
λanguages
The most fundamental area
of computer science. If you
don’t have a language, you
can’t compute.
20. YOU CAN’T JUST KEEP YOUR FINGERS OFF
πrogramming
λanguages
The most fundamental area
of computer science. If you
don’t have a language, you
can’t compute.
Developers primarily use
programming languages.
The tools we build have
meaning for them.
21. YOU CAN’T JUST KEEP YOUR FINGERS OFF
πrogramming
λanguages
The most fundamental area
of computer science. If you
don’t have a language, you
can’t compute.
Developers primarily use
programming languages.
The tools we build have
meaning for them.
You will get to work with
elegant mathematics and,
some of you will develop
new mathematics.
22. YOU CAN’T JUST KEEP YOUR FINGERS OFF
πrogramming
λanguages
The most fundamental area
of computer science. If you
don’t have a language, you
can’t compute.
Developers primarily use
programming languages.
The tools we build have
meaning for them.
You will get to work with
elegant mathematics and,
some of you will develop
new mathematics.
Where else do
you get to work
with the coolest
professors on
the planet?
30. AND LOVE IS WHAT GETS YOU BACK ON TRACK.
But really, if you don’t love
PL, getting a PhD is hard.
31. AND LOVE IS WHAT GETS YOU BACK ON TRACK.
But really, if you don’t love
PL, getting a PhD is hard.
Hard because it’s
an old and now
‘hidden’ discipline.
32. AND LOVE IS WHAT GETS YOU BACK ON TRACK.
But really, if you don’t love
PL, getting a PhD is hard.
Hard because it’s
an old and now
‘hidden’ discipline.
HARD because it isn’t
‘hot’ with IT industry.
33. AND LOVE IS WHAT GETS YOU BACK ON TRACK.
But really, if you don’t love
PL, getting a PhD is hard.
Hard because it’s
an old and now
‘hidden’ discipline.
HARD because it isn’t
‘hot’ with IT industry.
H.A.R.D.
35. ONE LAST WARNING: IF YOU DON’T LOVE IT, LEAVE IT.
If you want to be famous, get
into Artificial Intelligence.
36. ONE LAST WARNING: IF YOU DON’T LOVE IT, LEAVE IT.
If you want to be famous, get
into Artificial Intelligence.
If you want to make money,
do Big Data.
37. ONE LAST WARNING: IF YOU DON’T LOVE IT, LEAVE IT.
If you want to be famous, get
into Artificial Intelligence.
If you want to make money,
do Big Data.
If you want a career,
switch majors. I hear our
Business School is looking
for students.
39. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
40. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1987
CORKY CARTWRIGHT
“LET’S WORK ON TYPES
FOR SCHEME”
41. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1987
CORKY CARTWRIGHT
“LET’S WORK ON TYPES
FOR SCHEME”
1988
(It doesn’t have to be
love at first sight.)
42. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1987
CORKY CARTWRIGHT
“LET’S WORK ON TYPES
FOR SCHEME”
COOL! WORKING WITH
CARTWRIGHT AND FAGAN
1989
1988
(It doesn’t have to be
love at first sight.)
43. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1987
CORKY CARTWRIGHT
“LET’S WORK ON TYPES
FOR SCHEME”
COOL! WORKING WITH
CARTWRIGHT AND FAGAN
1989
1993/94
THE ONLY USER OF
ANDREW WRIGHT’S SOFT
SCHEME
1988
(It doesn’t have to be
love at first sight.)
44. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1987
CORKY CARTWRIGHT
“LET’S WORK ON TYPES
FOR SCHEME”
COOL! WORKING WITH
CARTWRIGHT AND FAGAN
1989
1993/94
THE ONLY USER OF
ANDREW WRIGHT’S SOFT
SCHEME
1988
(It doesn’t have to be
love at first sight.)
CO-CREATED SPIDEY
SCHEME WITH CORMAC
FLANAGAN
1995/97
45. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1987
CORKY CARTWRIGHT
“LET’S WORK ON TYPES
FOR SCHEME”
COOL! WORKING WITH
CARTWRIGHT AND FAGAN
1989
1993/94
THE ONLY USER OF
ANDREW WRIGHT’S SOFT
SCHEME
1988
(It doesn’t have to be
love at first sight.)
CO-CREATED SPIDEY
SCHEME WITH CORMAC
FLANAGAN
1995/97
MODULAR SPIDER WITH
PHILIPPE MEUNIER
1998/2003
46. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1987
CORKY CARTWRIGHT
“LET’S WORK ON TYPES
FOR SCHEME”
COOL! WORKING WITH
CARTWRIGHT AND FAGAN
1989
1993/94
THE ONLY USER OF
ANDREW WRIGHT’S SOFT
SCHEME
1988
(It doesn’t have to be
love at first sight.)
CO-CREATED SPIDEY
SCHEME WITH CORMAC
FLANAGAN
1995/97
MODULAR SPIDER WITH
PHILIPPE MEUNIER
1998/2003
2005-2016
TYPED RACKET W/
TOBIN-HOCHSTADT
49. (define (tautology? p)
(bond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
WHAT’S THE TYPE OF AN UNTYPED PROGRAM?
THERE IS LOTS OF LISP OUT THERE
AND THEY MAY WANT TYPES.
1987
50. (define (tautology? p)
(bond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
WHAT’S THE TYPE OF AN UNTYPED PROGRAM?
THERE IS LOTS OF LISP OUT THERE
AND THEY MAY WANT TYPES.
1987
WE WANT WIDE-SPECTRUM
PROGRAMMING.
51. (define (tautology? p)
(bond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
WHAT’S THE TYPE OF AN UNTYPED PROGRAM?
THERE IS LOTS OF LISP OUT THERE
AND THEY MAY WANT TYPES.
PROGRAMMERS DO NOT WANT TO
COPE WITH THE IDIOSYNCRASIES OF
TYPE SYSTEMS.
1987
WE WANT WIDE-SPECTRUM
PROGRAMMING.
52. (define (tautology? p)
(bond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
WHAT’S THE TYPE OF AN UNTYPED PROGRAM?
THERE IS LOTS OF LISP OUT THERE
AND THEY MAY WANT TYPES.
PROGRAMMERS DO NOT WANT TO
COPE WITH THE IDIOSYNCRASIES OF
TYPE SYSTEMS.
IT’LL COME TRUE IN
10 OR 20 YEARS.
1987
WE WANT WIDE-SPECTRUM
PROGRAMMING.
53. (define (tautology? p)
(bond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
WHAT’S THE TYPE OF AN UNTYPED PROGRAM?
THERE IS LOTS OF LISP OUT THERE
AND THEY MAY WANT TYPES.
PROGRAMMERS DO NOT WANT TO
COPE WITH THE IDIOSYNCRASIES OF
TYPE SYSTEMS.
IT’LL COME TRUE IN
10 OR 20 YEARS.
1987
WE WANT WIDE-SPECTRUM
PROGRAMMING.
54. WHAT’S THE TYPE OF AN UNTYPED PROGRAM?
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
(tautology? true)
(tautology? (lambda (x) (lambda (y) (or x y))))
55. WHAT’S THE TYPE OF AN UNTYPED PROGRAM?
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
(tautology? true)
(tautology? (lambda (x) (lambda (y) (or x y))))
56. WHAT’S THE TYPE OF AN UNTYPED PROGRAM?
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
(tautology? true)
(tautology? (lambda (x) (lambda (y) (or x y))))
58. WE CAN SAY IT IN OCAML
type proposition = InL of bool | InR of (bool -> proposition)
let rec is_tautology p =
match p with
| InL b -> b
| InR p -> is_tautology(p true) && is_tautology(p false)
is_tautology (InR(fun x -> InL true))
is_tautology (InR(fun x -> InR(fun y -> or then InL x else InL y)))
59. WE CAN SAY IT IN OCAML
type proposition = InL of bool | InR of (bool -> proposition)
let rec is_tautology p =
match p with
| InL b -> b
| InR p -> is_tautology(p true) && is_tautology(p false)
is_tautology (InR(fun x -> InL true))
is_tautology (InR(fun x -> InR(fun y -> or then InL x else InL y)))
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
60. WE CAN SAY IT IN OCAML
type proposition = InL of bool | InR of (bool -> proposition)
let rec is_tautology p =
match p with
| InL b -> b
| InR p -> is_tautology(p true) && is_tautology(p false);;
is_tautology (InR(fun x -> InL true))
is_tautology (InR(fun x -> InR(fun y -> or then InL x else InL y)))
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
WE DON’T WANT TO WRITE DOWN TYPE
DEFINITIONS. WE DON’T WANT TO ADD
INSERTIONS AND PROJECTIONS.
61. SO HOW COULD WE SAY THIS IN SCHEME?
▸ replace ML’s type algebra (x, *, ->, …)
▸ with Remy’s extensible records exclusively
▸ make it work for 100-line purely functional
programs in quasi-Scheme
62. SO HOW COULD WE SAY THIS IN SCHEME?
▸ replace ML’s type algebra (x, *, ->, …)
▸ with Remy’s extensible records exclusively
▸ make it work for 100-line purely functional
programs in quasi-Scheme
▸ grow it to full Chez Scheme
▸ whole-program inference
▸ success: speed-up
63. WHAT SOFT SCHEME CAN DO
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
(-> (μ (Proposition)
(+ Boolean (-> Boolean Proposition)))
Boolean)
infer via modified HM
64. WHAT SOFT SCHEME CAN DO
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
(-> (μ (Proposition)
(+ Boolean (-> Boolean Proposition)))
Boolean)
infer via modified HM
65. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1989
1993
FAGAN CAN CHECK 100 LINES.
WRIGHT CAN CHECK 1,000 LINES
66. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1989
1993
FAGAN CAN CHECK 100 LINES.
WRIGHT CAN CHECK 1,000 LINES
YOURS TRULY STRUGGLES WITH
DOZENS OF SMALL AND LARGE
PROGRAMS.
1993/94
68. WHAT SOFT SCHEME CAN’T DO,
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (p false))]))
DOZENS OF LINES FOR
THE TYPE MISMATCH W/O
TELLING THE DEV WHERE
THINGS WENT WRONG
69. WHAT SOFT SCHEME CAN’T DO,
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (p false))]))
any sensible type-error
message,
just one, please .. .. ..
formulate
DOZENS OF LINES FOR
THE TYPE MISMATCH W/O
TELLING THE DEV WHERE
THINGS WENT WRONG
70. WHAT SOFT SCHEME CAN’T DO,
any sensible error message,
just one, please .. .. ..
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (p false))]))The Problem:
Gaussian elimination over equations in an
uninterpreted algebras cannot point back to
program when the system (of eqs) is inconsistent.
71. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1989
1993
FAGAN CAN CHECK 100 LINES.
WRIGHT CAN CHECK 1,000 LINES
YOURS TRULY STRUGGLES WITH
DOZENS OF SMALL AND LARGE
PROGRAMS.
1993/94
NEVIN HEINZE SHOWED YOURS
TRULY SET-BASED ANALYSIS,
AND IT FELT LIKE AN IDEA THAT
COULD HELP OUT HERE.
72. HEYA, DID YOU CATCH THIS MISTAKE?
▸ derive sub-typing constraints from code
e.g. dom(f) < rng(g) or int < dom(h)
▸ solve via the transitive closure through the
constructors in the constraint algebra
▸ find type errors by comparing specified
constraints for prime with computed ones
73. WHAT SPIDER CAN DO
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (tautology? (p false)))]))
(-> (μ (Proposition)
(U Boolean (-> Boolean Proposition)))
Boolean)
infer via componential SBA
74. AND THEY CAN EXPLAIN ERRORS, HALLELUJAH!
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (p false))]))
(-> (μ (Proposition)
(U Boolean (-> Proposition)))
Boolean)
inspect errors via
flow graphs and
slices drawn on
top of code
75. AND THEY CAN EXPLAIN ERRORS, HALLELUJAH!
(define (tautology? p)
(cond
[(boolean? p) p]
[else (and (tautology? (p true)) (p false))]))
(-> (μ (Proposition)
(U Boolean (-> Proposition)))
Boolean)
inspect errors via
flow graphs and
slices drawn on
top of code
EVEN WITH 3RD
UNDERGRADUATES
76. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1995-97
FLANAGAN CAN CHECK 3,000 LINES
STUDENT PROGRAMS
FLANAGAN CAN EXPLAIN ERRORS
77. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1995-97
FLANAGAN CAN CHECK 3,000 LINES
STUDENT PROGRAMS
FLANAGAN CAN EXPLAIN ERRORS
1998
WE CANNOT ANALYZE THE
COMPLETE CODE BASE OF THE
SYSTEM ITSELF OR ITS CONTEXT.
WE CAN’T EVEN ‘MODULARIZE’
THE ANALYSIS PROPERLY.
78. WHAT THEY CAN’T DO, ABSOLUTELY NOT, NOT FOR CRYING OUT LOUD
1,000 lines ~ 1 min
2,000 lines ~ 2 min
3,000 lines ~ 3 min
3,500 lines ~ 20 min
40,000 lines ~ 10 hrs
an analysis of large
programs or a truly modular
analysis of such systems
BUT …
79. WHAT THEY CAN’T DO, ABSOLUTELY NOT, NOT FOR CRYING OUT LOUD
1,000 lines ~ 1 min
2,000 lines ~ 2 min
3,000 lines ~ 3 min
3,500 lines ~ 20 min
40,000 lines ~ 10 hrs
an analysis of large
programs or a truly modular
analysis of such systems
BUT …
80. WHAT THEY CAN’T DO, ABSOLUTELY NOT, NOT FOR CRYING OUT LOUD
1,000 lines ~ 1 min
2,000 lines ~ 2 min
3,000 lines ~ 3 min
3,500 lines ~ 20 min
40,000 lines ~ 10 hrs
an analysis of large
programs or a truly modular
analysis of such systems
BUT …
WE KNOW TRANSITIVE CLOSURE IS
BASICALLY O(N^3) .. BUT ..
81. WHAT THEY CAN’T DO, ABSOLUTELY NOT, NOT FOR CRYING OUT LOUD
1,000 lines ~ 1 min
2,000 lines ~ 2 min
3,000 lines ~ 3 min
3,500 lines ~ 20 min
40,000 lines ~ 10 hrs
an analysis of large
programs or a truly modular
analysis of such systems
BUT …
WE KNOW TRANSITIVE CLOSURE IS
BASICALLY O(N^3) .. BUT ..
O(n^8)
82. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1998
1995-97
FLANAGAN CAN CHECK 3,000 LINES
FLANAGAN CAN EXPLAIN ERRORS
WE CANNOT ANALYZE THE
COMPLETE CODE BASE OF THE
SYSTEM ITSELF OR ITS CONTEXT.
WE CAN’T EVEN ‘MODULARIZE’
THE ANALYSIS PROPERLY.
83. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
1998
1995-97
FLANAGAN CAN CHECK 3,000 LINES
YOURS TRULY SAYS
PROGRAMMERS USE
ASSERTIONS, THEY WILL USE
“CONTRACTS.”
FLANAGAN CAN EXPLAIN ERRORS
WE CANNOT ANALYZE THE
COMPLETE CODE BASE OF THE
SYSTEM ITSELF OR ITS CONTEXT.
WE CAN’T EVEN ‘MODULARIZE’
THE ANALYSIS PROPERLY.
84. HEYA, DID YOU CATCH THIS MISTAKE?
▸ modules comes with contracts
▸ type inference turns contracts into
constraints
▸ .. and stores derived constraints per
module
85. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
2002/03
THE DREAM COME TRUE. WE’RE DONE.
MEUNIER’S MRSPIDE
CAN DO IT ALL
86. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
2002/03
THE DREAM COME TRUE. WE’RE DONE.
MEUNIER’S MRSPIDE
CAN DO IT ALL
2005
PROGRAMMERS DON’T REALLY
WRITE GOOD CONTRACTS.
THE TYPES BECOME HUGE AND
INCOMPREHENSIBLE. EVEN WITH GOOD CONTRACTS,
MODULAR ANALYSIS REMAINS A
PIPE DREAM.
87. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
2002/03
THE DREAM COME TRUE. WE’RE DONE.
MEUNIER’S MRSPIDE
CAN DO IT ALL
2005
PROGRAMMERS DON’T REALLY
WRITE GOOD CONTRACTS.
THE TYPES BECOME HUGE AND
INCOMPREHENSIBLE. EVEN WITH GOOD CONTRACTS,
MODULAR ANALYSIS REMAINS A
PIPE DREAM.
88. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
2002/03
THE DREAM COME TRUE. WE’RE DONE.
MEUNIER’S MRSPIDE
CAN DO IT ALL
YOURS TRULY SAYS
“NEVER MIND.”
2005
PROGRAMMERS DON’T REALLY
WRITE GOOD CONTRACTS.
THE TYPES BECOME HUGE AND
INCOMPREHENSIBLE. EVEN WITH GOOD CONTRACTS,
MODULAR ANALYSIS REMAINS A
PIPE DREAM.
89. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
2002/03
THE DREAM COME TRUE. WE’RE DONE.
MEUNIER’S MRSPIDE
CAN DO IT ALL
YOURS TRULY SAYS
“NEVER MIND.”
2005
PROGRAMMERS DON’T REALLY
WRITE GOOD CONTRACTS.
THE TYPES BECOME HUGE AND
INCOMPREHENSIBLE. EVEN WITH GOOD CONTRACTS,
MODULAR ANALYSIS REMAINS A
PIPE DREAM.
THE PROBLEM HAD
BECOME REAL. IT WAS
TIME TO THINK
DIFFERENTLY
90. LET’S ADD TYPES INCREMENTALLY
TO A CODE BASE AND MAKE SURE
THE COMBINATION IS SOUND.
109. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
110. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
WHAT’S
MISSING?
111. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
112. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
OBJECT-
ORIENTED RACKET
113. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
OBJECT-
ORIENTED RACKET
THERE IT
IS!
THERE IT
IS!
114. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
115. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
WE HAVE A DESIGN FOR OO RACKET.
2013
116. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
WE HAVE A DESIGN FOR OO RACKET.
2013
WE HAVE AN IMPLEMENTATION.
2015
117. THE UPS AND DOWNS OF ONE OF MY OWN RESEARCH TOPICS
THE IDEA IS WORKED OUT
THE CONTRACTS WORK
THE TYPE SYSTEMS ACCOMMODATES
THE EXISTING IDIOMS.
2006-2010
WE HAVE A DESIGN FOR OO RACKET.
2013
WE HAVE AN IMPLEMENTATION.
2015
EVERYTHING
HUNKY DORY?
121. WHAT DO YOU DO WHEN YOU GET INTO SUCH A BAD SITUATION?
IS SOUND GRADUAL TYPING DEAD?
2016
1993
1996
2002
2009 2015
1991
TYPE INFERENCE
INCREMENTALLY ADDED
EXPLICITLY STATIC TYPES
122. WHAT DO YOU DO WHEN YOU GET INTO SUCH A BAD SITUATION?
IS SOUND GRADUAL TYPING DEAD?
2016
1993
1996
2002
2009 2015
1991
TYPE INFERENCE
INCREMENTALLY ADDED
EXPLICITLY STATIC TYPES
RESEARCH IS WHEN IT CAN FAIL
123. WHAT DO YOU DO WHEN YOU GET INTO SUCH A BAD SITUATION?
IS SOUND GRADUAL TYPING DEAD?
2016
1993
1996
2002
2009 2015
1991
TYPE INFERENCE
INCREMENTALLY ADDED
EXPLICITLY STATIC TYPES
124. WHAT DO YOU DO WHEN YOU GET INTO SUCH A BAD SITUATION?
IS SOUND GRADUAL TYPING DEAD?
2016
1993
1996
2002
2009 2015
1991
TYPE INFERENCE
INCREMENTALLY ADDED
EXPLICITLY STATIC TYPES
THIS HAPPENS TO ADVISORS
WITH A LONG-TERM RESEARCH
PROGRAM
125. WHAT DO YOU DO WHEN YOU GET INTO SUCH A BAD SITUATION?
IS SOUND GRADUAL TYPING DEAD?
2016
1993
1996
2002
2009 2015
1991
TYPE INFERENCE
INCREMENTALLY ADDED
EXPLICITLY STATIC TYPES
126. WHAT DO YOU DO WHEN YOU GET INTO SUCH A BAD SITUATION?
IS SOUND GRADUAL TYPING DEAD?
2016
1993
1996
2002
2009 2015
1991
TYPE INFERENCE
INCREMENTALLY ADDED
EXPLICITLY STATIC TYPES
AND IT HAPPENS TO STUDENTS
DURING A PHD PROGRAM.
127. PHD RESEARCH: BE PREPARED FOR UPS AND DOWNS
PhD research, like a
relationship, has its
ups and downs.
The downs can feel
very down. Really.
The memories of
“falling in love” can
get you going again.
The ups feel good.
128. PHD RESEARCH: BE PREPARED FOR UPS AND DOWNS
PhD research, like a
relationship, has its
ups and downs.
The downs can feel
very down. Really.
The memories of
“falling in love” can
get you going again.
The ups feel good.
YES, THIS IS IRRATIONAL BUT WHILE DESIGN,
ENGINEERING, & SCIENCE PRODUCE RATIONAL RESULTS,
THE MOTIVATION NEEDS AN IRRATIONAL ELEMENT.
129. PHD RESEARCH: BE PREPARED FOR UPS AND DOWNS
PhD research, like a
relationship, has its
ups and downs.
The downs can feel
very down. Really.
The memories of
“falling in love” can
get you going again.
The ups feel good.
▸ And your advisor’s emotional
wavelength matters, a lot.
▸ So choose your advisor well.
130. PHD RESEARCH: BE PREPARED FOR UPS AND DOWNS
PhD research, like a
relationship, has its
ups and downs.
The downs can feel
very down. Really.
The memories of
“falling in love” can
get you going again.
The ups feel good.
▸ And your advisor’s emotional
wavelength matters, a lot.
▸ So choose your advisor well.
LOVE, LOVE IS WHAT YOU REALLY NEED.
131. THE END
▸ And two dozen PhD students, who had
the guts to work with me and believed
I could be their scientific and
emotional guide
▸ Daniel Friedman, my advisor,
for showing me what an advisor
can do for a PhD student
▸ Herrn G. Dopfer, my high school
mathematics teacher, for encouraging me to
not take English, focus on math and physics,
and go to university, a first for our family