I posted a while back my general philosophy of Software Architecture, or Software Engineering perhaps would have been a better title for that post. Either way, things in the OOP world certainly have changed from the early 90′s when it was in its infancy.
Basically, this is highlighted by two op-ed articles written for DevX. The first, OOP Is Much Better in Theory Than in Practice is something of a spotlight on the weaknesses in OOP that have been pointed out previously. Bertrand Meyer did an admirable job of shoring up those weaknesses in Eiffel, but even his language and philosophy weren’t quite enough. (The author of this article, Richard Mansfield, has quite a pedigree. I learned 6502 assembly from his book.)
The second article, OOP Is Best in Practice, basically doesn’t make any contest to the first article’s assertions. It simply says that the rules of the game have changed. From the original tenets in their academic roots (encapsulation, inheritance, and polymorphism to grossly summarize) to these new rules:
- Favor composition over inheritance.
- Program to an interface not an implementation.
- Find what varies and encapsulate it.
- Strive for loose coupling.
- Strive for high cohesion.
- Code once and only once.
There’s a couple of interesting things here. For one, this mirrors my own post earlier, which makes me feel better. I’ve been steering with the masses.
Secondly, this sounds more like component building rather than class building. Which says to me that in the design of component/reusable software, Microsoft got it right with COM.
In any case, another topic I should have a post or article about soon is Lock Free Programming. Very cool stuff on the parallel processing front. Should come in handy in the next wave of multiprocessor consoles and PCs.
I had read Chris Hecker’s rant previously, but only now are the implications starting to sink in. 1/3 through 1/10 code speed for normal “messy” code that makes up the game code. That’s on top of the problem that having multiple cores brings. (Anyone who has done multithreaded, multiprocessor code knows it is an order of magnitude harder to write correctly, though I think scripting languages will help alleviate this to a large degree).
Then I thought maybe it wasn’t such a big deal. I mean, we have several processors even on a single core. The Cell has 8 VUs along with the Power core. Can’t these things be made to do anything different than just crunch numbers? I bet yes. The PS2 VU had an abysmal time doing anything except crunch numbers, but these VUs should be sufficiently advanced that normal integer/ALU CPU instructions should be available, along with a whole bunch of integer registers.
As an aside, I will admit that I plan on using a garbage collector in my next project. No way I’m trying to manage memory on these things. They have enough horse power. I didn’t say I would be using Java, probably just the Boehm’s collector available for C++.
Engadget
has a link (borrowed from others) to the ultimate gaming table. It looks really sweet. Basically, it’s a laptop hooked up to a projector aimed at the table. Good idea if a little pricey.
There’s also OpenRPG. It has something similar in its mapping software, complete with fog of war to allow the GM to mask parts of the map. Combined with some of the PDF tile sets you can purchase inexpensively at RPGNow, it provides an attractive and easy mapping solution for your games, online and offline. I use it for my own online games, but I wouldn’t hesitate to use it for my vis-a-vis games as well.
Filed under: Uncategorized — bilbo @ 5:51 pm
Another good webcomic has bitten the dust. It was on hiatus, which is basically one foot in the grave for a webcomic. I’m sad to see it go. I would love to do a game about the characters he had in that comic.