Skip to content

Instantly share code, notes, and snippets.

@dimabory
Last active February 14, 2019 08:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dimabory/6e0ed4fa628656c8c651c979afe0ec33 to your computer and use it in GitHub Desktop.
Save dimabory/6e0ed4fa628656c8c651c979afe0ec33 to your computer and use it in GitHub Desktop.
Alan Kays Definition Of Object Oriented
http://wiki.c2.com/?AlanKaysDefinitionOfObjectOriented
1. Everything Is An Object.
2. Objects communicate by sending and receiving messages (in terms of objects).
3. Objects have their own memory (in terms of objects).
4. Every object is an instance of a class (which must be an object).
5. The class holds the shared behavior for its instances (in the form of objects in a program list)
6. To eval a program list, control is passed to the first object and the remainder is treated as its message.
This definition is derived from early versions of Smalltalk (Smalltalk-72?), and rules 5 and 6 clearly show Smalltalk's Lisp heritage. Kay remarked as such, noting that rules 4-6 would mutate as Smalltalk developed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment