In the last century, hundreds of programming languages were invented, but in the 21st century, when we all entered the Internet age, there are only a few left.
If you look at TIOBE's programming language ranking list, you will find that in the past 20 years, those old faces have jumped up and down: C, Java, Python, C++, C#, JavaScript...
In the late 1980s, an average of one new language appeared per month; now, an average of one per year is fine.
I was a little curious, so I went to pick up the emergence time of other programming languages, and divided them into Mesozoic , New Generation and Old Generation .
Let's first look at the guys in the Mesozoic generation, in their 20s and early 30s, they are the backbone of programming.
Python : 1991
Visual Basic : 1991
PHP : 1995
Ruby : 1995
Java : 1995
JavaScript : 1995
C# : 2000
(1995 was really a miraculous year, several bigwigs were born at the same time.)
Look at these old-timers, especially the C language, which is old and strong, standing for 50 years, and eating system-level programming to death.
Lisp : 1958
Pascal : 1970
C : 1972
Objective-C : 1984
C++ :1985
Object Pascal : 1986
The new generation is full of vitality, showing their sharpness, and staring at the old guys.
Go : 2009
Rust : 2010
Kotlin : 2011
Elixir : 2011
Julia : 2012
TypeScript : 2012
Swift : 2014
The new generation is just that they want to challenge the status of the Mesozoic generation and seize power, with little hope.
There are several reasons:
1. The programming paradigm has not changed
Or the old three: process-oriented, object-oriented, functional.
Under the von Neumann architecture, I am afraid there will not be any new paradigms.
Now the top ten Mesozoic languages ranked by TIOBE perfectly cover these paradigms, such as Java, which supported object-oriented when it was first born, but later added the lesson of functional style.
Like Python, JavaScript has supported object-oriented and functional programming from the beginning.
2. Development areas
Development fields include desktop development, web development, system-level software development, back-end development, data analysis, artificial intelligence, etc.
The programming languages of the Mesozoic Era are not only rigid in these fields, but also expand each other and invade each other's territory.
The most typical one is the counterattack of JavaScript, a dick. At first, it was just a small language that lived in the browser. Later, through V8, Node.js actually entered the backend, and even used Electron to erode desktop development!
The same is true for Python. I originally used it to write some small tools and develop some small websites. Later, I got involved in the big money of artificial intelligence and developed from then on.
3. Ecosystem
Java, Python, JavaScript, C, C#, etc. After so many years of development, which one has not accumulated a large number of class libraries, which one does not have a huge ecosystem? If you want to move them, it is absolutely impossible without a revolution.
Even if the new language is good, but looking at so many existing codes, who would dare to switch easily?
4. The dividend of the times
Java met the Internet, Python met big data and AI, JavaScript met front-end development, and the opportunities of the times made them explode.
Go was lucky, encountered cloud computing, and rose strongly. It is quite difficult for the others to succeed.
I used to think pessimistically that all mainstream programming languages have been invented!
The new languages that appear in the future are all improvements and improvements, and there is no way to make a revolution.
To give an inappropriate analogy, C, Java, Python, JavaScript, C#, C++, PHP are like the current G7 in the West, firmly occupying the largest market, and as long as newcomers emerge, they will be ruthlessly attacked. hit. Just like China wants to make technological breakthroughs, but is being suppressed by the United States and the West by all means.
(Click the comic below to view details)
But it is not absolute, just like China must break through upwards, I see that in the field of system programming, there is also a rising star: Rust .
Although Rust did not invent new things, it has integrated the features of multiple languages and multiple programming generics. It not only includes the three programming paradigms mentioned above, but also integrates features such as generics, low-level memory management, and ownership. It is said to be a master (this is precisely the reason for its steep learning curve).
Rust is a modern system-level programming language that simultaneously pursues safety, concurrency, and performance, and is expected to challenge the status of the C language.
Of course, having fewer programming languages is a good thing for programmers. Programmers can learn less and lose a few hairs.
Finally, let’s talk about programming in the era of artificial intelligence. I saw an interesting metaphor in "Genius Programmer", saying that ordinary programming is like a well-behaved mechanical device. Walking through the world, walking along the route in the mind, everything has rules to follow.
But training a neural network is completely different. The relationship between the programmer and the program is more like the relationship between the gardener and the pastoral.
Why did the beans suddenly not grow? Why are tomatoes bad? Maybe the gardener changes the soil, maybe adjusts the distance between the crops, maybe moves the beans to a sunny spot, or uses less fertilizer? It worked! They are thriving again!
The growth of gardening skills depends on countless experiments and hard-won experience. Many novice gardeners plant their first crops that either don't grow well or die. But eventually, through trial and error (and learning from the experiences of their peers), gardeners accumulate more knowledge and develop unspoken intuitions about what works and what doesn't. At this time, if you take them to a new field, even if the soil and light conditions there are completely different, they can quickly figure out which crops are more suitable for growing there.
See, while programming skills are essential, the focus becomes gathering data, training, tweaking, and praying that the program works.
I don't know if this is the programmer's luck or misfortune?
Benefit time is here!
Free shipping to send 5 books
"The Way of Software Platform Architecture Design and Technology Management"!
The author is Wei Zhao, a 2002 graduate student majoring in software engineering at Tsinghua University.
This book takes the top-level design of complex platforms as clues. The author uses down-to-earth technical language and a relaxed narrative writing style to refine the experience of nearly 20 years of software platform technology work, sort out so many tips, and write a book to share with readers. . The content of the book is quoted from classics, idioms and proverbs are quoted in many places, and a lot of metaphors are used in writing, hoping to bring readers the feeling of the original ecological technical language and reflect the emotion and taste in the technical work of software platform.
Click the link below to participate in the lucky draw. Winners must fill in their contact address.