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