University of Virginia Computer Science
CS150: Computer Science, Fall 2005

(none)
10 October 2005

CS150 Notes 20 (10 October 2005)

Upcoming Schedule

Notes

(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))))))
What is an object?



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@cs.virginia.edu
Using these Materials