Re: About programing, a general question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


-- 
users mailing list
users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux