Embrace Your Inner Geek
gga
#2007-05-27
Why bother reading long posts about esoteric language features that your language doesn’t provide, or even if it does, it’s not a good idea to use too often?
Two and a half reasons really.
Understanding your language is important. This is not magic we’re doing here. It’s engineering, one of the purest and most mathematically oriented branches of engineering you’re likely to earn money engaged in. When it’s magic you’re not supposed to know what’s going on, that’s why it’s magic. You are supposed to understand engineering though. Languages are the most complex pieces of computer software. You understand complex things by exploring the boundaries. What do they do well? Why don’t some things work at all? How could they be better? All professional programmers should be able to name several critical failings of the language they are currently working in; if they don’t hate it all together.
Related to that, when programming it’s not enough to memorise the
class and function names from the whopping great big framework of the
week. You’ll generally have inferred something about how the framework
works underneath. You’ll know that before calling function A, you had
to instantiate class B first, unless you called function C first,
because that happens to create a B for you. Blah. Languages are the
same. Why does a variable declared inside a while
loop
disappear outside? This isn’t voodoo. The goblins don’t eat
it. There’s a reason. The language is implemented in a certain way by
the compiler and runtime combination that causes these things to
happen. You should understand that relationship. Every thing we write
is built on some similar layer of abstraction. You need to
understand (at least
theoretically) how to implement the layer immediately beneath
you or you’ll end up wandering off into some abyss you didn’t even
know was there.
And finally, we’re professionals, dammit. Where’s the intellectual curiosity? Where’s the ‘Hey, that’s cool. Now, how do I break it?’ Or, ‘I wonder what will happen if I do this…’ Or, ‘How does that work?’ And most basically of all, ‘Why?’ Geeks are supposed to be into that sort of thing. We got beaten up in high school because we were enthusiastic about things it wasn’t cool to be enthusiastic about. Now there’s a lot of money to be had out of that enthusiasm. Let it out, embrace your inner geek. Enjoy this amazing, complex, unique, ever-changing world around us. Explore those things you’ve always felt a connection to. If you’re in computing, there’s a good chance that’s something mathematical. Most things in computing are… For me it was languages. What’s it for you?