"Lively" vs. "Dead" Environments
This is a topic that a lot of people that know me have heard me speak about. I generally say that Smalltalk's environment is "lively", while other language's environments are "dead". I generally got a lot of strange looks for this and rightfully so. What on earth do I mean? I love to brag about Smalltalk's productivity gains over Java, but why is it so productive? I used to think it was because Smalltalk was a dynamic language and late bound. While this does cause productivity to be better, I don't think it's an order of magnitude increase in development time (maintenance is another issue, I think dynamic languages fair better in maintenance and refactoring, but that's another article!) So, what really make Smalltalk SO MUCH MORE PRODUCTIVE?! It's the environment. In Smalltalk, if I don't like something in the environment (or IDE if you like), I can change it! But, you might say, "But, Blaine, I can do that with ANY open source IDE or ANY LANGUAGE!". True, but can you make the change and have the IDE reflect that change right then and there with no compilation or restarting of the IDE? If we're talking Java, I haven't seen an IDE yet that could do this! So, you might now say to me, "But, Blaine, I don't want to muck around IDE code! Are you crazy?!" True, true, true....But, wouldn't it be nice to change the code in your application while you're running it? No more shutting down the server, fixing the code, recompiling, and getting back to where you were in the code just to find out....there was something you missed!!! AARRGH! Smalltalk allows you do this and admittingly, Java does now in 1.4. But, I have yet to see a lively environment for Java! Eclipse comes close, but is no where what we Smalltalkers are used to. I can write code in an inspector and run it anywhere in Smalltalk and I'm concerned less with the language and environment, but the problem at hand. So, a "lively" environment to me is one that can be changed dynamically with no recompilation and a "dead" environment is one which that is not dynamic. Smalltalk is a living system and I think that is it's power and will always be its power. But, there's no reason other languages can do the same thing. Any dynamic language can have a "lively" environment. In fact, I'm surprised languages like Python and Ruby do not have "lively" environments! Anyway, I hope I gave you another reason to feel the love of Smalltalk and dynamic languages!