Mastering (practical) programming languages is often divided into two parts, the language itself and surrounding libraries/frameworks. These two parts complement each other and are indispensable
As far as the language itself is concerned, the most important thing is to understand the abstract mechanism/programming paradigm of the language: early languages may be relatively simple, purely procedural, and purely object-oriented, while most modern general-purpose languages are often multi-paradigm. It often supports both object-oriented and process-oriented, and is more or less functional. This mixed proportion and style determines the style of the entire language. Some languages will have some "core concepts". If you remove them, they will directly penetrate the entire foundation of important concepts/mechanisms (such as JS prototypes, Java interfaces, C pointers), so it is a good idea to seize breakthroughs in these core concepts; Other languages may not have such an obvious core. Such languages often mix the characteristics of multiple other languages. You can start by looking at which features they have borrowed, what adjustments they have made, and which features they have not borrowed. The important thing is the "flavor". When writing Java, you must have a Java flavor (rather than trying to use Java to implement a subset of a dynamic language), and when writing JS, you must have a JS flavor (rather than trying to create interfaces, encapsulation, etc.). There are some flavors that all languages pursue in common, such as readability and maintainability (excuse me for excluding brainfuck...), which can also be a breakthrough (for example, what features of this language enhance readability?)
The other part is the peripheral class library including the tool set. I often use the analogy of learning English. The previous part may correspond to grammar, and the class library is equivalent to vocabulary. What are the main application scenarios of this language? In these What built-in or open source class libraries are available in the scenario, what are the advantages and disadvantages of different class libraries, how to choose the appropriate class library, and how to make several different class libraries work harmoniously together. What kind of code is suitable to be extracted into a class library, and what should you pay attention to when writing your own class library. What common auxiliary tools are available for this language.
I think the main sign of learning a language well is that it disappears from your thinking. You find that your thinking process when thinking about how to write code has nothing to do with the specific language, "How to use XX to implement YY" Such questions have never appeared, nor have they interrupted your train of thought
Title and content are two different issues...
Mastering (practical) programming languages is often divided into two parts, the language itself and surrounding libraries/frameworks. These two parts complement each other and are indispensable
As far as the language itself is concerned, the most important thing is to understand the abstract mechanism/programming paradigm of the language: early languages may be relatively simple, purely procedural, and purely object-oriented, while most modern general-purpose languages are often multi-paradigm. It often supports both object-oriented and process-oriented, and is more or less functional. This mixed proportion and style determines the style of the entire language. Some languages will have some "core concepts". If you remove them, they will directly penetrate the entire foundation of important concepts/mechanisms (such as JS prototypes, Java interfaces, C pointers), so it is a good idea to seize breakthroughs in these core concepts; Other languages may not have such an obvious core. Such languages often mix the characteristics of multiple other languages. You can start by looking at which features they have borrowed, what adjustments they have made, and which features they have not borrowed. The important thing is the "flavor". When writing Java, you must have a Java flavor (rather than trying to use Java to implement a subset of a dynamic language), and when writing JS, you must have a JS flavor (rather than trying to create interfaces, encapsulation, etc.). There are some flavors that all languages pursue in common, such as readability and maintainability (excuse me for excluding brainfuck...), which can also be a breakthrough (for example, what features of this language enhance readability?)
The other part is the peripheral class library including the tool set. I often use the analogy of learning English. The previous part may correspond to grammar, and the class library is equivalent to vocabulary. What are the main application scenarios of this language? In these What built-in or open source class libraries are available in the scenario, what are the advantages and disadvantages of different class libraries, how to choose the appropriate class library, and how to make several different class libraries work harmoniously together. What kind of code is suitable to be extracted into a class library, and what should you pay attention to when writing your own class library. What common auxiliary tools are available for this language.
I think the main sign of learning a language well is that it disappears from your thinking. You find that your thinking process when thinking about how to write code has nothing to do with the specific language, "How to use XX to implement YY" Such questions have never appeared, nor have they interrupted your train of thought
Master these:
Language background and philosophy
Basic syntax and concepts
Starting from hello world, to small works and small applications.
Application Development Framework
Tips and Traps
Language implementation
Further deepen your understanding of language.
I think so:
Think about what you want to do by learning it
Think about what to do with it
Learn grammar
Learn about API
Do what you have to do
I think we still need to pay attention to the relationship with the system and learn more about system calls