I often see some problems in the forum: "Which language should I learn?" "What can I do in XX language?" I have given my opinion to this idea. This article involves a comment on some languages, only represents personal opinions.
Society open thinking
I found a question that beginner's favorite question is "What language should I learn?" I don't want to waste time to learn a language and then use this language to solve all problems. I will quote an Eric raymond before putting my opinion:
"If you don't have any computer language, I suggest you start from Python. It is clear, the document is complete, it is very suitable for beginners. Although it is a good primary language, it is not just a toy. It is very powerful. Flexible, it is also suitable for large projects. But remember that if you will only have a language, you will not meet the technical level required by hackers, and you can't even reach a normal programmer level --- Do you need to learn how Thinking on programming problems with a general method, independent of any language. To be a real hacker, you need to learn how to pass some manuals in a few days, combine you now know, quickly master a new language. This means You should learn a few different languages. If you want to do some important programming, you will have to learn the C language, UNIX's core language. Other languages for hackers include Perl and Lisp. Perl is very practical, worth one Learning; it is widely used in active web pages and system management, so you should read it even if you never need to write programs, at least you should read it. Lisp is worth learning because you finally master it you will get rich experience; these experience Make you a better programmer in the days later, even if you actually use the Lisp itself. Of course, you are in fact you are going to be four. (Python, C, Perl, And Lisp). The most important four basic languages, they also represent four very different programming methods, each of which will make you benefit too much. "
If you read this paramond, you will study Eric raymond from Pyton. Or study the four C language in his proposed? And slow, we pay attention to such a few words: "You need to learn how to think about programming in a general method, independent of any language." "(Python, C, Perl, And Lisp). In addition to being the most important language They also represent four very different programming methods, each of which will make you benefit too much. "It can be seen that Eric raymond is actually a four different programming ideas. He wants to tell everyone that the open thinking is not limited to a language, ie "General Method thinking."
Perhaps someone opposes that it is much better than knowing that it is better than it. It is indeed proficient in it, this is the choice according to what you need. But does not mean that we only need to learn a language, because only a language is easy to limit its limitations. The C language is flexible but is not enough to abstract data. C is strong enough to be flexible? It learns the flexibility and efficiency of C and Simula abstract data capabilities. However, the object-oriented mechanism of C is less than Java. And when you learn Lisp, you will find that the original program can also be edited, although C is also known as scalability, but LISP scalability is C can't. And Lisp is a functional language that has different ways of thinking with machine-oriented languages, and Java has also borrowed a lot of ideas here. I think every language has the best areas and insufficient places. There is no language truly universal, even C , some problems use C to do a bit of powerful. There must be someone to memories of C pain here. Java is really excellent, suitable for distributed computing, but Java is too safe, there may be many hacking temperament, because it has a lot of flexibility for security sacrifice. We should learn open thinking, see the problem to see the core problems, the most fundamental fundamental, and will not be confused by other branches or appearances, it is successful after this step. This will have a method of analyzing problems, learn how to cut the appearance of the problem and see its essence. At this time, you encounter any specific problem, as long as you give some time, you can easily resolve. Selecting a programming language just selecting different tools.
It is not to say that tools are not important, but if there is no very good idea, can you use this tool? And solving a problem is not only one possibility, or the solution to this problem may be divided into several parts and different parts of different parts. At this time, there is no open thinking, can you solve this problem? Take Emacs as an example. The underlying code of Emacs is written by C and the upper code is LISP. Therefore, Emacs is so powerful enough and strong scalability. If only single C is written, it is VI. It is very flexible soon, but how is it scalable?
Seeing some questions about the choice of language I think I really can laugh, I don't know what they think is to learn language or learn to solve problems. Our learning program is just to learn to write the program itself or to learn to solve the problem with programming? If it is the former, it is good, you are a historian, especially only C and compilation can be called an archaeologist. If it is the latter, then you don't have to ask what language is selected, learn the most important thing for programming, choose a language and learn its thinking. At this time, choose which door to eat and you should eat apples in the morning or in the afternoon, you should be familiar with more tools.
Supplement Some is the programming idea other than the program language, that is, algorithm, data structure, and coding specifications. No matter how many doors you are proficient, when you encounter a problem, you can solve it with the fastest and best way, it is to test your algorithm design capacity and data structure. A problem with clearing programs is to see if your coding is standardized. When you need to improve the procedure, you will find a multi-readable program to maintain more convenient, which helps quickly solve the problem.