一躏尉、我所知道的Java
轉(zhuǎn)眼間,我們的CAFEBABE都誕生20年了后众。
最開始接觸Java胀糜,當時應該是1.5版本颅拦,不過最開始并沒有用到1.5的泛型、scanner等新特性教藻;后來距帅,用過一陣子1.6;再到后來括堤,就工作了碌秸,用1.7;然后悄窃,陸續(xù)有的小組要采用1.8了讥电;然后最近剛剛發(fā)布JDK9的新特性(javac將不兼容1.5版本),預計16年發(fā)布轧抗。
比較重大的版本恩敌,應該是1.4加入的nio,1.5的泛型横媚,1.7的nio2潮剪,G1,script engine分唾,1.8的閉包(lamda表達式)
Java發(fā)展抗碰,從設(shè)計上來講,最大的精明之處就是將java語言的規(guī)范和jvm的規(guī)范分開绽乔,jvm是一個平臺弧蝇,一個大森林,森林里頭折砸,活躍著諸多漂亮的小精靈看疗,JRuby,Groovy睦授,Scala两芳,Clojure...
從Java7->Java8,在java上新增函數(shù)式編程(可以視為java老大哥自身擁抱函數(shù)式編程的改變)去枷,以及JVM上的函數(shù)式語言Scala怖辆,Clojure(函數(shù)式家族與CAFEBABE聯(lián)姻),或許你大概知道這里要說的新世界就是函數(shù)式編程删顶。
二竖螃、面向?qū)ο笳Z言的產(chǎn)生
如果我說是電腦操作的圖形化直接導致或催生了面向?qū)ο笳Z言的誕生,或許你可能不信逗余。當apple正在緊鑼密鼓開發(fā)圖形化的Macintosh特咆,微軟也推出圖形化的Windows,操作系統(tǒng)從終端過渡到了圖形界面录粱,電腦逐漸普及腻格,用戶消費能力逐步提高画拾,在圖形化操作系統(tǒng)上開發(fā)圖形化的軟件的需求也就越來越強烈,而這個時候菜职,面向過程語言青抛,就顯得有點力不從心。聰明的程序員說些楣,我想要抽象出一個按鈕脂凶,可以點擊,可以響應事件愁茁,可以有很多風格蚕钦,這樣以后我每次開發(fā)的時候,直接復用就可以了鹅很。于是就有了誕生面向?qū)ο笳Z言的需求了嘶居。
說起C/S開發(fā),說起RAD開發(fā)促煮,不得不提起曾經(jīng)如日中天的Borland公司邮屁,以及紅極一時的Delphi語言。Dephi當年一登場菠齿,便獲得VB殺手的江湖名號佑吝,憑借“真正的程序員用c,聰明的程序員用Delphi”這句話也名滿江湖绳匀,搞得微軟的VB老大哥壓力山大芋忿,后來也為兩家公司之爭埋下了伏筆,即使到現(xiàn)在各種編程語言滿地開發(fā)的世界里頭疾棵,Dephi及其老祖Pascal還是雙雙雄踞在TIOBE排行榜的前20戈钢,依舊寶刀未老。
說起B(yǎng)orland公司曾經(jīng)的輝煌是尔,世界第三大軟件公司殉了,高品質(zhì)軟件開發(fā)工具的霸主,到后來與微軟競爭不利拟枚,失去霸主地位薪铜,后來被Micro Focus收購......想起來真有種“滾滾長江東逝水,浪花淘盡英雄梨州,是非成敗轉(zhuǎn)頭空”的感傷(具體可以看李維的Borland傳奇痕囱,我相信很多程序員都讀過)。曾經(jīng)的SUN不也是如此嗎暴匠,不過相比而言,Java比Delphi還好一些傻粘,Oracle至少還延續(xù)了Java“霸主”的地位每窖。
不過帮掉,雖然Borland落寞了,Borland的寶貴資產(chǎn)并沒有消失窒典,Bill Gates雖然打贏了與Borland的開發(fā)工具之戰(zhàn)蟆炊,但同時求賢若渴的Gates,早就盯上了Turbo Pascal以及Delphi的設(shè)計者開發(fā)者瀑志,天才程序員Anders Hejlsberg涩搓,當時BillGates親自開車去找Anders Hejlsberg。當時BillGates想起了1983年喬布斯對百事可樂的 CEO John Sculley說的流傳千古的一句話:Do you want to sell sugar water for the rest of your life, or do you want to change the world劈猪?也想慷慨激揚一番昧甘,但是換成這里,場景還是不合適啊战得,BillGates頓時詞窮充边,還是落了個俗套,畢竟有錢能使鬼推磨啊常侦,開天價500萬美金的年薪浇冰,請Anders Hejlsberg過去,Anders Hejlsberg心里略微有所動聋亡,但是面不露色肘习,BillGates見狀,忙問Anders Hejlsberg還有什么要求坡倔,Anders Hejlsberg便開口漂佩,我要一個完全由我支配的團隊。BillGates頓時頓足捶胸致讥,這好說啊仅仆,早不說呢。就這樣垢袱,Anders Hejlsberg正式入駐微軟墓拜,后來開啟了C#從2000年至今的輝煌時代,時至如今请契,如果不是由于微軟平臺的緣故咳榜,估計C#將更加大放光彩,即使是現(xiàn)在爽锥,C#也比大它5歲的Java老兄要高級很多涌韩,比如真正的泛型,比如async......
Anders Hejlsberg早在設(shè)計Dephi語言的時候氯夷,就有想過要引入垃圾收集器臣樱,不過當時Borland老板不同意,覺得當時市場競爭激烈,還不是時候搞這種底層研究的時候雇毫,Anders Hejlsberg無奈放棄了玄捕,后來BillGates拋出橄欖枝,Anders Hejlsberg提出了要有一支完全由他支配的團隊的要求棚放,正是源于此枚粘,有了老板的放權(quán),Anders Hejlsberg就可以放手大干一番飘蚯。
講了這么多馍迄,還是要順帶講下Pascal老祖,及其子孫的局骤。
從圖中來看攀圈,C#是有Pascal的基因的,同時也借鑒了Java老大哥的一些設(shè)計庄涡。
當然這里不是要講C#量承,而是老祖Pascal,它由瑞士Niklaus Wirth教授在60年代設(shè)計的穴店,我相信撕捍,學過譚自強的C語言的人,大多都會記得“程序=算法+數(shù)據(jù)結(jié)構(gòu)”(Algorithm+Data Structures=Programs)這句江湖名言泣洞,沒錯忧风,這句話正出自老祖Pascal語言的設(shè)計者——Niklaus Wirth。正是憑借這句話及其他杰出貢獻球凰,Niklaus Wirth從此奠定了江湖地位狮腿,同時獲得了計算機界的諾貝爾獎——圖靈獎。
如果你細看Niklaus Wirth的簡歷呕诉,會發(fā)現(xiàn)缘厢,他的母校正是蘇黎世聯(lián)邦理工學院,再想想當今預借屠龍寶刀Spark去奪取天下的Scala的發(fā)明者Martin Odersky甩挫,當年正是蘇黎世聯(lián)邦理工學院師從Niklaus Wirth贴硫。在攻讀他的博士學位,吸收了Niklaus Wirth的雄厚的內(nèi)功心法之后伊者,Martin Odersky設(shè)計出了Scala英遭,后來創(chuàng)建了TypeSafe公司,如今Scala可謂是江湖武林逐漸崛起的黑白兩道通吃的大器晚成者亦渗,憑借著倚天劍AKKA和屠龍刀Spark挖诸,正掀起一場血雨腥風,搞得Hadoop法精、Storm等諸多老前輩坐立不安多律。
三痴突、函數(shù)式編程語言的興起
前面說了,圖形化的市場需求菱涤,成了面向?qū)ο笳Z言興起的導火線苞也;風水輪流轉(zhuǎn)洛勉,函數(shù)式語言粘秆,正是由于OOP這種命令式編程無法充分發(fā)揮多核時代的計算能力而興起。函數(shù)式語言的不變性收毫,天生就適合并發(fā)編程攻走,適合多核計算,當年時機未成熟此再,沒能一統(tǒng)江湖昔搂,成為一代俠客的利器,現(xiàn)在時過境遷输拇,環(huán)境利好摘符,正好是顯山露水的時候。
這個時候還是稍微回顧下編程語言的江湖吧:
你會發(fā)現(xiàn)策吠,進化到Ruby逛裤,已經(jīng)是OOP語言的一個頂峰了。
未來呢猴抹,在多核時代的世界里带族,未來在函數(shù)式編程語言的手頭里:
縱觀當今.NET的動態(tài),你會發(fā)現(xiàn)DDD在.NET如火如荼地討論著蟀给,而且由于缺乏倚天劍AKKA這樣的江湖利器蝙砌,微軟早已坐立不安,微軟的research部門正忙著研發(fā).NET版的Actor模型跋理,2014年剛剛發(fā)布Orleans的預覽版择克,預試圖在多核的云計算里頭占據(jù)一席之地。