What significant progress has been made in the field of programming languages over the past ten years

Source: Internet
Author: User
Tags virtual environment

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:

    • Reduced code volume;

    • Speed up development;

    • Highly decoupled;

    • Easy to locate bug, small change effect;

    • Writing unit tests is easy.

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.

    • CSS has Bootstrap, fundation and so on;

    • PHP has Laravel, CakePHP and so on;

    • C # has MVC;

    • Java has spring+hibernate+struts.

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.

    • Code style check;

    • Industrial standard inspection;

    • Code collation;

    • Code complexity check;

    • Unit test coverage check;

    • Dependency management;

    • Compression code;

    • 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 node. js, lays the JavaScript out of the browser and goes to the server side;

    • The advent of NW and the official release of Electron, JavaScript went to the desktop;

    • 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:

    • After PHP 5.0 support the class, 5.4 after supporting the trait,5.5 after support for the generator (Generator);

    • JavaScript ES 6 supports arrow anonymous functions, generators (Generator), classes (not Prototype classes);

    • C # and Java learn from each other;

    • Coffee Script draws on Python and Ruby.

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.

    • Grammar checking, JavaScript jshint is a JavaScript interpreter that is re-interpreted by JavaScript to notify programmers of possible problems, and programmers can modify to avoid potential errors.

    • 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.

    • A syntax-scrambling device is a form of code rewriting that makes it impossible to read and protect code.

    • A grammar-collation, a form of code re-converts code that cannot be read into readable code, such as Beautifier.

    • Syntax highlighting, commonly used in code editors and code display components.

    • 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:

    • The structure conforms to the programmer reading habit;

    • File size is relatively small;

    • JavaScript can be used directly;

    • 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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.