- Ungar, David
Values → Principles → Practices
values: what you want, what you like
principles: general rules for achieving values
practices: specific things to do
For every feature in the language, know which value it serves
Don’t just make it elegant, or powerful. Know why for each design choice.
Forget compilers, interpreters / create a consistent experience
With great people, you can do anything! Don’t waste them on the possible! (The challenge will attract the great ones.)
Self has quite a legacy
first to use prototype-based inheritance
everything is an object (more so than smalltalk)
smalltalk emphasized classes and tools, not objects
first to use animation
motion blur, shadow, expand, fade-in/fade-out
generation scavenging GC
dynamic compilation (JIT)
Key idea: Misdirection The code that runs only has to fool the user into thinking it’s the code he wrote. Just like stage magic.
Even if your ideas succeed, the real legacy is the people.
(People who learned on your project go on to other projects and do even more cool things.)