I am new to programming. I would like to learn C programming language.
But, one of my cousin told me that, it is only suited for Computer
Science students and for learning that language you should know the
following things :-
I don't think C is a very good language for computer science students
except as an intermediate step to something like C++ or Java. Those
later languages are far better for implementing data structures.
1. Computer Organization and Architecture
Well, you should understand what memory, a disk, and input are. Also
what a central processing unit is and why your computer has one.
2. Assembly Language [ For good understanding of pointers ]
Unnecessary, but it is one path for learning C. Personally, I learned
it in the order of BASIC, 6502/6510 assembly, PDP-11 assembly,
Fortran, 8086 assembly, Pascal, Ada, 68000 assembly then C. As a
Pascal programmer, it took me about a week to pick up the basics of C,
because the languages are similar enough in nature. The real hump was
going from Basic to Pascal, but I think that was mostly because I was
simultaneously gaining (dynamic memory, data structures) and losing a
lot (unstructuredness, nice and simple system-specific libraries,
direct access to assembly and memory locations, etc) from that
transition.
A more sensible path these days is simply to pick up Python first,
then follow it up with any *NORMAL* programming language like C. You
should skip crazy languages like Lisp, scheme, Haskell, Erlang,
Prolog, etc as they are very different and have very little real world
utility. Also these days, there is basically no place that you can
use C where you cannot also use C++, which is simply a more expressive
(though more complicated) language with most of the same functional
characteristics as C.
So Python => C => C++ is a very effective and useful path for learning
programming languages. That triplet of languages also gives you the
most important aspects of all practical modern programming languages.
If you really want to learn assembly, I think it might be useful to
pick it up after you've got the basic's of C down pat. It will help
you understand how the C language and your machine truly functions,
but its optional, and many people get away with never learning it.
After getting to C++, you can branch off to Ruby or Java or some other
exotic modern language, or you can head off to Lua if you want to do
more embedded control programming and bring back the expressiveness of
Python to a C-like programming environment. After that, sky's the
limit.