Full talk: http://www.tele-task.de/archive/video/flash/14029/ - this version is where my timestamps apply.
- Also available is the talk broken down into 4 parts: http://www.tele-task.de/archive/lecture/overview/5819/
Referenced several times on Hacker News but strangely, got little attention there. This talk is a favorite of mine as Kay challenges our preconceptions with a whirlwind tour of computing over half a century, with the overall message that we've barely begun to codify, teach, and learn best practices in creating software. My notes on his talk are below, often with a leading time-stamp should you want semi-random-access.
- Credits working w/ smart team of colleagues, at VPRI.
- He starts w/ saying it's the 50th anniversary of object-oriented programming, a term he invented in 1961. Back then, they thought we'd be developing at higher level than C by now. We haven't advanced nearly as much as we'd like.
- 4:10 Bob Barton's machine was more advanced than today's computers,
- Paper recommendation: "A New Approach to the Functional Design of
a Digital Computer" only 6 pages long.
- Barton's computer was built, it ran longest at a German bank, un-crashable.
- We must study the past in CS, to gain perspective.
- Barton's course: told students to read these key papers; then Barton would destroy all preconceptions. Best course Kay ever took at any level.
- Paper recommendation: "A New Approach to the Functional Design of a Digital Computer" only 6 pages long.
- 6:50 "The biggest problem we have as human beings is that we confuse
our beliefs with reality."
- Barton destroyed students' preconceptions, and his own, to free their minds.
- 8:06 Make-and-Fix Paradigm
- Story of the Tinker-toy computer; couldn't be re-built to work
after its shipping to museum.
- Comparison of today's software w/ Mexico City: individuals built own houses, lead to a terrible collective outcome.
- 10:17 "When you have a setter on an object, you've turned an object back into a data structure." - big complications, w/o benefits.
- 11:00 1 book = 400 pages = 20k LoC; a meter of books -> 1 million
LoC; Empire State Building height = 441 million LoC or size of
personal computing systems today.
- As computer scientists - never mind engineers - is that how much code we really need to be running??
- 13:30 complications run up even faster than complexity, by
- e.g. Microsoft Word's longtime justified-text bug - now 25 years old and still there because they cannot find the bug!
- Story of the Tinker-toy computer; couldn't be re-built to work after its shipping to museum.
- 15:30 Creating, Scaling, Eternal Computing, Re-adaptations,
Communicating w/ Aliens
- The Internet is controlled in < 20,000 LoC. TCP/IP is superb: handles billions of nodes, has never been stopped, replaced all its atoms at least once, grew and adapted superbly.
- 17:40 jump from "little gears" to biological-like behavior; the Internet is more like an organism, w/ self-repair, growth, adaptation.
- 19:30 From Make & Fix, to Grow & Negotiate
- Think: how to make a system negotiate, so that complexity is tractable?
- 21:50 Once we think of biology, we have to think of ecology.
- 22:50 Move from manipulation (Make & Fix) to expressing meaning.
- e.g. of meaning: Minsky's book Society of Mind
- 23:26 Learning from Biology
- Images from "Machinery of Life."
- Mistake: We made objects too small; the scale jump from molecules to living organism is too large.
- 26:45: Which is more important? IQ vs. knowledge vs. outlook
- IQ? We (in the room) were all praised for being bright, almost
- Imagine being born w/ twice IQ of Leonardo, but being born in 10,000 BC. Leonardo couldn't make a single working engine. Compare w/ Henry Ford.
- or Knowledge?
- Knowledge trumps IQ repeatedly.
- e.g. of Henry Ford again.
- or Outlook?
- Ford benefited from Newton's invention of calculus, and the change of outlook Newton enabled in the West.
- So an outlook, a point of view, is like 80 more IQ points!
- Kay thinks CS in the USA is dead because of limited outlook.
- Knowledge is silver; outlook is gold; IQ is lead weight.
- "This is killing CS; a lot of people in CS don't want to learn anything."
- It's easy to learn programming - and do it badly.
- IQ? We (in the room) were all praised for being bright, almost from birth.
- ~31:00 IQ, knowledge, and outlooks in CS
- IQ: A lot more clever people, but much more noise in the field from many more people in the field.
- Knowledge: absolute amount much greater; but average practitioner hasn't learned much more.
- Outlooks: number of powerful outlooks far greater; general
outlook has changed little. Like pop music and pop culture,
which barely uses what classical, jazz, etc. music has
- "CS has turned into a pop culture, and universities aren't helping, at least in the US."
- Most people can only experience the present in terms of the past. Which means they can only conceive the future in terms of the present. - McLuhan
- Cicero: He who only knows his own generation remains forever a child.
- 34:40 Human Learning & Memory
- Analogy between rain and random gullies, and how humans learn -
in a haphazard manner.
- Ducks and imprinting: like programmers and programming languages.
- Perhaps people should initially learn 2-3 languages at once.
- 37:00 Past, Present, Future
- The past is enormous!
- Take a few moments each day reflecting on how the present is
just like random rain gullies.
- Look deliberately in the past you don't know.
- Analogy between rain and random gullies, and how humans learn - in a haphazard manner.
- 39:22 The 'Arts'
- Includes tinkering, engineering (principled tinkering) which
preceded math and science.
- Babylonian engineering -> cookbooks
- Mathematics, science (400 years ago)
- Our strain of humanity is 192k years old, as traced by mother's mitochondrial DNA. Science is very, very new.
- Computing is mostly tinkering at this time, there's not much
engineering, math, or science.
- e.g. of real engineering: Empire State Building: 3000 people, 1 year, 2 stories/day, steel still warm from foundry - that's engineering!
- We don't have engineering in software! We could not organize 3000 people to do something major within span of 1 year.
- Includes tinkering, engineering (principled tinkering) which preceded math and science.
- 44:30 What is Science?
- e.g. of bridge building, and longest bridge in the world.
- 47:30 Computer Science?
- McCarthy's Lisp, on a t-shirt
- How many t-shirts for MS Windows, Word, etc.?
- 49:30 Real Computer Science, e.g. Personal Computing as Phenomena
- UI, Graphics, App Components, Applications, Meta-Translation, Engine Room, Low level utilities.
- About a dozen powerful principles:
- Math wins, esp MetaMath
- Meaning separated from optimization
- Simulation of time
- "No centers" (Internet all the way down)
- "Model-T-Shirt" Programming
- "Sideways" Composition
- "Universal" Parametric Objects
- "Particles & Fields"
- ~50:00, Dan Amelang's work on graphics
- Replace Cairo with its millions of LoC, with the Nile language.
- "The Formula" for anti-aliasing, is just 81 LoC in Nile language.
- Compositing, 90 LoC expressing 26 compositing ops.
- Antialiased Vector Graphics, 81 LoC.
- Sampling, for scaling and transforming bit-maps, 71 LoC.
- Pen Stroking, for outlines, drawings, 3 kinds of caps and joins, 76 LoC.
- Total, 318 LoC - far far fewer than Cairo's millions
- 53:50 But we have to make the Nile language
- Paper from 1964: Meta II A Syntax-Oriented Compiler Writing Language by DV Schorre, UCLA.
- Alex Warth, Using OMeta to make Nile, and using OMeta to make OMeta.
- The idea: each problem space has a particularly felicitous point-of-view or outlook.
- From problem-oriented languages then, to DSLs today.
- Forgotten since PC era.
- Very few students in US know this trick of making languages; yacc is a poor tool to do so.
- "Whatever we think we know today, shut it off periodically, and see if we can find other things to learn about."
- Discussions online
- At LtU: http://lambda-the-ultimate.org/node/4325
- Quite a few discussions agreed with power of DSLs, but how to
ensure that different DSLs can mix and combine their power?
- Last comment thread by dmbarbour answers that "orchestration
languages" are vital. He's working on one approach, Reactive
- Reply to that references the Orc language: http://orc.csres.utexas.edu/
- Last comment thread by dmbarbour answers that "orchestration languages" are vital. He's working on one approach, Reactive Demand Programming, http://awelonblue.wordpress.com/2011/05/21/comparing-frp-to-rdp/
- Quite a few discussions agreed with power of DSLs, but how to ensure that different DSLs can mix and combine their power?
- At LtU: http://lambda-the-ultimate.org/node/4325