atitit.高級編程語言的特性 and 將來趨勢與進化.doc

atitit.高級編程語言的特性 and 將來趨勢與進化.docjava

 

1 編程語言的發展歷程 1python

1.1 編程語言的進化,起始發現背後的思想 :任何兩個系統之間的複雜性,均可以經過添加一個抽象層要屏蔽 1程序員

1.1.1 C語言, 硬件抽象層 2數據庫

1.1.2 高級語言:java,.net  跨平臺(os)抽象層vm 2編程

1.2 DSL領域編程語言(跨越編程語言) 2api

1.2.1 實現方式:: 語義 和 語法 分開 2安全

1.2.2 結構Dsl,dsl解釋器 2網絡

1.2.3 統一的開發語言 2閉包

1.2.4 每一個領域特性部分,使用類庫解決 2架構

2 語言特性發展 3

2.1 Oo+ 3

2.2 Function 3

2.3 動態(non編譯)仍是編譯?? 3

2.4 多核 3

2.5 強類型仍是弱類型???類型推斷和模式匹配 4

2.6 面向天然語言仍是簡單的?? 4

2.7 抽象能力 4

2.8 刪除語法噪音 4

2.8.1 語法噪音 4

2.9 強大ide,vm 5

2.10 Gc 垃圾收集 5

2.11 Vm 平臺化 5

2.12 數據與結構分離仍是緊密集合??? 5

2.13 異步api 5

2.14 安全api 5

2.15 庫與語法融合 6

2.16 . fluent API 流暢api 6

3 參考 6

 

1 編程語言的發展歷程

 

1.1 編程語言的進化,起始發現背後的思想 :任何兩個系統之間的複雜性,均可以經過添加一個抽象層要屏蔽

 

1.1.1 C語言, 硬件抽象層

對於彙編語言的問題,主要要解決跨硬件平臺,添加一個抽象層,這個就是硬件抽象層

 

1.1.2 高級語言:java,.net  跨平臺(os)抽象層vm

爲了解決C語言的跨平臺的問題

 

做者:: 老哇的爪子 Attilax 艾龍,  EMAIL:1466519819@qq.com

轉載請註明來源: http://blog.csdn.net/attilax

 

 

1.2 DSL領域編程語言(跨越編程語言)

 

1.2.1 實現方式:: 語義 和 語法 分開

 

而個的語言編程語言通常都是語法和語義綁定在一塊兒的

 

1.2.2 結構Dsl,dsl解釋器

 

 

1.2.3 統一的開發語言

如今愈來愈有這個趨勢了,各個語言都在添加其餘語言的特性,加強本身的特性,之後各個語言都變的愈來愈相似,功能也愈來愈雷同

 

1.2.4 每一個領域特性部分,使用類庫解決

或者二手的dsl??

 

 

 

 

2 語言特性發展

2.1 Oo+

2.2 Function

2.3 動態(non編譯)仍是編譯??

綜合考慮,工業級別的源碼保護的考慮哈,仍是要編譯,,yaneng跟個python雅十,共同的情形哈不編譯器,給客戶的時候兒編譯..

 

python雅十,經常使用使用script,,也能編譯了...

 

動態性意味着更加靈活,意味着開發者有更多的"魔術"能夠玩。而開發者會天生對動態語言有親暱地感受,這是人的本性。

可是凡動態語言,JavaScript、Python、Ruby這些,實際上已經意味着與地層開發無緣了。

同時靈活意味着少約束,少約束意味着大規模程序很難被編寫出來。到目前爲止,不多聽到過超過10萬行級別的JS語言項目,這樣的現象多少與JS的動態性有關。

反過來看,動態性較低的C語言如今成了驅動和OS內核開發的不二之選,由於好像驅動裏面根本用不着那些看上去NB的抽象——即便你用了C++,也是像C同樣用而已

 

2.4 多核

 

 

