Friday, December 19, 2008

Advice to budding programmers: Learn C

In today's world, you can really quite easily get away without learning C. Tch tch. Sad.

The programming languages that are out there being adopted dime a dozen by wannabe programmers these days are so full of abstraction that many of them will never know what memory really means.

C should be made mandatory in all computer science courses. And a prerequisite for applying to software development jobs. Why, you might ask? Why should a programmer worry about allocating and freeing memory when he can leave it to the run time to do? Why should programmers rack their brains trying to figure out pointers when they can get through life without coming across one? Why not focus on solving application problems rather than worry about memory leaks?

Well, you have a point. But then, I am not asking all programmers to program forever in C. I am just saying "Learn C". Know it inside out. For a few months in your programming career (the earlier the better), think in C. Dream about linked lists. Sort an n-dimensional array in your mind. Mull over the beauty of a struct. Wonder about pointers to pointers.

This kind of rugged training to your brain gets you ready for the challenges ahead. You understand exactly why Java screws up big time with garbage collection. You will appreciate the layers put above all the 'low level crap'. You might even be able to resolve some of the problems thrown up by Dot Net.

A good programmer uses the facility given to him. But he does not fumble when the software does not behave as documented. He will go one layer lower and find a way out. This kind of skill comes easily to a person who has gone through the grill of programming in C.

C gives you the power unimaginable in higher level programming languages. But, as we all know, with great power comes great responsibility. It is easy to crash things, mess things up beyond recognition and in general, cause utter chaos!

C also has a way of filtering out the wheat from the chaff, the stars from the also-rans. I know many an aspiring programmer who gave up on their programming career because they ran into C early in their life. They just did not cut it.

Is this fair? Absolutely. For them as well as for the developer community in general.

1 comment:

Akbar Pasha said...

I would suggest to learn Scheme and go through this book here - http://mitpress.mit.edu/sicp/full-text/book/book.html

The best ever way to introduce your analog brain to the digital land of computation. C, Java(yuck), Shell, Python(yay) can follow later.