Atitit. Features and future trends and evolution of advanced programming languages. doc

Source: Internet
Author: User

Atitit. Features and future trends and evolution of advanced programming Languages . Doc

1 development History of programming languages 1

1.1 The evolution of programming languages, the idea behind the beginning of discovery: Any complexity between two systems can be masked by adding an abstraction Layer 1

1.1.1 C language , hardware abstraction Layer 2

1.1.2 Advanced Language:java,.net cross-platform (OS) abstraction Layer VM 2

1.2 DSL Domain programming language (spanning programming language) 2

1.2.1 Implementation:: Semantics and syntax separate 2

1.2.2 Structure DSL,DSL interpreter 2

1.2.3 Unified Development Language 2

1.2.4 each domain feature section, Use the class library to solve 2

2 Language Features Development 3

2.1 oo+ 3

2.2 Function 3

2.3 Dynamic (non compilation) or compile?? 3

2.4 Multi-Core 3

2.5 Strong type or weak type??? Type inference and pattern matching 4

2.6 for natural language or simple ?? 4

2.7 Abstract Ability 4

2.8 Delete Syntax Noise 4

2.8.1 Grammatical Noise 4

2.9 Powerful IDE,VM 5

2.10 Gc Garbage collection 5

2.11 Vm Platform 5

2.12 data and structure separation or close collection??? 5

2.13 Asynchronous API 5

2.14 Security API 5

2.15 Library and Syntax Fusion 6

2.16. Fluent API: Fluent API 6

3 Reference 6

1 development History of programming languages

1.1 The evolution of programming languages, the idea behind the beginning of discovery: Any complexity between two systems can be masked by adding an abstraction layer

1.1.1C Language ,Hardware Abstraction Layer

For the assembly language problem, mainly to solve the cross-hardware platform, add an abstraction layer, this is the hardware abstraction layer

1.1.2Advanced Language:java,.net   Cross-platform (OS) Abstraction Layer VMS

To solve the cross-platform problem of C language

Author:: Old Wow's paw attilax Ayron, email:[email protected]

Reprint please indicate source: Http://blog.csdn.net/attilax

1.2DSL Domain programming language (spanning programming languages)

1.2.1Implementation Method::Semantic and syntactic separation

and one of the languages programming languages are generally syntactically and semantically bound together.

1.2.2 Structure DSL,DSLInterpreter

1.2.3 Unified language for development

Now more and more this trend, each language is adding the characteristics of other languages, enhance their own features, the later languages are becoming more and more similar, the function is more and more identical

1.2.4 each domain feature section,using class libraries to resolve

Or a second-hand DSL??

2 language Features Development 2.1 oo+2.2 Function2.3 Dynamic (Noncompile) or compile??

Comprehensive consideration, the industrial level of source protection considerations ha , or to compile , Yaneng with a python Jas 10 , Common situation ha not compiler , to the client when the child compiled .

Python 10 , commonly used in script , can also compile ...

Dynamic means more flexibility, meaning developers have more "magic" to play. And developers will naturally have a sense of intimacy with dynamic language, which is human nature.

But where dynamic languages, JavaScript, Python, and Ruby are, in fact, have been meant to be out of the development of formations.

While flexibility means less restraint, less restraint means that large-scale programs are difficult to write. So far, it is very rare to hear more than 100,000 line-level JS language projects, which is somewhat related to the dynamic nature of JS.

Conversely, the low-dynamic C language is now the perfect choice for driver and OS kernel development, because it seems like the driver doesn't need the abstractions that look like NB--even if you use C + +, it's the same as C.

2.4 Multi-core

2.5 Strong type or weak type???type inference and pattern matching

and IDE Support No.

Therefore, comprehensive consideration, industrial level is still a strong type of the world. can also be powerful for type inference and pattern matching

Or , the language supports the weak type , can also be strong type ... When necessary , can be strong type ...

Scala is a static type. Many people will consider vals= "ABC" as a dynamic type feature, while vals:string= "ABC" is considered a static type feature. In fact, this is not the type of argument, but the category of type system implementation. Yes, in Scala, you can confidently use the vals= "ABC", and Scala's powerful type inference and pattern matching will definitely put you down.

2.6 for natural language or simple??

Cobol,ada 's strong understanding ... ordinary people can understand. ..

In most cases , it 's still a simple feature OK... and a Java replaces the Cobol,ada .

2.7 Abstract Capabilities

Abstract ability should be the first priority of language evolution at this stage, abstract means nothing but functional, process and object-oriented three, look at the popular history of computer language, it is not difficult to see the function of the formula = = Process-oriented object and function regression such law. Lisp has always been highly valued in academia, but its commercial applications have been depressed, and its abstract ability has been an important reason.

2.8 Delete Syntax noise 2.8.1 syntax noise

In addition to the function and design of language, "looks" is also very important. Here to mention a concept of grammatical noise, such as JS inside the function, compared to the lambda expression, this noise is more

Arr.some (function (x) {return x<2});

and C # can be written like this:

Arr.some (X=>X<2);

In this, the function keyword, return keyword, all kinds of symbols, in fact, the actual significance is not big, because JS grammar design, and must add, this is a kind of noise.

Interestingly, to the language of Python to "de-noising" pursuit reached the extreme, even at the blank mark to kill curly braces, this practice led to its mixed, like people especially like, not like people particularly annoying.

2.9 Powerful ide,vm2.10 GcGarbage Collection

Currently, many languages can be automatically garbage collected. But it's just memory.

The database, network, and disk io connections still have the potential to leak.

2.11 VMSplatform-based

2.12 data and structure separation or close collection???

As good as possible separation.

Programs and data should not be separated. Because modern data manipulation and modularization is based on parallel programs (parallelism), and the basis of the effective implementation of parallelism is the first-class expression of the program, that is, the program as a basic data type.

2.13 AsyncAPI

2.14 SafeAPI

Closures, multiple return values

2.15 Library and Grammar fusion

The library and grammar are fused together. We can see that the manipulation of string objects in Java can be done simply by using the operator + + + +. However, the string itself is not a keyword, but it can be recognized by the compiler. You may not be able to manipulate these operators because you are replacing them with other objects. The implementation of the string class itself can be implemented using a relatively independent library written in Java.

In fact, the grammar system and language from the standard library binding still has a lot of advantages. First, this is easy to expand, and developers can customize some of the syntax behavior according to their needs. Second, the compiler can reduce the pressure. Some run-time behavior can be passed to the standard library for implementation. In this way, the programming language can be easily played into a relatively complete grammar system. This coupling also enhances the runtime capabilities of the programming language, including flexibility and scalability.

2.16. Fluent API:SmoothAPI

Favor the Fool-type programming, directly with the IDE's code assistance can knock out the code. The Java kind of beautiful architecture, but also requires the programmer's own piece of brick style gradually decline ...

3 references

Atitit. future trends and evolutionary results of programming languages

Atitit. characteristics and trends of modern high-level languages Attilax Summary

Atitit. Features and future trends and evolution of advanced programming languages. doc

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.