If you take out the top ten of the current Tiobe programming language leaderboard and compare it to the top ten ten years ago, you'll find that the two lists are exactly the same!
The only difference is that visual Basic, PHP, and Perl exchange positions with the ten most popular but more modern C #, Python, and JavaScript. Objective-c has been in the top ten popular languages for ten years, and even climbed to the top three, but it quickly disappeared after Apple announced that it would replace objective-c with Swift.
Based on these conditions, we can conclude that there is no substantial change in programming language and that there will be no new large programming languages for the next decade.
Programming language Leaderboard August 2016 TOP 20 list
The real change in programming language, however, is that in order to survive, the top ten popular programming languages have borrowed from the capabilities of other languages and introduced them as new features. Because the code base of the top ten popular languages is huge, users prefer to implement changes in the language rather than swapping the new programming language. The programming language kernel is original aim. My personal view is that the following changes are more obvious
Language itself
Industry standard
Web standards, especially browser development, all mainstream browsers will consciously conform to the organization's standards, of course, these developers themselves are members of the organization. So the new HTML5, CSS3, ES6 JavaScript new features have been smoothly promoted, so that most mainstream browsers support it, the success of the Internet.
PHP has phpfig organizations, although not mandatory, but many new frameworks and libraries are consciously adhering to the organization's programming standards.
The Java and C languages have their own industry standard guidelines to maintain their industry standards.
Industry standards are not mandatory, although many programmers do not comply with these industrial standards in their own work, but to introduce new modules, do not comply with these industrial standards of the module, is no one to use. Today, is not the standard-oriented programming, this is to embody a programmer whether professional, a module is not a professional module an important indicator.
Third-party module popularity
The frameworks and libraries of various languages may be more famous than their own languages, such as CSS Bootstrap, JavaScript jQuery, a good framework and library can even promote the development of the language, such as the PHP Laravel framework, JavaScript Jquer Y.
The development of modularization has greatly accelerated the development speed. Many people are also willing to develop a variety of frameworks and modules, not only can exercise their own development skills, but also a display of their ability.
In the past, programmers to fame, to develop useful software, such as seeking Baijun open out WPS, cattle, Zhang Xiaolong opened Foxmail, cattle.
Now, programmers are going to be famous and can develop a framework and modules that everyone will use. For example, Evan you developed the Vue.js, Yuber developed by Seajs.
Modular programming and Dependency management
More than 2010 years ago, relying on management tools was a very fashionable concept, and everyone was accustomed to the library's official website to download the library and manually import it into the project. Upgrading is also more troublesome. So, programmers generally download one or two necessary libraries, and the other libraries are written by themselves.
Now, rely on the management tool is necessary, we no longer manually import the library, can find the function of the third-party module, no longer write their own, all with the tools to import the project, the code of their own programming, can be modular code is modular, even independent, open source, Then use the Dependency management tool for Administration to import into your own project.
The advantages of doing so are obvious:
Now we are more willing to write small modules than to reinvent the wheel.
Framework uses
It is now common to choose a suitable framework before you start programming, not all of which are written entirely from scratch.
There are many frameworks for JavaScript, such as Vue, React, Backbone, AngularJs, etc.
The frame should be selected first and the module will be added slowly when needed.
Test code
2006, Unit Test in the development process, the importance is not very big, dispensable, as long as the program is completed, the function can be used on the line.
Today's code, if there is no unit test part, this project can not be completed. Even, test-driven development has become mainstream, writing test code First and then developing it.
The development of the test code is not just part of the unit test. Unit testing, integration testing, functional testing, performance testing, stress testing, etc., all take an important place in the development process. Previous tests were performed manually by a dedicated tester, or they were responsible for testing, and now both unit and integration tests are written by the developer themselves.
Cross-device, cross-platform
Java proposed cross-platform, a compilation of running around the dream, in fact, has not been very well implemented. However, today's cross-device, cross-platform programming trends are becoming increasingly apparent.
Cross-device, mainly refers to cross-desktop and mobile phones, especially for the display of best practices are emerging, now the response to become mainstream.
Cross-platform, a concept derived from Java, now popular, desktop, mobile phones, servers, browsers, embedded can see the figure of JavaScript, which is greatly attributed to the popularization of JavaScript standardization. Cross-platform used to refer to a compilation run everywhere, now means that the platform supports this language or standard, it can be used. Today's cross-platform programming, more features check this feature, if your platform does not have this feature, then turn off the feature check function, but other features can continue to use.
In the future, a variety of equipment, VR helmet, AR glasses, giant screen, the internet of Things, the cross-platform will have further development.
Engineering aspects
Tools
Programming language instrumentation is now very prominent, and what the tools can accomplish is absolutely not done by hand. Tools can be found in the following areas to help developers manage code quality.
Repeat code checking;
Useless code check.
Engineered
Engineering is the most prominent trend in recent years, the past is only selective, and now it is necessary. Engineering is based on tools, there is no tool, then engineering can not talk about. The core of the project is process automation, also known as build, which includes: Code quality detection, code compression, code merging, code optimization, code compilation, unit testing and so on. Build is to combine these parts in a workflow way, and then run the entire process with a single command line. It's a bit like batching, but it's a special batch used in program development.
Web programming is now popular "real-time programming", that is, when you save the code, the above construction process will automatically refresh the browser after the work, to ensure that the new code effect is immediately reflected in the browser. Now, looking for software in the GitHub Project library, first look at whether there is a project file and see what its build process is, and know the professionalism and quality of the project. If you do not configure an engineered process system, you are embarrassed to say that you are doing software engineering.
Automation
Automation is the basis of engineering, engineering itself is a process automation, and automation in the process of engineering further automation.
Continuous integration is the ultimate embodiment of automation, the main process is: Version Control Library-build-test-report. Continuous integration is a bit like a timed task for Windows, but it is a dedicated scheduled task for program development.
Continuous integration is characterized by automatic, a project once configured, the requirements are not changed, and then the developer constantly add code to the version control Library, and whenever the library has new code, the continuous integration will download the code to build, when it finished building and testing, if the test did not pass, The report is returned, and the code is modified based on the report results.
So every time you add new code to the repository, continuous integration will automatically help you build and test your code and notify the code as quickly as possible. In this way, programmers can focus more on writing functional code and testing code without worrying about whether the new code will affect past code.
Continuous integration is more useful when multiple people are developing together, and whoever uploads the code does not pass the test and can immediately know. This ensures that the code for multi-person projects is successfully merged, reflecting the "continuous integration" effect.
There is also a continuous deployment, in fact, continuous integration in the successful testing after the deployment of the product server process. Today, some sites are deployed dozens of times a day, and with continuous deployment, there is no pressure on how many times they will be deployed.
The relationship between tooling, engineering and automation is very interesting, the former is the foundation of the latter, and then the development of the former is greatly promoted. They play a positive role in each other and push each other's development, which forms a good virtuous circle.
Other aspects
Version control, Git, GitHub
The position of version control in the programming world is becoming more and more important. There is a saying in the programming world that no version-controlled project is equal to the project.
Version-controlled tools used to have SVN, which is now Git. Git is powerful, and more and more people are using it, and GitHub has a positive impact and a positive push on the programming community, which is something to be reckoned with. For example, almost all library download sources that rely on management tools are tied to GitHub, and on this point, the importance of GitHub is immeasurable in the IT world.
GitHub and Git's easy-to-manage, upload, view, statistics, bug reports and other functions have greatly facilitated the collaboration between programmers, and the open source on GitHub has changed the impact of open source software on the world.
GitHub is not all git, and git is not all version-controlled. In essence, GitHub is just a website; but GitHub is really an indispensable module in the programming world, and has become an integral part of it. Even GitHub has jumped out of the programming world to become an indispensable service platform.
However GitHub was established in 2008, and the real start-up was in 2012 years. In 2015, Google announced that it would close its Google Code, showing the impact of GitHub and how important it is in the industry.
Awareness of the Ecological circle
Ecological awareness in the industry is more and more strong, it should be programming with the tool and engineering has a great relationship. When a language, framework, or library emerges, people apply them, not just because they are strong, but because of the ecology behind them.
For example, the choice of a JavaScript frame is to choose React or ember.js, and more to see how the biosphere supports them. React is supported by Facebook, with many programmers developing tools and libraries for it, as well as a lot of documentation tutorials, so that the React ecosystem will be large enough to allow more people to choose React as the first development framework. And Ember.js is relatively small, the people who choose it may not be a lot.
The choice of language is the same. Choose JavaScript to write crawlers, or PHP or Python? More of them are looking at their ecosystems, Python's crawlers are powerful and rich, so more people use Python to write crawlers.
Whether a new language is mature or not is its ecological circle, such as whether there is a test framework, an MVC framework, a mature time library, a database SDK, etc.
Desktop of WEB technology and full stack of JavaScript
JavaScript has evolved in recent years, confirming the Atwood law: What can be achieved with JavaScript will eventually be implemented in JavaScript.
The advent of MongoDB, JavaScript went to the database;
Tessel the advent of the hardware and the Internet of things.
Today, a full stack system, from the front-end to the database, can be fully used in JavaScript in one language. There are also many people who are working to push JavaScript into more areas.
Web Technology (HTML+CSS+JAVASCRIPT) has been able to write desktop programs due to the advent of NW and Electron. It is because of the excellent module JS, as well as the Html+css interface is easy to write and control, error-correcting tools, many people are willing to use web technology for development. Now compare fire desktop tools with Vs-code editor and Atom editor.
Because of the convenience of web technology, Web technology involves more and more fields, and is not the patent of the browser.
The full development of WEB APIs
Although the Web API has a long history, it is the Twitter that really makes it popular, and the popularity of mobile devices makes it much more development and popular. Mobile devices do not work if they do not have a Web API. The popularity of Web APIs also makes network services interconnected, forming a larger service network. In short, today's Web API is already indispensable.
The Web API is more of a service, or a data exchange pattern. As long as the language with the HTTP network access features, it can be used. A company that provides Web APIs, after publishing the Web API, will generally publish the SDK for common languages at the same time, allowing language developers to get started quickly, but if the language is relatively small, it doesn't matter if the SDK is available, write an HTTP request, or exchange data.
From a programmatic point of view, the Web API features are:
Easy to write, is a function, no interface;
Language independence, regardless of the Web API is written in which language, almost any language can be called;
Access is good, as long as the network can access the Web API can be used.
The mutual reference between languages
The mutual reference between languages is becoming more and more obvious, for example:
Rather than learn from each other, as the development of language, some language concepts gradually become standard, if not, it is not a complete language, such as classes, anonymous functions, commonly used data structures have become standard.
The tool of Language parser
The language parser (Parser) existed in the past as part of the compiler. Today, it has been used independently as a module or as a tool. This has great significance to the ecology of language, and promotes the good development of the language ecology circle.
A standalone parser that can be used to write the following and language-related tools that are used to optimize code quality and improve the coding experience.
Code minimization, a form of code rewriting, a JavaScript minimization project (such as Urglify), is to minimize compression after reading the syntax correctly. Convert the word variable to a single-letter variable, even if else to the?: Form.
The code parser scans the available code sections to list code-related data, such as how many classes, how many objects, how many variables, how many global variables, and so on.
Code cleaner, parser enhancement, cleanup of unused variables, unused objects, unused functions, etc.
Auto-complete, some Ides can analyze the existing changes and functions, and later in the continuous typing can be done intelligently and automatically.
Code tracking, such as a piece of code has been executed several times, the program error when the function is executed, the test program code coverage, and so on.
Virtual execution, where JavaScript code executes within a protected area or environment, the code can return a value, but it cannot affect code execution within a non-virtualized environment. For example, there is a global variable in the code, but the global variable is not in the virtual environment but in a non-virtual environment.
The development of data exchange language
The development of data exchange language, in general, is the process of developing from XML mainstream to JSON mainstream. Although XML is now widely used, it is gradually replaced by lightweight JSON because of its complexity and the large footprint of its tags. In addition, JSON is naturally compatible with JavaScript without parsing and direct use, so JSON is preferred in many network technologies.
Many of the configuration files are now also implemented in JSON, such as Composer and node configuration files.
JSON reading style more in line with the programmer's reading habits, formatted structure at a glance, easy to understand.
JSON has the following advantages:
In a non-JavaScript footstep language, it is easier to transform into a data structure;
The learning curve is very short.
For these reasons, it can be said that in the programming world, the use of JSON as a data exchange language is a general trend.
Summarize
The above-mentioned phenomena and trends, in fact, are mutually reinforcing, the final line has become a virtuous circle. These phenomena and trends will continue to evolve and form the basis for new trends in the future. These characteristics are very important and should be the knowledge that every programmer should know.
Some suggestions
When I was in the programming profession, the university did not teach this knowledge, even in the work also did not understand the trend request. The main university to write code, can be compiled through, the correct results can be. Programmers in the work, require code to use, no obvious bug on the line.
However, in my personal work practice, gradually realize the importance of these trends, writing maintainable high-quality code can greatly reduce their maintenance in the difficulty and pressure . Every person who prepares or wants to be a qualified developer should be proficient in these knowledge and skills , and if the university has not taught it and has not thought about it before, be sure to find a way to learn and improve it.
What significant progress has been made in the field of programming languages over the past ten years