The
jaoo.dk conference is taking place in Århus these days and following this there was an interview with Lars Bak, one of the drivers behind the
V8 Javscript engine, in a danish newsletter. Here he talks about the joys and wonders of dynamic typing over static ditto. He makes manay good points on how dynamic typing helps to increase programmer productivity.
At least two of these points was something I had no thought so much about before.
One was that the tools surrounding statically typed languages tends to be very phase oriented. You make a chance, compile, do a test run to see if it worked and then you get back to editing. Dynamic languages such as Lisp, Smalltalk or (I guess) Javascript allows you to work much more directly with the (running) program, interleaving thinking, editing and testing almost seemlessly.
The other thought provoking point, one I also absolutely believes in, is that programmers working in dynamic languages tends to focus on the program logic whereas programmers working with static languages tends to focus on all of the much less important trimmings surrounding the logic.
The bottom line,as he puts it, is that the bottleneck today is not those last 20-30 % of performance but rather programmer productivity and everything we can do to facilitate that should be pursued. And even if one does get concerned over performance, one should rather seek to solve the problems rather than giving up without trying. Lisp was not born as efficient as it is today (neither was C) but can not fix a problem if one does not try to fix it.
Just a big a problem, I think, in many languages is the apperent view from the language designers that the biggest threat to the purity of the program is the programmer. This is most dominant in static languages where the type diciplines provides the language architect with a multitude of ways to fence those rascal programmers in but even in dynamic languages such as Erlang one can find traces of this.
The logic seems to be that we want to prevent the programmers from making mistakes, and that logic is not as such flawed, there are mistakes you just do not make in a statically typed programming language. Unfortunately, the statement that a program is typecorrect is an incredible weak statement about its usefulness!