The best qualities of high- and low-level languagesA well-written program in an abstract language like Ocaml or Lisp has the quality of an elegant mathematical proof: beautiful and concise, but you can't change anything without breaking it. Most programs in C++ are more like an elaborate model train layout, supporting endless tinkering without actually stopping the train from going 'round.
Of course, these days the tinkering can be more intentional, and we call it “refactoring” (“I'm sorry, I can't attend that meeting, this code has some bad smells, and really needs refactoring” might buy you more time than, “Sorry, I'd rather tinker with this old program; have a good meeting.”).
Since I started writing in Ruby (and also, less skillfully, in Python), I've had much less tinkering to do: getting some things done in Java, or in (old-style: I haven't worked a lot with the C++ STL, so things may be different) C++ just needed a lot more little helper classes here and there to sort or iterate or whatever, and they could all use a little polish and dusting from time to time.
On the other hand, there always seems to be more to do, so turning out fewer lines of code for any one task is a good thing, and lingering over it (when it does what it's supposed to and is relatively clear) just doesn't appeal as much as it used to.
Posted by ronlusk at February 16, 2006 07:50 AM