Luke Gorrie (lukego) wrote,
Luke Gorrie

More dynamic

Just a couple of recent thoughts..

Tools shape thought. Many at Smalltalk Superpowers pointed out that adding static tools to dynamic languages discourages people from writing very dynamic programs. We think twice before using EVAL, APPLY, perform:, messageNotUnderstood:, because our tools are confused by them -- debuggers, cross-referencers, refactorers, type checkers, etc. We're more inhibited in languages with sophisticated tools (Scheme, Common Lisp, Smalltalk) than more basic ones (Emacs Lisp, Javascript, Ruby). Example: I won't use SCREAMER because I know how ugly it would be to use SLIME for debugging code that was CPS-converted by macros. These tools are a mixed blessing.

Dynamic is cool. Smalltalk and Forth execute by direct operations on simple first-class objects (program counter, stack, etc). You can dynamically manipulate those objects in simple ways to do useful things: call/cc (copy a sequence activation records), tail-call optimization (drop one record), exceptions (drop them until you find a handler), for example. This really feels easy compared with program transformation approaches like CPS-conversion. Compilers are hard but stacks and program counters are easy.

I wonder what the most late-bound programming environment is today? Please tell me if you know.

Tags: lisp, smalltalk, steps
  • Post a new comment


    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.