[an error occurred while processing this directive]

Class 18 Notes

Lecture Slides, Suitable For Printing

Notes

Notes

Halting Problem

Input: a procedure specification P

Output: true if applying P would halt (finishes execution), false otherwise.

(define (halts? procedure) ...?...)
(define (paradox)
  (if (halts? 'paradox) 
      (infinite-loop)
      150))
What would it mean if (halts? 'paradox) evaluates to #t?







What would it mean if (halts? 'paradox) evaluates to #f?







Prove the halts? algorithm cannot exist.







Proof by Contradiction

  1. Show X is non-sensical.
  2. Show that if you have an A you can make X.
  3. Therefore, A cannot exist.




Evaluates-to-3

Input: A procedure specification P

Output: true if evaluating an application of P would result in 3; false otherwise.

Is the Evaluates-to-3 Problem computable?





What is a computer virus?





Why is it impossible to define a procedure that determines if a file contains a computer virus?





Is it impossible to define a procedure that protects computer users from all viruses? (Tricky, think carefully)





What is object-oriented programming?






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

Links

Paul Graham, Undergraduation (on what to do in college)

Mark W. Eichin and Jon A. Rochlis, With Microscope and Tweezers: An Analysis of the Internet Virus of November 1988, IEEE Symposium on Security and Privacy, 1989.

The Art of Computer Virus Research and Defense, Peter Szor (One Page Review in IEEE Security and Privacy, by Nathanael Paul, UVa student)

Disk-Level Malware Detection research project

If you have an idea, and its not a good idea, take a nap instead of implementing it. — Alan Kay

[an error occurred while processing this directive]