I keep my own list of the planet humbug bloggers' rss feeds in my liferea configuration, so I missed the introduction of Andrae's blog to the community (or was he always there in the first place?). Andrae is an interesting fellow with a hobby of understanding some of the fundamentals of computer science.
By way of a welcome, I thought I'd respond to a few of his posts:
Impressive rant: Hrrmm... the context quoted here is basically saying that C++ is bad because it allows class authors to protect their data. I don't find it particularly impressive. I think that code and data structures behind an API should be able to change over time without recoding the entire system. The form of object-orientation that lead to the development C++ was centred around earlier practice of "Abstract data types". The idea was that the fewer pieces of code that knew the specifics of the data structure, the less places you'd have to stuff things up. Object orientation of the C++-world kind is built around the idea that you can push this forward a couple more levels. The article does make some good points, for example the idea that you have to recompile your entire system because you've changed some part of an object that doesn't form part of the public API, but instead is a private data structure does feel like the result of premature optimisation. I guess that's why the use of privates classes is encouraged. <shrug/> Actually, I guess you are more-or-less right. Classes with a lot of private data shouldn't really exist in a true object-oriented system, and the language should support a reasonable notation for separating the two so that the private bit is really really private. Perhaps C++ could do this better. As it is, the use of private data in this way is a kind of still-born shortcut for it.
What do you do for a living?: I say "you know how a rail system has a central control system to turn on and off the power, and monitor the air conditioning, and possibly even exert some control over the trains?" "Yeah..." "Well, I make software to go into that central control room." "Ahhh...." "So I'm not just a useless abstract software person" "No?" "Yeah, I'm really kind of like a civil engineer..." "Yeah, and my father is the pope."
UML Editors: I personally use visio with the UML templates found here. They support UML2, which is a big improvement in many areas over the 1.x series of UML and don't try to be a sucky development environment.
Happy blogging Andrae, and thanks for the OO & relational CS theory links

