Photo by winterseitler from pixabay

Why Learning C Still Makes Sense

Mauricio Feldman-Abe
3 min readJul 22, 2018

I remember a funny story from the days after graduating from college, full of inspiration and ambition, but little money to call my own. Finding loose change to put gas in the car was something in the back of my mind all the time. My friend had just landed a staff position at Microsoft making a real salary. His department was promoting Visual Basic as an alternative to “real” programming languages.

His major point was that memory allocation was, and still is, a task that should not be messed with by software developers. And to learn anything on the C family of programming languages was for “crazy people”. That idea got stuck in my mind ever since. I got a job, was fired, moved, got other jobs, changed careers, got other jobs, got married, moved again, and that idea kept coming back to me.

As I advance in my software engineering path, space in memory is not such a precious resource as it used to be. But nevertheless, every time you create a variable, it needs to be allocated in memory to be accessible in your program. And someone had to figure out how the memory is going to be organized so your program can run.

I am a firm believer that to jump to the next level in understanding of software engineering, one must understand inner workings of its tools. We came to a point in our society that is perfectly fine to never have to open the hood of your car to drive to work everyday. Hell, car manufacturers now hide everything behind plastic covers that have no functionality whatsoever other than make the engine compartment look clean and organized. But keeping ourselves at bay do not make us constructors of better cars, it just keep us as consumers of pre-fab automobiles.

And it is weird to talk about cars, which are on the top spot of most consumers wishlists. I am not advocating that we should build our own cars. But as a software developer, I am in the business of creating new things. If you don’t know your tools work, you are limiting yourself and your growth as a programmer.

I found a C Programming class in a community college near me. The schedule was an intense summer classes starting on the very next day, but it would fit my schedule and they had openings. After working intensively on Javascript and web development, I asked myself, why not? I might not become one of the “crazy people” doing memory allocation, fighting with bits and bytes, but now I have a better understanding of what my friend meant. Programming is not an occupation for crazy people. I was the one who didn’t understand. What he meant was that you can create a lot of stuff without having to worry about your browser running out of memory. The modern tools available today had actually freed our minds to think about newer and bigger problems.

After learning C, at least the basics concepts, I came to two important conclusions: First, it is not that different than other languages. The same logic and procedures still apply. It was surprising to me how much of C I already knew because I know Javascript. C is after all the mother of all modern languages. It is very clear to me that learning any of its child languages will not be so hard. Unfocused? Maybe. But I believe that great specialists are first good generalists. You don’t know where the good ideas are going to come from.

And second, was it worth it? Should I have spent my time learning a hot new framework instead? It is not super useful, I am not planning a C development spree anytime soon creating hot new apps. I had to explain that to my wife, and it was hard to articulate it at first. “C is like Latin,” I mumbled. The real answer, as in everything in life, is “it depends.” In perspective, when I think of C to myself , my conclusion is “Hum, now I know it.” And that feeling is something you can’t put a price tag on it.

--

--