About programing, a general question
Marko Vojinovic
vvmarko at gmail.com
Thu Dec 16 18:42:25 UTC 2010
On Thursday 16 December 2010 17:02:25 Parshwa Murdia wrote:
> If one has to start from the scratch, from the zeroth level to do the
> programing, which programing language one should start with?
[snip]
If you know *absolutely* *nothing* about programming, you may want to start
with, say, BASIC (that is, if there still is some implementation of it for
Linux out there :-) ).
Also, try to find some good book on programming in general, for beginners, to
learn about algorithms, independent of any particular language implementation.
Learn what is iteration, recursion, loops, branching, sorting, I/O, and such
things.
Try to find a "Hello World" example program, written in basic, pascal, C, bash,
Perl, Python, fortran, etc... Compare and contrast.
Once you become familiar with the most essential concepts of programming and
have introductory-level experience in at least two languages (say, basic and
pascal, or python and perl), go and learn C seriously (get a K&R book or one
of many others which people can recommend).
Mastering C essentially means mastering procedural programming in general. The
two next conceptually different things you want to learn are object-oriented
programming (say, C++), and functional programming (say, lisp or prolog).
After that you can say you've seen it all, and every other language you come
across will just be one of these three things, in a new syntax (and it's own
quirks).
At that point you need to decide *what* *you* *want* *to* *do* with all this
knowledge, and then choose the language which is most appropriate tool for the
task at hand.
It takes cca 10 years to go through the whole thing. One typically starts when
entering highschool (or before), and by the end of highschool (say 4 years)
one has a working knowlegde of C, pascal or equivalent procedural language.
During the 4-5 years at the university one learns the concepts OO and
functional programming, and can grasp proper C++ and lisp. The additional 1-2
years are needed to master the syntax and quirks of any other language you may
be interested in. Total of 10 years, give or take. ;-) Of course, if you are
devoted and dedicated full-time to learning programming, you can do it less
time, say 3-5 years.
That would be my advice on how to embark in learning programming in general. I
guess most people have went through some variation of this path. :-)
> Many say that what is the purpose of learning, then I say that to have the
> basic understanding of how exactly we can handle the machines like the CPU.
> Not to generate the big projects for the management processes, not even
> banking system but to know the basic of programing like how to handle the
> machines at the first, for that purpose, for the the scratch level purpose
> and for the one which is good even for Linux, what programing language
> should one like me, initiate?
If you want to understand how things work low-level, you want to learn
assembly.
Caveat --- don't even *try* to learn assembly before you have mastered at
least C in the scheme above. ;-)
Every other language eventually gets translated into an executable ("binary")
code before being executed on a machine. This is the purpose of a compiler ---
it takes the source code written in some language and translates it to set of
instructions for the processor (an executable). The assembly language is
basically a human-readable form of this, and represents the lowest level of
understanding of how any computer program actually works. The only thing
beyond this is just hardware.
Of course, assembly is so low level that it is completely unusable for
anything other than conceptual understanding (and reverse engineering :-) ).
Today everybody uses one of the higher languages which are much more
expressive (in human terms). But they all get translated to something that
looks like assembly before being executed, so if you are familiar with that
you can have a good idea how everything else is constructed, at least in
principle. ;-)
HTH, :-)
Marko
More information about the users
mailing list