In 2014 I began my university career at Politecnico di Torino attending a bachelor’s program in computer engineering. The first class specific to IT was Computer science in my second semester, dedicated to the general structure of a Computer and to basic C programming. Yes, C.

They could teach us whatever other simpler and higher level language, but no, they chose C.

Another specific computer science class in the program was at third semester: Algorithms and programming. A course covering data structures (lists, tree, queue..) and various algorithm (sorting, shortest path..).

A really tough subject, said to be the hardest exam in the three years. Which programming language we use? Again C.

In the next semester we had OOP. What language? C. Of course I’m kidding, we used Java. 🤓

But then another semester came along with Operating systems and of course we used again C language to write processes, threads and semaphores stuff.

At the end looking back I can see that in my bachelor’s degree I mostly wrote C code. Imagine when now I use Java, Python, Go or whatever other language. I feel in paradise and free(me);

This year I began my master’s program in software engineering here again at Politecnico di Torino.

I want to point out two classes I’m following: Distributed programming I and System and device programming. The former teaches how to deal with client-server code, HTML, CSS, Javascript and how to manage network sockets using C language, the latter is about programming Linux and Windows operating system (a sort of Operating systems II) and of course at the moment I’m using pthread in C language.

Reaction of most of the students

Most of the my colleagues complains about this C overflow:

“we have lots of simpler and more productive programming language. C is just old and too low.”

C was born in 1972, It’s pretty old and in the last Stack Overflow survey it is only the 11th most popular language.

From the Stack Overflow annual survey

So why they keep making us write C code and don’t move on something newer and cooler? For example JS (it’s the 1st in the previous ranking)?

Because it is one of the foundation for IT and Computer Science.

What I mean is that if you learn C than you’ll master “every” programming language in a matter of days. To me learning Java was a joke and the “difficult” part was the shift to object oriented paradigm and even Golang has been easy.

With C you must care about memory management, and so you’ll know what’s the heap and the stack and how it is allocated.

In C you must know about segmentation fault

You must be able to manage pointers, and so you’ll know what’s a memory address and how it can be powerful and harmful at the same time.

With C you need to know what are the different types of a programming language, what’s an int, a float, double.. And so you’ll have no problem switching to Python or other untyped languages. (The opposite can be tricky I guess).

You want a list in C? You implement it! You learn how to combine structures with pointers and you’re able to control the computer and the language.

You control the language and is not the language that controls you.

You learn that concurrency has a cost, that exist things like semaphores, that you must close files, that.. The list is too long to be written here.

The thing is that the majority of programming language are C-like. They share lots of syntax with it and so they will be familiar to a C programmer.

Of course it’s not necessary to know C to be a good programmer, but if you want to learn, to truly know what you’re doing and to be a better developer, C language is a must.

It’s easy to learn just some PHP and to grab some JS and call yourself a coder, but remember:

It’s better to be a warrior in a garden than a gardener in a war

A presto, bye!