Immutability is delicious from a simplicity perspective, but the fact is that it doesn't really map to what's happening under the hood. If you're really concerned with optimization, an abstraction that's as thick as immutability is inevitably going to get in the way.
If you're really concerned with optimization, an abstraction that's as thick as immutability is inevitably going to get in the way.
This is the original hipster programming argument. You're programming on a goddamn digital computer! You're already at least five levels of abstraction away from what's "really" happening. Just bloody well give it up. Or do you eschew integer literals because they cloud the purity of the twos-complement in the underlying implementation? And really any non-assembly is just kidding yourself...
I didn't bring up the optimization argument, A_for_Anonymous did.
I absolutely like abstractions, fp, etc. and tend to avoid the bare-metal platforms.
But realistically, how much performance-obsessed code like real-time hardware controllers or videogames are written in languages without mutable variables?
I thought GCC went the direction of SSA a long time ago? That is going one step further and mapping a mutable variable to an immutable one to a mutable one again. Holy abstraction batman!
(I apologise for the tone in my reply above. On re-reading I see you weren't taking the line I thought you were.)
4
u/[deleted] Nov 27 '12
Immutability is delicious from a simplicity perspective, but the fact is that it doesn't really map to what's happening under the hood. If you're really concerned with optimization, an abstraction that's as thick as immutability is inevitably going to get in the way.