Native Tongue


I was first exposed to programming during a Year 11 computer science class. I was at a disadvantage from the start: several of the students were already budding programmers, whereas I had never really taken an interest. In hindsight I’m not sure what compelled me to take computer science; I recall thinking it might prove useful as an engineer, but flippantly dismissing programmers as an entirely different faction of nerd. In the end, computer science was one of the most challenging classes of my life.

The problems I faced were emblematic of the uncanny valley of the language du jour: Java. Reading from the class notes, Java seemed tantalisingly understandable in its construction — a mash-up of algebra and prose with a liberal smattering of braces and semicolons. In my mind I was just “writing in computer”, a tongue I didn’t speak natively; unfortunately, whenever I strayed from typing instructions verbatim, the computer yelled at me with incomprehensible rage.

At the age of 16, I had nothing going for me but intellect. I was not handsome, not athletic, and certainly not charming. My sense of self worth was anchored to my intellect, and my intellect was in question for the first time. Over several months I eked out a passing grade through wrote-learning and sheer perspiration. In preparation for the mid-term, I literally memorised every line of code from my notes; I got a B, which was a bitter disappointment after all that effort. Eventually, the construction of methods and classes became familiar, if maddeningly opaque, and I was able to muster an A on the final exam1.

Things didn’t get any easier at university. The programming courses were yet again conducted in Java. Thankfully the emphasis had shifted to programming constructs. In the abstract, concepts like recursion, stacks, queues, and trees were comparatively trivial to master, and I scored well despite myself; I was no programmer, but thankfully my transcript didn’t reflect that fact.

Whenever I see Java now, all I can think about is how I struggled. An experience that makes you question your self-worth might qualify as a a hatred of Java” alt=“‘small t’ trauma. I have eluded to a hatred of Java”>’small t’ trauma. I have eluded to [a hatred of Java before, but despite an abundance of justifiable reasons to dislike it, my hatred of Java isn’t rational at all. Needless to say, I haven’t programmed in Java since I left university.

Java was touted as a platform-agnostic, high-level language set to supplant the laborious low-level languages of yore. This was not a world I wanted to live in. Thankfully, my undergraduate studies introduced me to other languages, notably C and MATLAB, which now form part of my livelihood.

For me, deciding which language to use at work is simple: Is the program itself the product?

I now spend about 30% of my professional life programming, although I don’t have a lot of love for any given language. C feels cold and utilitarian; the opacity of Objective-C and C# skirt dangerously close to that of Java; and MATLAB feels like a pile of hacks held together with duct-tape and kisses3, while simultaneously being more expensive to support than a coke habit4. The fact that multiple languages exist is no accident. There is no singular, superior language for all applications5: if you’re running MATLAB on an 8 MHz micro-controller, you’re going to have a bad time6; likewise, analysing scientific data in assembly would be insane. I am constantly learning new languages — most recently VHDL, Python, and Swift — but my problem is pedagogical in nature: I learn new languages the way I learned my native tongue — through immersion, emulation, and an authority yelling ‘NO!’ at me whenever I get something wrong.

Whether you are writing code, composing a user manual, or drawing a schematic, the concept to convey is a fixed point; the medium by which you communicate that point is simply a means to an end. Saying that I know C, or VHDL, or even English will only ever be loosely correct. I certainly don’t know every nuance of C, but given time for appropriate testing, the language doesn’t stand in my way. Similarly, I can’t possibly claim to know every word in the English language, nor the formal rules for constructing English sentences, but I get by. When the ultimate aim is to convey a concept, a mastery of the language can help, but it’s not essential.

We learn our native tongue through a very human process: mimic, extrapolate, fail, correct, repeat. Perhaps this is the most efficient way to teach the pertinent subset of any given field, but the completionist within me yearns to master something in its entirety. Then again, would I prefer to live in a world where it were possible to know something completely, or one so fabulously complex that it were impossible to hold such knowledge in one mind? Regardless, I think our native tongue tends to be rightfully utilitarian, and therefore specific to each individual. I am who I am because that is who I needed to be. And honestly, who the fuck wants to know Java anyway.


  1. Crippling performance anxiety is just another day at the office for me, so I tend to do comparatively well on exams 

  2. Although I typically hash-out any algorithm in MATLAB before I compose it in a C-based language 

  3. And MATLAB is written in Java, just for added insult 

  4. Citation needed 

  5. I liked this take on popular languages 

  6. Although, you’d be a fucking hero