This is a creation in Article, where the information may have evolved or changed.
Learn at least one new language everyyear.
-andy Hunt and Dave Thomas
He has been a loyal supporter of "learning a new language every year" and has carefully studied Haskell, Common Lisp, Python, go and other languages, and has a certain understanding of Prolog, Scala, Erlang, Lua, and PHP. But a few years later, only a Python language was really left in my brain and used to work. The other languages left behind are just a few ideas. This seems to be in line with Andy Hunt and Dave Thomas in the "Programmer's Path" for this practical purpose: "Learn to solve problems in a variety of ways, expand our horizons, avoid thinking rigid and stagnant" ^_^.
Even the remnants of the thought, in fact, is not profound. It is not so easy to really use new thinking. A programming language, from the beginning to the mastery, must undergo at least three stages of learning grammar, practicing, and using idioms (writing authentic code). This makes me deeply understand: not to use for the purpose of language learning, are wasting life !
Have the energy to learn more languages naturally very good, I eagerly look forward to have a like "Seven Dragon Ball" in the Monkey King of the "Spiritual Time House" it. But in reality, human energy is limited, and we have to face the computer science in the field of knowledge, skills and problems seems to be unlimited. It is therefore advisable not to be too dogmatic in the practice of "learning at least one new language every year". From the programming language itself, Paradigm (PARADIGM) is the main factor that influences the difference of language thinking, while the paradigm of programming language is limited, so are the main mainstream: imperative (procedural), functional, logical, object-oriented, etc. There are several, more than 10 or even dozens of languages behind each paradigm, and we don't really need to learn them. From the perspective of expanding perspective, from each of the mainstream paradigm to find one or two typical language to learn it is possible. such as imperative, we can choose C; function we choose Haskell; logical choice Prolog; object-oriented selection java.
Even if you pick one out of each paradigm, you still have a lot of energy to pay, and we have to consider its usefulness: to use it for the purpose. If you can use it in your work, be with you every day, be accepted by others, nature is best; second, you can find one or two open source projects, and participate in it is also possible, at least to keep your hands hot, if the two points can not be achieved, only by virtue of personal enthusiasm and perseverance, it is not lasting, a few times, You will be unfamiliar with it, and may not even remember the basic "Hello world" syntax. But this year, thought is not to be. In the premise of remaining energy, select some cows to "preach" the language, absorbing the essence of its ideas, maybe one day can be used, so that you and everyone feel you are very NB, raise your own price ^_^. Remember: The programming language is also to spell Father , the language of the famous door (such as go, dart, etc.) naturally get more favor, use and promotion, the probability of the position is much higher, especially in the current new programming language blooming stage. Therefore, in choosing a new language of thought, it is advisable to do so in the post-noble.
this time like "experts", so we in one or two languages must be "fine", this is to bring you butter and bread language. What is the level of expertise? I have a colleague who solves all the problems with C. He even wrote a very basic framework for this, and the code for all business problems was called back in the framework, even though the problem was implemented in Python with just a few lines.
what is the core of computer science research? I think it's certainly not a programming language, just like the core of social science is not human language. I appreciate the view that , as programmers, the most important thing is to create, not to study . We should make more use of the language already mastered to solve the problems in the real world. people who do programming language research may want to understand the characteristics and implementation of various languages, but for most programmers, we only need to focus on the problem domain: To do the underlying platform development, focus on the machine model, communication principles and OS principles and implementation details; it's an honor to be algorithmic. That is the core of the Orthodox program design, and the front-end siege is more focused on the user's experience. In the process of solving practical problems, we adopt the "standard" programming language. That is to do platform development, general use c,c++ and other system programming language, more consider is performance; do front-end development, php/javascript indispensable. We have to consider how to use these programming languages to solve problems, and in these language, we have to be proficient.
From the emerging language to learn new ideas, and then in the old language to achieve the characteristics of the new language, in fact, more in the old language to achieve a certain kind of grammatical sugar, you love to eat, not to mean that others also understand and love to eat, but also easy to be mistaken for "dazzle technology." If you are a technical person, and have been assessed, the new language is well suited to this problem domain, which is directly introduced into the language, so that everyone can use the language of new ideas, new features.
Dialectically speaking, any programming language has its advantages and disadvantages, such as Haskell, pure functional language, variables can not be changed, stateless, the parallel processing has a natural adaptability, but in the processing of basic IO is difficult to write monad, and in imperative language, this IO processing is simply very simple.
As for the functional language, the individual feels that it is still difficult to make its way in the next few years, so it is advisable to keep up with the evolutionary thread of imperative language.
Learning a language across problem domains is usually not a big harvest. A platform server, used to the C senior programmer, let him learn PHP write front-end code, it is estimated that can not burst out any spark.
These are their own years of programming language learning some of the experience, relatively fragmented, but hope to be helpful.
, Bigwhite. All rights reserved.