Type Talk Outline
A preliminary outline for the talk.
This is a preliminary outline by topics. Just the topic name and (sometimes) a brief mention of content is given. I usually figure a couple of minutes per topic slide (with 0-1 continuation slides) (and thats often too fast) so for a 45min-1hr talk I should have 20 narrow topics, with a couple over (usually optional) for slop. A couple of the slides are transitional and they tend to go faster, so 20-25 slides is a good goal. I seem to have 32, so some of these may be elided.
- Introduction - what the talk is about
- Why should anyone care about types, in particular working programmers
- Dante analogy (cute pic)
- Limbo (transition)
- Fortran, Cobol, Lisp - languages more or less outside the "typed programming language" model
- Fortran - variables typed with initial character ("God is real..."), common blocks
- Lisp - dynamic typing and scoping - so there is no way to assign a type to a value
- Inferno (transition)
- C (other languages too, but focus on C)
- lexically typed (and kind of strongly typed), but types are programmer assigned, not always checked (depends on compiler) and easily hidden/changed
- Purgatorio (transition)
- strong typing in object oriented systems (kittens and tigers)
- Dynamic vs static typing
- Java, C++ etc.
- Object type systems and their problems without generics
- interfaces vs inheritance
- co/contra variance
- Casting away types (inheritance security/maintainability problems)
- Rational numbers with singleton zero.
- generics (ML functors)
- c++ generics are turing complete
- is ArrayList<Integer> a subtype (it is not a subclass) of ArrayList<Object>
- type erasure
- Paradiso (transition)
- Lambda calculus (computability)
- Typed lambda calculus
- very strong typing
- type inference
- Categories (just mention)
- New Languages (scala in particular)
- Wrap up