2.5 強類型仍是弱類型???類型推斷和模式匹配

 

以及ide支持不行。。

因此,綜合考慮,工業級別的  任然是強類型的天下。。也能夠強大的類型推斷和模式匹配

 

或者,語言支持弱的型,也能強壯的型…必要的的時候兒,能強類型

 

Scala是靜態類型的。許多人會把vals="ABC"這樣的看成動態類型特性,而vals:String="ABC"才認爲是靜態類型特性。實際上,這無關類型爭論,而是類型系統實現的範疇。是的,在Scala裏,你能夠放心大膽地使用vals="ABC",而Scala裏強大的類型推斷和模式匹配,絕對會讓你愛不釋手。

 

 

2.6 面向天然語言仍是簡單的??

Cobol,ada的強壯的理解性普通的的人們能理解的..

大部分情形哈,仍是簡單的特性ok而個的java取代了cobol,ada..

 

2.7 抽象能力

抽象能力應該是現階段語言進化的第一優先級,抽象手段無非函數式、過程式和麪向對象三種,看計算機語言的流行歷史, 不難看出 函數式=>過程式=>面向對象=>函數式迴歸 這樣的規律。Lisp一直在學術界評價頗高,可是其商業應用一直低迷,其抽象能力比較弱一直是個重要的緣由。

 

2.8 刪除語法噪音

2.8.1 語法噪音

語言除了功能和設計,「長相」也是很重要的。這裏要提到一個語法噪音的概念,好比JS裏面的function,相比lambda表達式,這個噪音就多了

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

而C#裏面能夠這麼寫:

arr.some(x=>x<2);

這裏面,function關鍵字,return關鍵字,各類符號,其實實際意義都不大,由於JS語法設計,而必需要加上,這就是一種噪音。

有趣的是,向python這樣的語言對於「去噪」的追求達到了極致,甚至不惜用空白作標誌幹掉花括號,這個作法致使了其譭譽參半,喜歡的人特別喜歡,不喜歡的人特別討厭。

 

2.9 強大ide,vm

2.10 Gc 垃圾收集

目前許多語言均可以自動垃圾收集。。可是隻是內存。。

數據庫,網絡,以及磁盤io鏈接任然有泄露的可能。。

 

 

2.11 Vm 平臺化

 

2.12 數據與結構分離仍是緊密集合???

 

儘量的分離爲好。

 

程序和數據也不該該被分開。由於現代數據操做和模塊化的基礎是並行程序(parallelism),而有效實現並行的基礎是程序的first-class表達,也就是把程序做爲一種基本數據類型。

2.13 異步api

 

2.14 安全api

 

閉包、多個返回值

2.15 庫與語法融合

 

庫與語法融合在了一塊兒。咱們能夠看到在Java中對字符串String對象的操做能夠簡單地使用操做符+、+=進行操做。然而String自己並非關鍵 字,可是可被編譯器識別。由於你換成其它對象可能就沒法用這些操做符來進行操做了。而對String類的實現自己可用一個用Java編寫的相對獨立的庫進 行實現。

 

其實將語法體系與語言自帶標準庫綁定仍是有很多好處的。首先,這容易被擴展,開發者能夠根據本身的需求來自定義某些語法的行爲。其次,對編譯器而言能夠減 輕壓力。某些運行時行爲能夠交給標準庫進行實現。這樣,編程語言能夠比較方便地被打形成比較完備的語法體系。這種耦合也加強了編程語言的運行時能力,包括 靈活性、可擴展性。

 

2.16 . fluent API 流暢api

偏向傻瓜式的編程,直接用IDE的代碼輔助就能把代碼敲出來。java那種展示精美的架構的同時,卻要求程序員本身一塊塊磚搭起來的風格逐漸沒落...

 

 

 

3 參考

atitit.編程語言的將來趨勢與進化結果

Atitit.現代高級語言的特性以及趨勢attilax總結

相關文章
相關標籤/搜索