Tue Aug 11 17:05:08 CEST 2009
Dynamic languages workshop
Panel 1: runtimes
``Start with a small working system and expand it incrementally,
adding functionality and adding performance. The big bang way only
works for God. Everyone else has to use evolution.''
``Sometimes an error message means exactly what it says.''
Panel 2: compilation
An interesting discussion about finalizers. For libprim tasks, I'm
thinking that C++ destructors might be interesting in combination with
stack-based "pure" tasks: going out of scope due to return or
exceptions calls destructors. Will Clinger mentions weak pointers
. Also David Detlefs talked about reference counting coming back.
Figure out what he really meant.
Panel 3: Language design
Jonathan Rees: Tension between distributed programming and OO: an
object is essentially "here": all abstractions around that is
essentially smoke and mirrors. (I.e.: physical location/locality
becomes more important as systems grow physicaly larger.) This is
about physical things (state) vs. information. Object != value.
Guy Steele: little known secrets
- stacks are overrated
- GC is good, finalizers are bad (finalizers w. good semantics <- GC
at every pointer alteration)
- lexical scoping is good. easy to screw up when writing
- type inference can be good but error reporting is hard.
- monads maybe very good
- higher order functionals are underrated. thinking in APL can
approve your lisp code.
- keyword arguments are good (PG)
- pretty printers are vastly underrated
- rule-based systems. (20 years ago, time to try again).