Why is the C language not outdated
Evaluating any programming language is scolded. Always. It’s like a cold season in spring. People wearing cotton padded jackets and single clothes pass by in the street. Both sides must have two words in their hearts at the same time: “s, B!” This has a professional name in Psychology: it is called “two B” phenomenon!
Let’s start with a table, which is the famous tiobe language ranking list. At present, it is the most authoritative ranking list of language popularity. From this ranking list, you will get the most intuitive conclusion. Both Java and C are declining, and the decline is divided up by languages after third place.
In May, after five years, C language led Java again and ranked first in the tiobe programming language list!
The top ten are:
Did you find any highlights? Yes, the first change of ownership, the C language surpasses Java. You know, the last time C language was first used was five years ago. What made it “make a comeback”?
After five years, C language returned to the top of the list. Affected by coronavirus.
According to Paul Jansen, CEO of tiobe, “this may sound incredible, but some programming languages can benefit from this situation“
Embedded languages (C and C + +) are becoming more and more popular because they are used in medical device software.
For all programming languages, their final purpose is actually two: to improve the operation efficiency of hardware and the development efficiency of programmers.
Unfortunately, these two points cannot coexist! You can only choose one. In terms of improving the efficiency of hardware, C language has no competitors! For a simple example, to implement a list, the C language uses the array int a , which has been compiled into a (base address + offset) mode. For computers, no operation is faster than addition, and no method is faster than (base address + offset) access method.
C language has compressed the operating efficiency of hardware to the extreme. The problem brought by this design idea is the lack of ease of use and security. For example, you can’t mix and save different types in an array, otherwise the compiler can’t calculate the correct offset. At the same time, C language is indifferent to the error offset, which is the notorious cross-border problem in C language.
The “trust programmers” claimed by C language are beautiful words. Its only purpose is to run fast or crash fast. C language only cares about whether the program flies high or not, and does not care whether the program flies tired or not. this is it!
Now let’s look at those non-C languages. Their strengths lie in improving the development efficiency of programmers. Either dynamic lists or secure lists are supported. However, adding any intermediate layer and any security check can not be faster than the method of (base address + offset + no check). There is no language of “easy development and fast operation” in this world. After all, easy development comes from the packaging of the bottom layer after layer.
Now answer the two most common questions:
Hardware is so cheap, is it necessary to make software faster? Most of the people with such questions are regular customers of Internet cafes. They understand that the computer is only in the computer city, and their understanding of computing is only games and playing small movies on the hard disk. Don’t play a game and just hang up. Don’t forget full live simulation, 3D rendering and automatic driving.
When driving, people collect 60 different objects per second, and then make 20 most important decisions according to the different combinations and reflections of the 60 objects. Then select one of the more than 20 decisions to implement. So even with the fastest hardware, automatic driving can’t be said to drive like people. Even if autopilot is successful, what’s the next step? Because we have long predicted: why don’t you go to heaven!
So: computing speed is never enough! Because new applications will become more and more complex and real-time. by the way! I also forgot a more important limitation: the energy consumption of computing! The CPU on NASA’s spacecraft is at most 32-bit. You may not believe it. No CPU on the international space station is 64 bit. I guess one of the main reasons is that astronauts don’t like watching hard disk movies.
Another popular question is: I can invent an equally fast language, but there are not as many holes as C. The idea is OK, and it’s a coincidence that there is this language. It’s a coincidence that its name is d language. It’s a coincidence that not many people use it! This is because of a basic fact.
Now there are too many, too many C codes. Most of them are working normally, such as Linux, window, MacOS, UNIX and VxWorks. You’re right. The kernel of these operating systems is C. Although I’m not sure about the proportion of C in window, I believe people in Microsoft won’t be foolish enough to use c# to completely rewrite the kernel of an operating system. If you want these people to use your new language, it’s not “a little” silly and naive!
And there are some codes that we can’t change at all! After writing a simple five CPU flight control software, NASA will conduct a “full coverage” test. What happens if CPU a breaks down? What if CPU a and CPU B break down? What if CPU a and C break down….?
If you like, you can make a simple mathematical combination. After the test, don’t say rewriting, even adding a comment won’t work. Because the aunt in charge of payload will ask you very seriously why the number of things you reported has increased, but the quality has not increased? You need to explain to her in detail: hardware and software are different. Hardware is something hard to touch, but software is not something soft to touch.
Looking at aunt’s disdainful eyes, you will regret which line of comments you owe. Don’t take it seriously. This is the real story of NASA.
Why did the C language decline so much? Quite simply, some tasks are not in C language. When I was at school, I also compiled the window interface in C language? Then Microsoft soon launched MFC, which is a lot of macros that wrap the underlying C window API.
Then the technology became obsolete. Because Microsoft people realized that the application with windows was not the job of C language in the final analysis, and there was a risk of revealing the truth if it was wrapped one layer at a time, so they invented a new language c# to take charge of this task.
Java is the same, highlighting network, ease of use, security and cross platform. Whether Java, c# or python, they all deliberately avoid the problem of improving the running efficiency of hardware, because they can’t compete with C on this issue, and can’t shake the position of existing C code such as Linux, UNIX and GNU tool.
The rest is just to improve the development efficiency of programmers. This is a good thing for C language. Remove the things you are not good at and make yourself run faster!
With the rise of embedded and real-time systems, AI, robot, autopilot and so on. These are the core applications of C language, and C language has no competitors in this application. So I feel that C language will stabilize in its core applications and begin to pick up gradually. (MA Nong turns over. Note: Mr. Zhao was right and picked up as expected.)
But I’m not optimistic about the Java language. Python is superior in size and flexibility. After a line of Python code, you don’t know whether you are of duck type or not? In the platform field, each platform launches its own exclusive language. Windows will continue to support c#, apple prefers swift, Android launches kotlin, and Google uses go. Java claims that it is free to visit every home, but no matter who you go to, you will find a real son sitting in the living room. At this time, your dry son is more or less embarrassed. So I guess that in the end, Java will stabilize in large non real-time applications with strict cross platform requirements.
Finally, C + + won’t eliminate the C language. After having an object, you will find that no matter how simple the object is, it also consumes resources, and after having an object, you always think about inheritance involuntarily. Once inheritance is realized, you will find that inheritance brings much more trouble than you think. James, the inventor of Java, was asked what he would do first if he could redesign the Java language? He said, “get rid of the object”! As a married procedural ape with two children, I feel it.
If you see here, you don’t remember anything. Then just remember one thing: no one can predict the future.
✿ only five computers are needed in the world – founder of IBM
✿ 640K memory is enough – founder of Microsoft
✿ no need to use a computer at home – Dec founder
✿ if someone tells you that the C language is out of date, it’s best to think for yourself. It’s best to be realistic. If not, at least be suspicious.
Netizens commented on C language
1. Aviation and military industries are not accessible to the public;
2. Now many industrial fields also use 64 bit processors (the maturity and popularization of artificial intelligence technology) 3. Consumer fields, not to mention;
4. As an ordinary program ape, it is mainly in the industrial field or consumer application field. C language is suitable for bottom development. In fact, C + + objects do not consume much resources. C + + object model is introduced in detail in this book. Although it is somewhat outdated, the design concept basically continues. c. C + + will continue to have a place. But it is hard to say whether this range will continue to narrow to an extreme. Elimination, my personal opinion should not.
5. The scope is narrowed and small, and the salary return may not change significantly.
6. Will there be a language that is more suitable for low-level development and has more advantages than C. I dare say that, but I used the trust language some time ago, which still brightened my eyes. Moreover, big factories are also paying attention to this language. After all, it was designed later. It may be better to summarize the experience of predecessors. The more it is applied to the upper layer, the better the development platform and language are encapsulated, easy to use and closer to the human way of thinking (the previous development language is very much like the specific instructions controlling the computer, which is developing slowly)
Why is C still dominant?
This is especially true for a technology in the computer industry. Since its birth in 1972, C language has maintained a lively state. Today, it is still one of the basic building materials we use to build the software world.
But sometimes a technology can exist for a long time just because people haven’t had time to invent something new to replace it. Over the past few decades, many other languages have emerged – some of which are explicitly designed to challenge the dominance of C, and some are trying to slowly disintegrate the dominance of C with their popularity.
It is easy to argue that C needs to be replaced. Both programming language research and software development practice suggest how to do things better than C. However, after decades of research and development, the status of C language is still stable. Few other languages can beat it in terms of performance, bare metal compatibility, or versatility. However, how does C compete with those star programming languages in 2018? The details are still worth seeing.
C vs. C ++
Of course, C is most often compared with C + +. As its name implies, C + + was created as an extension to the C language. The difference between C + + and C can be summarized as that C + + is more extensive (commendatory) or more extensive (derogatory), depending on whether you are asking C or C + + programmers. (laughs)
Although the syntax of C + + is still similar to C, it provides many very practical functions that are not available in native C: namespace, template, exception, automatic memory management, etc. Projects that require top-level performance, such as those involving databases and machine learning systems, are usually written in C + +, so that the project can extract and utilize every bit of performance as much as possible.
In addition, C + + continues to expand more actively than C. The upcoming C + + 20 will bring more functions for developers to enjoy, including modules, collaborative programs, synchronization libraries, and concepts, which make the template easier to use. The latest version of C standard has only a few updates and focuses on maintaining backward compatibility.
In fact, all the additional functions in C + + can also become cumbersome. And it’s a big burden. The more C + + specific functions you use, the higher the complexity introduced and the more difficult it is to correct the results. Developers who limit themselves to only one subset of C + + can avoid many serious pitfalls and additional burdens in development. But some teams want to fundamentally guard against the excessive complexity of C + +. Sticking to C forces developers to limit themselves to a subset. For example, the Linux kernel development team directly avoided C + +.
Choosing C over C + + is feasible for you – and any developer who will maintain your code – to avoid entanglement with the complexity of C + + by adopting forced parsimony. Of course, C + + has rich advanced functions, which has its own reason. But if minimalism is more appropriate for current and future projects – and the team responsible for the project – it’s wiser to choose C.
C vs. Java
For decades, Java is still one of the main forces of enterprise software development – and in general, one of the main forces of development. Many of the most important enterprise software projects are written in Java — including the vast majority of Apache Software Foundation Projects — and Java is still a viable language for developing enterprise requirements projects.
Java syntax draws a lot from C and C + +. However, unlike C, Java does not compile to native code by default. In contrast, the Java runtime environment, JVM, JIT (real-time) compiles java code to run in the target environment. Where appropriate, JIT compiled Java code can approach or even exceed the performance of C.
The concept of “write once, run anywhere” behind Java also allows Java programs to run with relatively little adjustment on the target architecture. In contrast, although C has been ported to many architectures, any given C program may still need to be customized to run properly between, for example, windows and Linux.
This combination of portability and powerful performance, as well as the ecology composed of huge software libraries and frameworks, makes Java the preferred language for building enterprise applications.
Where Java loses to C is an area where Java never intended to compete: running close to the underlying structure or dealing directly with hardware. C code is compiled into machine code and executed directly by the process. Java is compiled into bytecode, an intermediate code that is then converted into machine code by the JVM interpreter. In addition, although Java’s automatic memory management is an advantage in most cases, C is more suitable for situations where limited memory resources must be fully utilized.
That is, in some ways, Java can be close to C in speed. The JIT engine of the JVM optimizes routines according to program behavior at run time, allowing many types of optimizations that cannot be implemented in C without precompiling. Although the Java runtime automatically performs memory management, some newer applications can solve this problem. For example, Apache spark partially optimizes in memory processing by using custom memory management code that bypasses the JVM.
C vs. C and Net
Nearly two decades after its launch, C and Net framework is still a major part of the enterprise software world. Some people say C and Net is Microsoft’s response to Java – a managed code compiler system and a common runtime – many comparisons between C and Java also apply to C and C or Net.
As with Java (and, to some extent, python) Net provides portability across various platforms and a huge integrated software ecosystem. in consideration of. Net world, these are not small advantages. When you use C or any other Net language, you can use Net runtime.
Another Java like advantage of. Net is JIT optimization. C and Net programs can be compiled in advance according to C language, but they are mainly composed of Net runtime for real-time compilation and optimization using runtime information. JIT compilation allows running programs that cannot be executed in C Net program.
Like C, C and Net provides various mechanisms for direct access to memory. Heap, stack, and unmanaged system memory are all available through Net API and object access. Developers can use it Net to achieve higher performance.
But these are not without cost. Managed objects and unsafe objects cannot be exchanged arbitrarily, and the grouping between them will reduce performance. Therefore, maximize Net applications need to keep changes between managed and unmanaged objects to a minimum.
If you cannot afford the performance loss caused by the change between managed and unmanaged memory, or Net runtime is a bad choice for the target environment (for example, kernel space), or it may not be available at all, so C is what you need. With C and Net, C can unlock access to memory by default.
C vs. Go
Go’s syntax largely draws on C — curly braces as delimiters, statements ending with semicolons, and so on. Developers who are proficient in C can usually use go directly without effort. Even with the unique functions of go, such as namespace and package management, it is not difficult for developers.
Code readability is one of the guiding design goals of go: developers can easily master any go project and master the code base in a short time. C code bases can be difficult to understand because they can easily aggregate a large number of macros and #ifdef files that are specific to a project or team. Go’s syntax, its built-in code format and project management tools are designed to avoid this structural problem.
Go also provides additional features such as goroutine and channel, language level tools for handling concurrency and messaging between components. C needs to be completed manually by developers or provided by external libraries, but go provides these functions out of the box, making it easier to build software that needs these functions.
The deepest difference between go and C lies in memory management. By default, go objects are automatically managed and recycled. This is very convenient for most programming work. But it also means that any program that needs deterministic processing memory will be more difficult to write.
Go does contain unsafe packages to bypass some types of processing security of go, such as reading and writing arbitrary memory using the pointer type. But unsafe comes with a warning saying that programs written with it “may not be portable and are not protected by the go 1 Compatibility Guide.”
Go is very suitable for building command-line utilities and network services, because these rarely use too detailed operations. However, if it is low-level device drivers, kernel space operating system components and other tasks that need to strictly control memory layout and management, it is best to create them in C.
C vs. Rust
In some ways, rust is a response to the memory management challenges created by C and C + +, as well as to many other shortcomings of the two languages. Rust is compiled into native machine code, so it is considered equivalent to C in terms of performance. But by default, memory security is the main selling point of rust.
Rust’s syntax and compilation rules help developers avoid common memory management errors. If the program has a memory management problem that does not conform to the rust syntax, it will not be compiled. Novices who have just come into contact with this language, especially developers who used to use C language, because C language provides sufficient fault-tolerant space for such bugs, the first step for them to contact rust is to learn how to appease the compiler. But rust supporters believe that this short-term pain has a long-term return: safer code that won’t slow down.
Rust also improved the C language through its tools. By default, project and component management is part of the tool chain provided by rust, the same as go. There is a default and recommended way to manage packages, organize project folders, and deal with many other things that C needs to deal with separately. Each project and team deal with them in different ways.
However, what is touted as an advantage in rust may not be very attractive to c developers. The compile time security function of rust cannot be disabled, so even the smallest rust program must comply with the memory security limit of rust. By default, C may not be safe, but it is more flexible and tolerant when necessary.
Another possible disadvantage is the size of the rust language. Even considering the standard library, C has relatively few functions. The rust feature set is huge and growing. Like C + +, a larger rust feature set means more powerful functionality, but it also means higher complexity. C is a smaller language, but easier to model in the mind, so it may be more suitable for projects that are too small for rust to be worth fighting.
C vs. Python
Today, when talking about software development, python always seems to appear in the conversation. After all, Python is “the second best language for all projects”, undoubtedly one of the most common languages, with thousands of third-party libraries.
What Python emphasizes, and what is most different from C, is that it is conducive to development speed rather than execution speed. A program that may take an hour to write in another language — such as C — may be written in Python in a few minutes. On the other hand, the program may take a few seconds to execute in C, but it takes a minute to run in Python. (a good rule of thumb: Python programs usually run an order of magnitude slower than their corresponding C language programs.) But for many jobs on modern hardware, Python is fast enough, which is an important reason why it is widely used today.
Another major difference is memory management. Python programs are completely memory managed by the python runtime, so developers don’t have to worry about the details of allocating and freeing memory. But again, developers’ ease comes at the cost of runtime performance. Writing C programs requires strict attention to memory management, but the generated programs are usually the gold standard of pure machine speed.
However, in their blood, Python and C share a deep relationship: Python runtime reference is written in C language. This allows Python programs to wrap libraries written in C and C + +. Many important modules of the python ecosystem of the third-party library, such as the library of machine learning, whose core is C code.
If development speed is more important than execution speed, and if most of the high-performance parts of the program can be isolated into separate components (rather than throughout the code), pure Python or a mixture of Python and C libraries makes it a better choice than using C alone. Otherwise, C is still the boss.
Why is C language worth learning
1. In the embedded field, C language is still the preferred language. Embedded has not declined because of the development of other upper-level languages. Now embedded still shows strong vitality in its own field. Mobile phones, televisions, set-top boxes, air purifiers and other electronic products are all in their field, which can not disappear in a short time in the long run. Moreover, with the rise of intelligent robots, the use frequency of C language began to increase.
2. The operating system kernel code is mainly based on C language. In terms of language flexibility and execution efficiency, C language is still the most appropriate language, and C language is still the preferred language for system level code. And now most of the underlying C language of many popular languages has been built. From this level, C language will never be outdated. At most, it has narrowed the scope of application, but its role is still powerful.
3. The position proportion of C language is a little lower than that of application level language, but the whole software industry is developing, and the absolute position of C language programming has not decreased. Moreover, for programmers who are interested in becoming architects, C language is still a required course, and building a software framework still needs to understand the underlying layer.
To take a step back, even if you feel that the proportion of positions in C language is low and it is difficult to find a job, you can start with C language and establish your own knowledge system. Programming language belongs to the category of tools. It is easy to learn by analogy if you are familiar with the use of one tool. Switching to another language is relatively easy, and it has made a good start for your whole career, Lay a good foundation and make full preparations for a higher level.
The reason why C language is so popular for so many years, its vitality is so strong, and it is highly efficient, convenient and flexible. Even if the probability of language use becomes lower at the upper level, it does not prevent it from continuing to play a role at the system level. Any language has its social value. C language is still worth learning as an introductory language.
4. The income of C / C + + programmers has not been affected. According to the background data of 100offer, the annual salary of programmers who have been hired after 100offer is up to 47w and the lowest is 22.4w. The income of C / C + + programmers is equal to that of other programming language posts and does not show a disadvantage.
As C + + gradually becomes the language required by some specific companies and projects, the income of high-end C + + programmers will be more competitive.
5. It is still the mainstream in the whole game industry and embedded. The first is the game category. Milo Yip said that it is necessary for programmers to use C + + structures / libraries, such as most game engines (such as unreal / source) and Middleware (such as havok / Fmod). Although some C / C + + libraries provide bindings for other languages, the native APIs usually have the best and latest performance.
The second is the East-West category, whether it is network security or anti-virus software, and C / C + + is still the mainstream language.
A popular man vczh said, “when I was in college, I only studied C / C + +. Later, I went to Microsoft for internship. When I got there, I knew that the group didn’t need C / C + +. What should I do? With the rich skills brought by C + +, I finished the homework given by my boss for” learning the basics of c# and WCF within two weeks “on time and started my homework smoothly.”
Of course, this is only vczh’s personal experience and is not universal, but it can’t be denied that C / C + + is still irreplaceable. In an interview, CTO of a startup company said, “even though many people sing ill of C / C + +, in this world, there are still many target channels for many projects that only provide the support of C / C + + compiler for the time being. From this point alone, C / C + + can’t die completely.”
In terms of application, C / C + + is suitable for high-performance computing, embedded system, development of server software, games, real-time system, etc. Therefore, it does not exist to completely replace c + + language in a short time.
C / C + + cannot be replaced in many fields such as system, graphics and network. Its brilliance has reduced its death speed.
When a programming language is significantly stronger than another language in the market, the defects in the strong need language are simply diluted, and the weak language is constantly singled out by people. This comparison between programming languages is unfair and meaningless.
Programming languages are used to express ideas and completion needs. With the development of the times, different languages have made trade-offs in different categories to replace the inevitable scene despite its existence. With the development of C / C + +, the need for C / C + + will inevitably become less and less, but it can’t be seen at all. C / C + + programmers are also irreplaceable and competitive in the market.
Besides C language, do you need to master multiple programming languages?
I just ruined my career. Yes, many people say that to me.
Most of my colleagues understood the news that I was about to leave the company. But what puzzles them is that the company I currently work for is a Windows store, using C # Net, and the position I want to enter requires development in Linux environment, with Java as the main programming language. They think that the change of programming language will make me lose many years of experience, and many people agree with them.
9 reasons to master multiple programming languages
✿ be able to solve the same problem in many ways. Mastering different programming languages means having more choices. After all, when you only have a hammer, everything looks like a nail.
✿ more competitive and more employment opportunities. Learning a second programming language can sometimes double the number of jobs. However, it depends on the kind of language you learn. But anyway, you will have more suitable opportunities to increase your ability to find a job.
✿ show that you have the ability to learn a new language. Potential employers will think you are not rigid or habitual.
✿ learning is fun. Learning new things will keep your mind excited. This will help you grow and improve in new areas.
✿ keep up with the current technology development trend. Know which industry is leading the way, you can always stand at the forefront of the trend, and your skills will not be outdated.
✿ this will remind you why you should love your “Lord” language or how to do things better. Sometimes, only after trying a new language can we know how good the main language is. You will appreciate your favorite language more. At the same time, the new language may have some amazing features that make you feel sorry to meet you late.
✿ help to become a better programmer. Learning a new language helps to improve skills common to all languages, such as designing and architecting algorithms, or dealing with different data structures.
✿ select the best tool for the job. Some languages are better at dealing with certain aspects. Having mastered many languages, you can choose the best tools in your work
✿ show that you have strong learning ability. Nothing proves your learning ability better than mastering a second language.
9 reasons not to master multiple programming languages
✿ it’s easier to master a language. Usually, you can master something only by focusing and devoting yourself. If you constantly switch between multiple languages, the probability of being really proficient in a language will be reduced. Mastering a language also helps you concentrate.
✿ most people only need one job, and most companies use only one language. After you are hired, mastering multiple languages may not help. Sometimes it’s enough to master the language of the project.
✿ there is always something worth learning; Sometimes, this means learning a language more deeply.
✿ in most cases, experts can ask for higher salary because people are more willing to pay more for experts. In his video I’m not sure I want to be a specialist, John sonmez talks about why generalists are not always the best.
✿ even if you master only one language, you can still be considered a great developer. Whether you are a great developer or not has nothing to do with how many languages you master. The key is what you create. Because only one language is involved, you can spend more time creating.
✿ you only need to learn limited software development tools. Most languages have only a few tools. Switching languages often means switching tools. By mastering only one language, you can master relevant tools faster. This will help to improve work efficiency.
✿ easier to position your market. Because you only master one language, basically you will only settle down in this direction (even if not out of your own choice).
✿ you can solve most software problems in any language. No matter how many people tell you, most languages can be used to solve any problem. If problem solving is your main goal (it should be), mastering more languages does not necessarily help achieve this goal.
✿ understanding one thing in depth is better than understanding ten things on the surface.
This is not a black or white problem. Like other problems, the best solution is to take the middle value: there is always a gray area. If you are a beginner, it will be easier to learn a language and apply it to the first ten projects. But after that, I suggest you become a “T-shaped” software developer.
If you want to join us as programmers——Programmer learning base [Click to enter]!
Learning: C language, C + +, windows programming, network programming, QT interface development, Linux programming, game programming, hackers and so on
Programmer development engineer, start here!
Introduction to programming:
Recommended learning books:
An active, high-level and high-level programming learning hall; The introduction to programming is only incidental, and the improvement of thinking is valuable!
What is a “T-shaped” software developer?
The so-called “T-shaped” software developers have deep attainments in a specific area and are experts in a language. The vertical line in the T letter represents this point; In addition, they will continue to learn another skill widely, which is represented by the horizontal line in the T letter.
So, what does this have to do with software development, especially the learning of programming language? My suggestion is to be proficient in a programming language, which will become your future livelihood and be used to solve most problems. You should try your best to master the language. On this basis, you can learn the second language or skills most suitable for your work.
T-shaped software developer is a generalist, proficient in a certain field.
In the process of becoming a T-shaped developer, you will have the flexibility to master multiple languages and have the advantages of experts in a certain field.
Which programming language should I master?
A common question is which language should be learned. Or, if you are a beginner, what language should you learn first. Usually, I choose a language with a certain history as the main language. This language should be used in many industries, with a wide range of users and a large number of development tools. Languages that meet these standards are: Java, C # Net, ruby, python, and swift.
Tiobe software continuously tracks the popularity of software languages based on these standards and indexes them. You can click on the tiobe index to view the complete list of programming languages. The index is updated monthly, and most of the top 20 languages are good choices. Will these languages be popular in the next 10 years? I’m not sure. However, it is likely to remain popular for at least the next four years. I think it is enough for any project ready to start.
✿ whether you need to master multiple languages depends on your goals
✿ want to start a new Amateur project or business? Maybe you only need to master one language.
✿ want to change the industry or control the technology development trend? Maybe you need to master more than one language.
✿ want to work in an enterprise environment? Maybe you only need to master one language.
✿ want to work on cutting-edge projects? Maybe you need to master more than one language, because trends are always changing.
To be honest, there is no absolutely right or wrong answer to whether you need to master more languages. The final decision depends on you.