Do we really need so many new programming languages? There is no doubt that the choices currently being made by developers are quite rich. command-type languages, functional languages, object-oriented languages, dynamic languages, compiled language interpretive languages, and scripting languages and so on seem to have completely covered all the tasks we might face, and few professionals today have been able to understand all the languages.
However, new languages are still springing up at an alarming rate. Some are designed by students or enthusiasts in the form of personal projects, others from large it vendors. Even small and medium enterprises are unwilling to be weak and actively develop service terminology for the needs of their industries. Why are people so keen on this repetitive work?
The answer is simple, although the language at hand is already quite powerful in terms of functionality and versatility, there is still no single grammatical rule that can best cater to any real need. More importantly, the programming behavior itself is in constant development and change. The rise of multi-core CPUs, the warming of cloud computing, high mobility and distributed architecture have all brought new technical challenges to developers. Adding the latest features, paradigms, and patterns to existing languages-especially the current language-can be more difficult than impossible. Sometimes it's the best solution to get a new set of languages straight.
So here, I'm going to take you through 10 kinds of programming languages that are in the forefront of the industry, each of which interprets the artistry of software development from a new perspective, solves specific problems with different characteristics, or makes up for the unique flaws of the current mainstream language. Some of them are already quite mature projects, while others are in the early stages of their own development. Some may be unfamiliar and obscure to everyone, but there is no doubt that they are likely to revolutionize the development industry in the future and revolutionize the development of programming tools in the years ahead--at least until the next generation of languages are available.
Experimental programming language first: Dart
JavaScript is pile to add basic interactivity to Web pages, but when Web applications reach thousands of of lines of code, the language's limitations are exposed. That is why Google launched Dart, a language that carries the ambition of Google to bring new standards to web programming.
Like JavaScript, Dart uses syntax and keywords similar to the C language. The most striking difference between dart and JavaScript, however, is that objects in the former explicitly point to classes and interfaces, which are quite similar to C + + and Java. Dart also allows programmers to selectively declare variables using a static type. Looking back at the designers ' ideas, they should have wanted dart to be as easy to learn, dynamic and smooth as JavaScript, so that developers would be able to spend less time writing code, and product maintenance would be more convenient, At the same time, the impact of small errors will be minimized.
We can't use dart to solve too many practical problems at the moment. The idea is to have the language run on both the client and the server (similar to node.js), but now the only way to get Dart code to run on the client is to convert it to JavaScript by compiling it. It doesn't even work correctly for every browser. But since Dart is being released as a BSD Open-source license, any vendor that buys a Google version can build it on its own. The only thing Google needs to do is convince the industry to accept a newborn in the programming field.
Experimental programming language second place: Ceylon
Gavin King does not admit that Ceylon, the language he created in Red Hat, bears the historical mission of "the Java Terminator". One of the most dazzling pages of King's experience is the praise he has earned as the creator of the Hibernate--java Object Relationship mapping framework. He likes Java, but he still thinks there's a lot of room for improvement in Java.
King's complaints about Java are focused on lengthy grammatical structures, which lack level-and high-end functionality and support for metaprogramming is fairly weak. Even more frustrating is the lack of declarative syntax for structured data definitions in Java, which in his words makes Java "inseparable from XML." "Ceylon's goal is to solve the above difficult diseases.
King and his team do not intend to start entirely from scratch. Ceylon virtual machines do not appear, and such features convert content to Java byte code through the Ceylon compiler, which runs in the JVM. But Ceylon never stops at a compiler. One of the big ambitions of the project is to create a new Ceylon SDK system to replace the Java SDK, citing King's assessment of the latter-bloated, clumsy, and never "properly adjusted to the times." ”
This is a daunting task, as Red Hat has not yet released any of its Ceylon tools. King says he expects to see a compiler in the year, but won't expect "100% Ceylon" software to come out in a short time.
Experimental programming language third place: go
Interpreters, virtual machines, and managed code are now rage. Do we really need another old language for compiling target content into local binaries? The team from Google's engineering team--the legendary figure at Robert Griesemer and Bell Labs, Ken Thompson, and Rob Pike--gave a positive answer.
Go is a general-purpose programming language and applies to a variety of job requirements, from application development to system programming. In this sense, it is closer to C or C + + than Java or C #. But like the latter, the go includes a variety of modern features, including garbage collection, run-time mapping, and support for parallelism.
Equally important, go is designed to reduce programming difficulty. Its basic syntax is very similar to C language, but eliminates redundant syntax and boilerplate files, while simplifying the operation of common functions such as object definitions. The goal of the Go Project team is to create a language that has the same kind of code as a dynamic scripting language and to provide powerful functionality like a compiled language.
Go is still in the process of being created, and its language specification may still be changed. That is to say, we can now start to try to use it. Google has created a corresponding tool and compiler for it, and the documentation is also quite rich; for example, the effective go tutorial is a good starting point for everyone to learn about the difference between went and other early languages.
Experimental programming language-fourth: F #
Functional programming has been popular with both computer scientists and academia, but purely functional languages such as Lisp and Haskell are often thought to be impossible to use for software development in practical applications. For functional code, the most common complaint is that they are difficult to integrate with the library by code written in command languages such as C + + and Java.
Speaking of F # (pronounced "f=sharp"), this Microsoft-launched language is designed to be both functional and practical. Because F # is a primary language in the. NET common language runtime (CLR), it has access to all of the same libraries and features in other CLR languages, including C # and Visual Basic.
F # code is somewhat similar to OCaml, but it also has quite a few interesting features. For example, digital data in F # can be assigned to a unit of measurement, which in turn serves the scientific class. F # also provides the necessary theoretical support for functions such as asynchronous I/O, CPU parallelism, and GPU load sharing.
After a long gestation period in the Microsoft Research Center, F # is now finally available with visual Studio 20,101. Even better, Microsoft this time out of the common sense of the card, the F # compiler and code library through the Apache Open Source license in front of us, you can not only use this language, but also to introduce it to the Mac and Linux system (through the mono running tool).
(Responsible editor: The good of the Legacy)