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
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
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
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.