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?
Oh, and last week at the pub we had a big discussion about category
theory, higher-order functions, contination passing web servers and
finishing up with the difference between a program that generates a
program and writing a custom compiler and interpreter. Geeky you may
say. Well, today I noticed a colleague reading up on continuations on
Wikipedia. That's what I'm
talking about.
1 comment:
It isn't the goblins?! You should have tagged this as a spoiler.
But seriously, for me it's the deconstruction and the pure maths. This is the least applied maths after maths itself. What we do is algorithms and proofs and truths... yes, for me it's about the truth of it all.
Post a Comment