Over at Artima, Bill Venners continues his tradition of asking dumb questions (his last effort was an interview of these idiots. Today, I see that's he's gone back to not understanding dynamic typing:
Bill Venners: In you book you say, "It is always beneficial to detect programming errors as quickly as possible." I've met people who don't feel that way: people from the Smalltalk community, people who like Python, and so on. These people feel that all those compile time errors get in the way of their productivity. They feel more productive in a weakly typed environment, where more problems must be discovered at runtime. These people feel that their weakly-typed language of choice gives them as much robustness, but more quickly, than strongly-typed languages such as Java.
Josh Bloch: I quibble with the fact that they are getting as much robustness. I suppose the extreme example of that is shell scripts, which are interpreted. There is no compile time. You can code anything you want. And I think anyone who has used shell scripts has seen them blow up in the field. In fact, people don't expect them to run on all inputs. If you take a shell script, try to do something fancy with it, and it doesn't work, you say "Oh well, I guess it doesn't handle that." And you play around with the inputs and try to find something it does handle.
That's right guys, we just throw crap at the system until it works. You can code anything you want in the popular languages with manifest typing as well - witness void * in C, and casting in general. Test first doesn't mean that you just keep hacking until it works. In fact, my experience is that the hack it until it works mindset is far, far more common in the world inhabited by the curly brace crowd than it is by the Smalltalk (or Lisp, or Python) crowd. Based on this little interplay, it looks like Josh Bloch:
- Has never actually used a dynamic language - or
- Didn't understand what he saw if he tried using one
Hey guys - let me know the next time you see a buffer overflow exploit in Smalltalk, Python, or Lisp. And by the way, Smalltalk and Python are strongly typed. For weak typing, look at C or C++