📖Self and Self: Whys and Wherefores

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
  • q

    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
  • q

    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


Want to receive my 🖋 posts as I publish them?