Girish Venkatachalam is a UNIX hacker with more than a decade of
networking and crypto programming experience.
His hobbies include yoga,cycling, cooking and he runs his own
business. Details here:
I don't like the title of this article. I know this is not appropriate and I am not in a mood to look around or rack my brains for a fitting title. It is going to be a tough proposition since words cannot adequately express my feelings no matter what language I use.
The depth of my feelings and conviction are so strong that no language or communication medium can express my feelings in true glory. I can perhaps sing a song about it, but I am no musician.
So here we go. I shall try to explain the idea in this article. But I hope you understand that this article can only capture the spirit and not the details of my thought process.
Even that is a good thing to achieve. The C programming language after all is not for everybody. It is meant for people who need not be told about it. It is meant for people who do not need to be taught.
The C programming language is unique. It is special. It is small. It is great and it is filled with UNIX genius. It is just like a typical UNIX tool which does only one job, but does it well. The C language is small but it is the most challenging programming skill to acquire today.
I have been doing serious C programming for close to a decade now. But I feel like a child on the seashore picking up a pebble here, a pebble there when the vast ocean lies unexplored in front of me.
This was stolen from Isaac Newton. And I also wish to steal another saying of his. I have been able to do whatever programming I did using C only due to the open source C programs I have seen in different projects available in the familiar places like sourceforge and also in later days the operating system source code under /usr/src in OpenBSD.
Many people do not know that the BSD family of operating systems give you the source code for everything that goes into the OS. With Linux, there is fragmentation and there is no central repository. Anyway I digress. So I was saying that the abundance of C programs I could read and learn enabled me to say what Newton said.
If I could see farther it is only by standing on the shoulders of giants gone before me.
I taught C myself and learn the constructs and techniques, indentation styles and so on looking at the wide cornucopia of programs available for everyone to see.
People foolishly think that copying, copy pasting and learning from other people's code is wrong. You have to do it yourself. How can you get sillier than that?
Don't you know that the best way to learn is by example? And that you should always learn from the masters? The best in the field?
That being the case, you should browse C code. You should try to do something on your own and compare what you have done with the masters. That way you know where you stand and correct your thinking and coding practices.
C programming is not for everybody. I am sorry for sounding pompous but that is simply the reality. It is not meant for individuals who are not ready for the long haul. It is not meant for people who program with a view towards making money or getting a job done.
C is meant for people who understand the big picture well. It is meant for technologists, technocrats and people who create and design stuff. You have to go through the pains of C programming for at least 4 years before you can call yourself an expert. If you choose to call yourself that.
I come across many C programmers who say that they will rate their C skills as only 7 or 8 out of 10 even after programming for 5 years or more.
C is deep. C is painful, but it is fun since there is no comparison.
Most of the time, what you can do in C, you cannot do in any other language. Think of kernel programming or embedded systems.
Also I wish to point out that the efforts in learning C and the big picture are richly paid. No doubt about that. The deeper you go into technology, you want to know about memory, CPU, registers and so on. Embedded programming involves tight programming practices. You should be careful with buffer sizes, with mallocs and so on. Your brain learns to think like a genius once you do C programming for a while.
Got something to add? Send me email.
More Articles by Girish Venkatachalam © 2013-01-18 Girish Venkatachalam