Python from Wise Guy's Viewpoint
Dirk Thierbach
dthierbach at gmx.de
Fri Oct 24 08:35:14 EDT 2003
More information about the Python-list mailing list
Fri Oct 24 08:35:14 EDT 2003
- Previous message (by thread): Python from Wise Guy's Viewpoint
- Next message (by thread): Python from Wise Guy's Viewpoint
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Kenny Tilton <ktilton at nyc.rr.com> wrote: > Big deal. From Robert C. Martin: > > http://www.artima.com/weblogs/viewpost.jsp?thread=4639 > > "I've been a statically typed bigot for quite a few years....I scoffed > at the smalltalkers who whined about the loss of flexibility. Safety, > after all, was far more important than flexibility -- and besides, we > can keep our software flexible AND statically typed, if we just follow > good dependency management principles. > > "Four years ago I got involved with Extreme Programming. ... > > "About two years ago I noticed something. I was depending less and less > on the type system for safety. My unit tests were preventing me from > making type errors. The more I depended upon the unit tests, the less I > depended upon the type safety of Java or C++ (my languages of choice). Note that he is speaking about languages with a very bad type system. As has been said in this thread a few times, there are statically typed languages and there are statically typed languages. Those two can differ substantially from each other. Here's a posting from Richard MacDonald in comp.software.extreme-programming, MID <Xns9327E3738674Fmacdonaldrjworldneta at 204.127.36.1>: : Eliot, I work with a bunch of excellent programmers who came from AI to : Smalltalk to Java. We despise Java. We love Smalltalk. Some months ago we : took a vote and decided that we were now more productive in Java than we : had ever been in Smalltalk. The reason is the Eclipse IDE. It more than : makes up for the lousy, verbose syntax of Java. We find that we can get : Eclipse to write much of our code for us anyway. : : Smalltalk is superior in getting something to work fast. But refactoring : takes a toll on a dynamically typed language because it doesn't provide : as much information to the IDE as does a statically-typed language (even : a bad one). Let's face it. If you *always* check callers and implementors : in Smalltalk, you can catch most of the changes. But sometimes you : forget. With Eclipse, you can skip this step and it still lights up every : problem with a big X and helps you refactor to fix it : : In Smalltalk, I *needed* unit tests because Smalltalk allowed me to be : sloppy. In Eclipse, I can get away without writing unit tests and my code : miraculously often works the first time I get all those Xs eliminated. : : Ok, I realize I have not addressed your question yet... : : No question but that a "crappy statically typed" (*) language can get you : into a corner where you're faced with lousy alternatives. But say I : figure out a massive refactoring step that gets me out of it. In : Smalltalk, I would probably fail without a bank of unit tests behind me. : In Eclipse, I could probably make that refactoring step in less time and : with far great certainty that it is correct. I've done it before without : the safety net of tests and been successful. No way I would ever have : been able to do that as efficiently in Smalltalk. (I once refactored my : entire Smalltalk app in 3 days and needed every test I had every written. : I have not done the equivalent in Java, but I have complete confidence I : could do it just as well if not much better.) : : As far as productivity, we still write unit tests. But unit test : maintenance takes a lot of time. In Smalltalk, I would spend 30% of my : time coding within the tests. I tested at all levels, i.e., low-level, : medium, and integration, since it paid off when searching for bugs. But : 30% is too much. With Eclipse, we're able to write good code with just a : handful of high-level tests. Often we simply write the answer as a test : and do the entire app with this one test. The reason is once again that : the IDE is visually showing us right where we broke my code and we don't : have to run tests to see it. : : (*) I suggest we use 3 categories: (1) dynamically typed, (2) statically : typed, (3) lousy statically typed. Into the latter category, toss Java : and C++. Into (2), toss some of the functional languages; they're pretty : slick. Much of the classic typing wars are between dynamic-typists : criticizing (3) vs. static-typists working with (2). : : P.S. I used to be one of those rabid dynamic defenders. I'm a little : chastened and wiser now that I have a fantastic IDE in my toolkit. - Dirk
- Previous message (by thread): Python from Wise Guy's Viewpoint
- Next message (by thread): Python from Wise Guy's Viewpoint
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list