Helltime for May 1
It’s Friday, and you know what that means.
Announcer: Now for quick hits and commentary on software development topics from around the web, the EIP web-ring brings you the stigmatized spawn of a refactory, MoffDub, and Helltime!
Yip yip yip yip yahoo.
- Eric Lippert has a Fabulous Adventure in Coding by pointing out to us that the stack is an implementation detail.
I tangled with the stack this week, in fact. I was writing an anonymous inner class, and had to declare the local variable I was referencing as final. This didn’t turn out to be a problem for me. I didn’t think about it at the time, but I think I agree with Eric’s assertion. In languages with closures, no such restriction exists, and it feels far more natural.
- It has been a while since I even thought about software transactional memory. Enfranchised Mind‘s Eric Hurt partially explains why: the languages aren’t there yet. I’m reminded of some of the opinions I have read lately on how Smalltalk never got the timing right: it was way ahead of the time of the hardware available.
The most interesting part of his post is how message-passing concurrency won’t scale up when you add cores. On the surface, it certainly seems like it should scale if you keep your units of concurrent execution is separate processes. Perhaps it would if you had truly independent CPUs. I think the scaling problem is due to context-switching.
Implicit parallelism is on my backlog of things to investigate, for good reason. Maybe the question for message-based concurrency is also: when will the hardware catch up?
- James Carr has a comprehensive list of TDD Anti-Patterns. Full disclosure: I am regularly guilty of The One (one test method for the entire class) and The Free Ride (multiple assertions per test method). While amusing to read, he left one off the list that I will happily take credit for:
Incestuous Spider Web: a set of tests that all break together due to stingy use of stubs, mocks, or fakes.
|Announcer: You’re reading the EIP web-ring.|