University of Virginia Computer Science CS150: Computer Science, Fall 2005 |
(none) 10 October 2005 |
Please come to Alan Kay's talk Wednesday morning — this is a very rare opportunity to hear one of the most important and influential people of our age. If you have a class Wednesday morning and want me to send an email to your teacher to excuse you from class Wednesday, let me know.
(define (make-ocounter) ((lambda (count) (lambda (message) (if (eq? message 'reset) (set! count 0) (if (eq? message 'next) (set! count (+ 1 count)) (if (eq? message 'how-many) count))))) 0)) |
(define (make-ocounter) (let ((count 0)) (lambda (message) (if (eq? message 'reset) (set! count 0) (if (eq? message 'next) (set! count (+ 1 count)) (if (eq? message 'how-many) count)))))) |
How to Smalltalk-ers add 2 + 3?
Why is it useful to package state and procedures together?
Who was the first object-oriented programmer?
Here's how Alan Kay describes his first assignment in graduate school:
Head whirling, I found my desk. ON it was a pile of tapes and listings, and a note: "This is the Algol for the 1108. It doesn't work. Please make it work." The latest graduate student gets the latest dirty task.The documentation was incomprehensible. Supposedly, this was the Case-Western Reserve 1107 Algol--but it had been doctored to make a language called Simula; the documentation read like Norwegian transliterated into English, which in fact it was. There were uses of words like activity and process that didn't seem to coincide with normal English usage.
Finally, another graduate student and I unrolled the program listing 80 feet down the hall and crawled over it yelling discoveries to each other. The weirdest part was the storage allocator, which did not obey a stack discipline as was usual for Algol. A few days later, that provided the clue. What Simula was allocating were structures very much like the instances of Sketchpad. There wee descriptions that acted like masters and they could create instances, each of which was an independent entity. What Sketchpad called masters and instances, Simula called activities and processes. Moreover, Simula was a procedural language for controlling Sketchpad-like objects, thus having considerably more flexibility than constraints (though at some cost in elegance) [Nygaard, 1966, Nygaard, 1983].
This was the big hit, and I've not been the same since.
Alan Kay, The Early History of Smalltalk, 1993.
Don't worry about what anybody else is going to do The best way to predict the
future is to invent it. Really smart people with reasonable funding can
do just about anything that doesn't violate too many of Newton's
Laws!
— Alan Kay
If you have an idea, and its not a good idea, take a nap instead of implementing it. — Alan Kay
"); print ( $res[$first] ) ; print (" |
CS 150: Computer Science University of Virginia |
evans@virginia.edu Using these Materials |