This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: Programming as if it mattered
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
The golden rule of programming has always been that clarity and correctness matter much more than the utmost speed. Very few people will argue with that. And yet do we really believe it? If we did, then 99% of all programs would be written in something like Python. Or Erlang. Even traditional disclaimers such as "except for video games, which need to stay close to the machine level" usually don't hold water any more. After all, who ever thought you could use an interpreted, functional language to decode Targa images, especially without any performance concerns?
Follow the second link to the original essay - it makes a point about how fast things now perform even in fully interpreted languages on modern hardware - pointing to the absurdity of things like primitive data types in Java. In the vast majority of applications now, that counts as premature optimization. The software industry is guided more by inertia than logic. People continue to select unproductive languages based on the "everyone else uses it" mindset. They stick with manifest typing, even when the best data we have (from Capers Jones) - shows that languages like Smalltalk produce lower error rates than languages like Java. This in turn empowers the managers who want to offshore development - if the results are bad in any case, they may as well be bad for less money.
I'd say that the software industry is where manufacturing was in the 70's - complacent and ready for a kick from foreign competition - but I don't see that happening anytime soon. Why? The big Indian firms are all into huge masses of paper and CMM compliance levels - my cantankerous theory is that you should avoid any firm that claims CMM-5 like the plague (unless you like rigid requirements and huge backwashes of paper). If you really want to outpace the competition, you might want to pick up a dynamic language - Smalltalk, Python, Ruby, Lisp - and run with that.