
Follow Us丨Book Giveaway at the End
Abstract: Most programmers encounter more than one programming language in their careers, but typically master and use only one. So among the many programming languages with varying applicable fields, which one is best for you to learn? “Old programmer” Eleanor Berger summarizes his views on various programming languages and their development over the years. Let’s take a look at what he considers the best programming language.
Recently, famous game programmer and co-founder of id Software, John Carmack, stated in an interview that programmers should focus on mastering one programming language. This surprised me a bit. Although I personally agree with this advice, it is a controversial viewpoint in today’s programmer community.
I guess I am what people refer to as an “old programmer.” I am not young anymore, have spent my life working in programming, and have been engaged in this professional work since entering society. Sometimes, I feel like a programming language enthusiast, having witnessed the development of many programming languages. Looking back, it has been an exciting history, and we might involuntarily draw a (wrong) conclusion: Knowing several programming languages is never a bad thing. The historical development of programming languages is fascinating, but the current situation is relatively calm.
In this article, I want to reflect on the past, summarize lessons learned, and see which programming language is the best standardized language.

01
Prehistoric Era (1950s – 1980s)
With the gradual rise of computing hardware and computer science as a discipline, computer programming (beyond the processor’s own instructions) also began to develop slowly. In the initial decades, programming languages were primarily a research subject in academia and captured a small number of researchers. The choices for programmers were limited and mainly depended on the field.
Business programming used COBOL, scientific programming used Fortran, and some other languages were typically used for specific fields, research, or hardware.
For most programmers, throughout their programming careers or for a long time, focusing on learning one programming language was sufficient. Although some were interested in programming language design, the field was still very immature at that time. Despite some interesting innovations, there was not a good understanding of how to design a good programming language.
02
Specialization (1980s – 1990s)
With the increase in the number of computers and the diversification of their uses, the number of programming languages began to grow, and the choice of programming languages became a popular topic. People started categorizing programming languages. We could determine which language programmers would choose based on the types of programmers and the level of specialization they desired. Personal computer programming enthusiasts used the increasingly popular BASIC. It was a rather absurd and primitive programming language but was widely used and became a guiding light for a generation of programmers (including myself). Pascal introduced structured programming and had a significant impact (Pascal, Turbo-Pascal, and Delphi established a thriving community but ultimately disappeared).
C, which originated from UNIX, became the system programming language. C++ became the successor to C and borrowed object-oriented programming from Smalltalk, becoming the language for professional application and service developers. Eventually, Visual Basic (which has nothing to do with BASIC) popularized “visual programming,” meeting the demands of application development (which grew rapidly with the advent of Windows), and became the choice of the masses. However, it was commonly believed that VB programmers were domain experts doing programming part-time, while C and C++ were for “professional” programmers.
During this stage, people still did not have a good understanding of programming language design, leading to many popular programming languages having less than ideal designs in many aspects. C is simple and powerful, but difficult to master, with too many potential pitfalls. C++ had good intentions but ultimately poor design and a bad user experience. Visual Basic was both fun and simple but somewhat trivial, failing to meet standards of elegance and efficiency given the technical conditions of the time. Smalltalk and LISP were interesting and elegant languages, but their bundling with specialized hardware and expensive tools led to their downfall.
03
Maturity (1990s – 2000)
Later, the rise of the Internet occurred. The impact of the Internet on programming languages may be unknown, but it was undoubtedly a significant factor. Long ago, programming languages were rare, usually born in research labs and large commercial companies; but now it seems that anyone can develop their own programming language. For a time, PERL became a popular general-purpose language, covering everything from system administration to web programming.
Later, Python transformed from a scientific research language to a simple and easy-to-learn general-purpose language. Although it started slowly, it ultimately swept the entire world. It is said that Netscape’s Brandan Eich developed JavaScript in just a few days (as a very limited browser extension language). This not only proves Eich is a genius but also shows that people at that time had a good understanding of programming language design.
During this period, many other programming languages emerged, among the most famous being Java. The language itself is not particularly special, but the JVM it provides is a universal runtime environment that implements “write once, run anywhere,” meaning that the language is very versatile and not limited by specific hardware, operating systems, or target environments. Strictly speaking, the early JVM had nothing to boast about, but it marked the beginning of a mature era for language runtime and deployment options.
04
Rapid Development (2000 – 2010)
Since the advent of the JVM, programming languages began to develop rapidly in an interesting direction. Just-in-time (JIT) compilers derived from the Self language (the successor to Smalltalk, although excellent, it failed spectacularly) were studied more deeply, leading to the birth of Java’s HotSpot, while Microsoft launched .NET CLR to counter Java. .NET took it further by making the CLR (Common Language Runtime) a universal runtime for multiple languages, not just C#.
In hindsight, this was a watershed moment: the choice of programming languages became less important. This may not have been the main reason Microsoft made this choice (at that time they were still struggling to support the very popular Visual Basic and C#), and coupled with Microsoft’s closed licensing during that time, the CLR ultimately failed to become the most popular runtime environment. However, in the first decade after the millennium, the number of programming languages grew exponentially and became ubiquitous.
On the other hand, the number of programmers also exploded. With the rapid growth of software demand and the proliferation of tools and knowledge, millions of people around the world became programmers. These programmers are also human, yearning for strong community identity. Just as ordinary people have strong and irrational views about sports teams, programmers began to take sides on programming language choices.
Many programmers were forced to choose some emerging, unique, and special programming languages. For example, some claimed functional programming was the way to go, Ruby was better than Python, Scala would revolutionize data science, and not choosing Clojure was your loss… Thus, programming languages transitioned from linear development into a chaotic Darwinian survival of the fittest period.
05
Super Standardization (2010 to Present)
Initially, it was thought that during this period, people would realize that some programming languages were too crazy to sustain development. However, the reality was quite the opposite; rather, an unexpected shift occurred. In the era of “cloud” computing, the deployment of many applications and services across a large number of distributed nodes on the Internet made the choice of programming languages seem irrelevant.
Programmers are developing independent components that communicate with each other, so why bother about programming languages? Components do not need to know what language others are written in. If a programmer prefers to write components in language X, then they should use that language. Who cares?
Components running on different machines are the same; with the advent of Docker, containers have become popular, and whether applications run on a single machine or software collaborates across a machine cluster, they can all be easily managed using the same paradigm.
Today, people are still developing new programming languages, many of which are promising and highly anticipated. Some are domain-specific (Swift, Kotlin, and Dart for mobile applications, Solidity for Ethereum smart contracts), while others are more general-purpose, but each language benefits from the lessons learned over the decades (Go for cloud programming, Rust for system programming, and TypeScript as a superset of JavaScript, etc.).
Meanwhile, the programming world has reached a new level of maturity, as we no longer chase every new trend or adopt every new language. We have all grown.
06
Focus on Mastering One Programming Language
Undoubtedly, some programming languages are indeed superior, while others are better suited for specific use cases. Anyone who has done programming for a while knows that learning a new language is not difficult at all. Most programmers can easily learn the basics of a new language in an afternoon and can improve their work efficiency to some extent after using it for a few days. Newbie programmers can start learning from any mainstream programming language and easily apply the programming knowledge they acquire to other languages.
However, frequently switching programming languages is not a good thing for two main reasons. First, learning a programming language is a bit like learning to play chess. You can quickly learn the rules, but that doesn’t mean you can defeat an experienced player. You need to learn strategies, which takes time and practice. It is an ecosystem made up of best practices, pitfalls, optimization techniques, as well as libraries, tools, and communities.
Secondly, programming is simple but prone to errors. Even with common programming experience and the best tools, translating ideas into computer code is not an intuitive action. Regardless of how well a programmer has built their intuition, they must undergo a cycle of repeated use, immediate feedback, and error correction. Each time you switch programming languages, you pay a price.
So, in my experience, the choice of programming language is important, but once a choice is made, it should be adhered to in the long run.
07
How to Choose a Programming Language
As of 2022, we need to consider the following points when choosing a programming language.
First, the most crucial consideration is the applicability of the language. If it is a specific domain that must use some domain-specific language, then the most universally applicable language is preferred. Fortunately, since Java proposed “write once, run anywhere,” runtime and deployment are no longer issues, and costs and licensing are no longer constraints. Today, all programming languages, runtimes, and various tools are generally available for free.
If a certain language is not suitable for a particular situation, it can only be said that its popularity is insufficient and has not reached everyone; or it may be due to some fundamental factors that make the language indeed unsuitable for the task.
Popularity is important; we should choose languages that have strong communities, rich information sources, and a large number of other programmers available for collaboration or hiring. Any unpopular language is not worth choosing. If special circumstances arise, the choice becomes more difficult. No language can apply to all scenarios, but ideally, a general-purpose mainstream language should suffice for most scenarios.
Finally, the programming language we choose should be superior to most other languages. Even in 2022, there are still some poor programming languages that are difficult to learn and use, easily getting programmers into trouble.
Given the above statements, I believe we actually do not have too many choices. Now, let’s take a look at these best programming languages.
08
Best Programming Languages
JavaScript / TypeScript
JavaScript in the programming language world is like English in human communication. It is the most popular and general-purpose programming language, applicable to many different scenarios (browser/frontend, system/backend, embedded as an extension language in many environments). The runtime for JavaScript (V8 / Node / Deno) is very efficient, with many excellent tools and a large community.
TypeScript is a superset of JavaScript that introduces strong typing and standard tools, rapidly becoming the default choice for JS programming.
Rust
Rust has all the features of C/C++ but is easier to use and has fewer pitfalls. The Rust community and ecosystem are very strong and continuously developing, and the tools are also very user-friendly. If Rust provides the functionality you need, it is undoubtedly the best choice. Situations that previously could only use C or C++ can now also opt for Rust.
Additionally, Rust is establishing its own universal language for WebAssembly (WebAssembly can be seen as the ultimate version of “write once, run anywhere” runtime).
09
Strong Competitors
Python
I have been using Python for over 20 years, but unfortunately, as of 2022, Python is still not a truly general-purpose programming language. One reason is that Python remains very inefficient, and many performance-sensitive situations cannot adopt Python. Another reason is that it has not entered mainstream user environments, such as web browsers or mobile devices.
Nevertheless, Python is still an excellent programming language and holds an important position in data engineering/data science/machine learning, so if you work in these fields, Python is definitely a language worth understanding and loving. Given the current situation, Python is likely to continue developing as the general language of data science, but may not break out of this field.
Go
Go is a language very suitable for “cloud” programming. Go is elegant, easy to learn and use, has an excellent community, ecosystem, and tools. It is widely used in core products in the cloud-native field, so it will continue to develop in the long term. Unfortunately, Go does not have universal applicability and is virtually unusable outside of internet servers. Moreover, due to design choices in Go, it performs poorly in the C/C++ world.
While Go is good, if a choice must be made, anything that Go can do, Rust can also achieve, and over time, Go may be replaced by mainstream system programming languages.
C#/Java
C# and its ecosystem are excellent; you can accomplish many functions with it. Java does not compare favorably to C# in various aspects, so I do not understand why some people prefer it, but Java is indeed very popular. C# is widely applicable, not only as a system and “business” language but has also extended to mobile applications and browsers. It has a powerful runtime and a great ecosystem.
However, unless you need some customized runtime and tool features that C# offers, C# will struggle to compete with JavaScript and Rust in the short term.
C/C++
According to the Lindy effect, C and C++ will continue to be popular for decades to come. If you are an expert in these two languages, you will definitely not have trouble finding a job. If there is a demand in this area, spending time learning both is also a good choice. Otherwise, opting for Rust is more appropriate.
10
Honorable Mentions
Swift / Kotlin / Dart
These languages hold a place in specific domains. If mobile UI programming is needed, these are good choices. However, JavaScript’s applicability is more universal and also suitable for mobile development, so we should choose JavaScript.
LISP (Racket / Clojure)
LISP is special, and even if there is no demand for it in daily work, it should be learned. Racket is an advanced, very complex language (in fact, it is a language construction toolkit). It is said that Clojure has powerful features because its target is the JVM and can use Java libraries. But I am not sure how significant this selling point is.
Haskell / F# / Scala
Functional languages are important. In some cases, they are a better choice. Haskell is representative of functional programming. F# has better general applicability because its runtime is CLR and can use .NET libraries. Scala is not purely functional but very versatile and runs on the JVM.
Julia / R / MATLAB
Julia is very suitable for the mathematical field. R and MATLAB have their own specific strengths. However, in the data engineering field dominated by Python, these programming languages may struggle to survive.
PowerShell
If you are engaged in shell programming, then PowerShell is by far the best choice. It is suitable for all operating systems, so we have no reason to use any other shell. PowerShell can also be considered a general programming language, but in reality, it is not used by anyone outside of system administration.
11
Twilight Years
PHP / Ruby / PERL
These languages once had their glorious years, primarily as web “backend” languages. Regardless of how you view these languages, they should no longer be wasted on. They are all heading towards extinction.
Visual Basic / VBA
VB changed the world, but today it has been eliminated, both as a general language and as an extension to other programs. The functions that could be achieved using VB in the distant past can now be accomplished more excellently with other modern languages.
12
Conclusion
I love programming languages and am always curious about new languages. However, for now, TypeScript is in my mind the number one, while Rust comes in second when powerful functions and low-level access are needed. I believe that in 2022, almost all programmers share similar views with me.
Author | Eleanor Berger Translator | Wan YueProduced by | CSDN (ID: CSDNnews)This article is authorized to be reproduced from CSDN, original text: https://devtails.xyz/@adam/switching-to-c-over-modern-programming-languages
September’s Good Books
New
Rust in Action

This book introduces Rust system programming knowledge from shallow to deep, covering dozens of interesting examples, concise and easy to understand, helping you understand Rust syntax and practical applications of Rust, with example source code provided.
This book introduces the Rust programming language by exploring various system programming concepts and techniques, helping readers understand the ownership system, traits, package management, error handling, conditional compilation, and more through real-world examples.
C Primer Plus 6th Edition Chinese Version
“
The basic requirement for a programming language introduction book that readers love is “easy to understand,” and this C Primer Plus Chinese Version, reprinted for the sixth time in nearly 40 years, has achieved this.
”
The author is clear that every concept and method is aimed at readers who are true “newcomers,” using simple, colloquial descriptions to make the content easier to understand.
This book discusses the basic features of the C language in a complete and detailed manner, clearly explaining the basic concepts and programming techniques of C, and has been updated to align with C11 in this edition. Overall, it uses concise code examples to help readers understand concepts and methods, along with review questions and programming exercises at the end of chapters to help readers consolidate their grasp of key knowledge points.
For nearly 40 years, countless people have used it to learn the C language, and its effectiveness is widely verified, with a Douban rating of 9.4!
C++ Primer Plus 6th Edition Chinese Version
“
This book is also by Stephen Prata and is a good book to help zero-based readers fully enter C++. Although C++ has many similarities with C, the author has written this book specifically for C++ newcomers, without requiring readers to have any background knowledge of C language.
”
This book also uses simple code examples and illustrations to help readers understand the basic concepts and methods of C++, while pointing out common pitfalls in these concepts and methods to help readers understand easily and avoid mistakes. For key content in the examples, the author also provides detailed explanations and analyses, allowing readers to know not only how to use it but also why it should be used, achieving a state of knowing both the what and the why.
With over 20 years and six editions, this book remains the top choice for many to learn C++.
The Beauty of Mathematics Third Edition
“
Mathematical ability has always been a focus for most programmers, and Dr. Wu Jun’s book “The Beauty of Mathematics” systematically explains the mathematical principles behind the technology and applications in the field of information processing, making complex mathematical principles easy to understand for most programmers.
”
The third edition adds content on blockchain, quantum communication, and the mathematical limits of artificial intelligence, and almost rewrites the entire content to make it both easy to understand and deep, more suited to the current computer environment.
Of course, this book is not just about showcasing mathematical principles to readers, but through specific examples within, it teaches readers new ways to think about problems—how to simplify complexity, how to use mathematics to solve engineering problems, and how to innovate beyond conventional thinking.
At the Crest of the Wave Fourth Edition
“
As a practitioner in the computer industry, understanding the rise and fall of the technology industry helps us grasp the development trends of the technological era, thereby better developing ourselves to adapt to the future.
”
This fourth edition integrates all the content from the third edition and “The Mystery of Silicon Valley,” adding nearly a quarter of new content on social networks, autonomous driving, etc. Dr. Wu Jun has rewritten and updated all chapters based on the latest industry developments, doubling the overall volume from the first edition.
By understanding the development history of IT giants like IBM, Cisco, Apple, and Google, readers can gain insights from Dr. Wu Jun’s objective analysis of their successes and failures, allowing them to learn from the development laws of the information industry, leading to a fresh understanding of the industry and their own careers. Being a programmer is not just a job, but a profession with great growth potential. How to catch the next wave is something that can be guided by principles.
Python Programming Quick Start 2nd Edition
“
Python, as the leader of this month’s ranking, is gaining momentum and has become the preferred solution for many workplace problems. Especially for tedious repetitive tasks, manual handling is indeed time-consuming and laborious, and learning programming specifically is too costly; using Python tools for quick processing becomes an effective and simple choice.
”
As a practical guide for beginners in Python programming, this book allows readers to quickly get started with Python automation and free their hands. The first half of the book introduces Python’s basic knowledge, while the second half focuses on automation tasks. Readers do not need to overly focus on Python’s details to quickly learn how to use Python to scrape web information, handle Excel spreadsheets, and process PDFs and Word documents.
This book not only teaches readers how to quickly get started with Python programming but also teaches them how to ask questions and seek help like a true programmer, thus solving problems encountered in programming.
The Soul of Computing
“
Dr. Wu Jun has worked for many years in well-known IT companies, accumulating rich development experience, and during his long career, he has interviewed nearly a thousand excellent computer scientists and engineering candidates, gaining a comprehensive understanding of them. Thus, he clearly recognizes that different levels of computer engineers have different ways of thinking about the same problem, providing different solutions.
”
This book is a summary of his experiences over the years, helping readers generally understand one principle: the level of mastery of computer science determines how far one can go. In the book, he systematically explains the essence of computer science through 10 themes, analyzing the thought processes and solutions of different levels of engineers for various types of problems. Readers can compare and optimize their problem-solving approaches through reading these problems and analyses, assessing their technical levels, and making targeted improvements to advance in their careers.
Computational thinking is a must for all programmers to understand and master, as it is the key to truly grasping the art of computer science and achieving success.
—END—

What language are you using? Have you switched?
Participate in the interaction in the comments section and click to view and share the activity to your friends; we will select 1 reader to receive a free book, deadline September 30.

Reply with [Asynchronous Books] in the backend to participate in the activity~
