Responding to Comments on “What’s Wrong…”
Friday, 27 April 2007
Posted by austin in: Ruby, comments closed
Huw Collingborne: I don’t know if Bitwise has an anti-Ruby agenda. I know that your initial articles that I read last year were…I don’t have anything nice to say about them, truthfully, I think they were that bad. On the other hand, you have committed some pretty serious resources with Sapphire in Steel, so I know you like Ruby.
As far as editorial responsibilities, I think that you do have a responsibility to ensure that what an author writes is both sensibly written and doesn’t contain gross errors. Editing does not mean that you change the authors’ words for them. You let them know when something isn’t clear or likley to be misunderstood. This was the policy at Artima’s Ruby Code & Style under James Britt. The words for the article that I wrote (and another that hasn’t yet seen the light of day, so I will probably publish it here after rewriting it) are all mine. Not someone else’s.
Matthew Huntbach: Somehow, I missed the reference to that other article. Aside from the fact that GameSpy made it nearly unreadable with stupid pagination, the original author’s point is as muddled as your own on this matter (of array addition). If a lot of people missed that point on array addition, I think that it’s clear your concept in writing that point was not.
You similarly missed my main point about Ada: Ada is actually a fine language and had reasonably “packaging” semantics that would act a lot like object orientation if used properly. Ada failed primarily because people could get cheap and easy compilers for C++, but Ada was completely proprietary. That’s why I pointed out Turbo C++ specifically. Pascal lasted a lot longer than it should have, because of Turbo Pascal and later Delphi. Similarly, Java would not have made the impact that it did without javac having been freely available.
You suggested that academics have had to be convinced that OOP was more than a fad. Personally, I have yet to be convinced that it’s more than a fad. I don’t mean, by that, that OO will go away. It will lose its primal position in CS at some point as people realise that it’s just another technique for organising your code, and it doesn’t automatically solve your problems. I’ve had enough arguments with people who don’t know how to do object modelling to strongly believe that most people don’t understand OO at all. I suspect that people like Booch and Rumbaugh understand it less than most, given how loudly they have trumpeted it without consideration for reality.
Let me make it clear: your impression that Ruby isn’t a silver bullet isn’t what’s embarrassing, in my opinion. Your arguments attempting to support your impression are muddled and sometimes simply incorrect.
You can say that you don’t think it’s all that radical. I’d agree with you. I’m not necessarily convinced that Ruby 1.8 is a good teaching language: there’s a few ugly, weird corner cases. Yet Chris Pine thought well enough that he wrote Learn to Program. Ruby will help people learn what it means to be intentional in their programming, and less rely on an IDE to write code for them (as is increasingly necessary with overwrought, overweight frameworks and languages like C#, Java, and to some degree C++). I have adapted my C++ code sytle to follow a very Ruby style in this—and it has really improved the readability and maintainability in the place where I work. So much so that there are people who now do the same things that I do.
For what it’s worth, I have little problems with academics, and I have significant problems with the asinine responses you received from members of the Ruby community. I do think that academics often forget that there is a real programming world out there while they’re teaching (having interviewed dozens of would-be programmers straight out of university with a CS degree but no knowledge)—but pushing for something bigger and better and smarter isn’t a bad thing, and academic researchers are necessary to push that forward. Non-researchers, though, seem to change very slowly and push ideas that, in practice, haven’t worked out very well in implementation—or, perhaps, were too early and need to be rediscovered again.
Static typing hasn’t proven to be all that useful—it catches a very small class of errors at compile-time while hiding much more serious errors (buffer overflows, for example) a run-time. (Ada wasn’t vulnerable to this, of course, because it put static typing into both compile- and run-time both.) Dynamic typing is much more likely to be useful in the long run, or some combination of it—either in Erlang’s “pattern matching” or in Haskell’s type inferencing.
Oops…
Posted by austin in: HaloStatue, comments closed
Sorry, folks. I’ve been so busy lately that I hadn’t even noticed that I had a number of unapproved comments on the Bitwise article that I wrote. They’re all approved now—I have no interest in censoring real comments. My mistake, and apologies.



