- 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.
- lazy compilation
- dynamic deoptimization
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.)
- Artist vs. Entertainer