日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

編程語(yǔ)言間的戰(zhàn)爭(zhēng)

 北書(shū)房2014 2017-02-11

  1 桌面時(shí)代

  古老的C 王國(guó)從1972誕生以后, 一直都非常強(qiáng)大, 這里的臣民對(duì)它又愛(ài)又恨, 因?yàn)樗姆稍试S它的臣民直接操作內(nèi)存,執(zhí)行效率極高, 但是又對(duì)內(nèi)存分配回收不管不顧,全部扔給子民們?nèi)ヌ幚怼?/p>

  其實(shí)純粹的C語(yǔ)言還是比較簡(jiǎn)單的, 只要你能真正的搞懂指針是怎么回事 ,   C++誕生以后,在C的基礎(chǔ)上又加入了面向?qū)ο螅?泛型編程等“時(shí)髦”概念, 讓帝國(guó)的法律制度變的復(fù)雜無(wú)比, 外邊的人都戲稱(chēng)”只有成為律師才能在 C++ 王國(guó)生存”。

  但是這個(gè)世界所有人都離不開(kāi)它, C/C++ 王國(guó)所生產(chǎn)的操作系統(tǒng)(Windows,Linux,Unix ),網(wǎng)絡(luò)協(xié)議棧(TCP/IP) , 編譯器, 數(shù)據(jù)庫(kù)(Oracle, MySQL, SQL Server , Db2),構(gòu)建了計(jì)算機(jī)世界賴(lài)以生存的最底層基礎(chǔ)。

  由于貼近機(jī)器運(yùn)行, C/C++在嵌入式開(kāi)發(fā)以及驅(qū)動(dòng)開(kāi)發(fā)領(lǐng)域根本就沒(méi)有對(duì)手。

  由于運(yùn)行效率高, 它很適合去生產(chǎn)那些要求高性能的, 最好是沒(méi)有圖形界面的, 在服務(wù)器端運(yùn)行的系統(tǒng)級(jí)軟件, 比如說(shuō)Web服務(wù)器(apache, nginx, IIS ),  緩存(redis, memcached) , 版本控制(git,svn),    郵件服務(wù)器 等等。

  當(dāng)然C/C++在圖形界面方面也非常強(qiáng)悍,  推出了像QT這樣的GUI框架, OpenGL, DirectX 這樣的圖形API,    以及Windows上的GUI,   Linux上的KDE, Gnome等。

  在這些圖形框架和類(lèi)庫(kù)的推動(dòng)下, C/C++王國(guó)幾乎霸占了關(guān)鍵的桌面應(yīng)用, 例如辦公(Office), 上網(wǎng)(IE, Firefox, Chrome...) , 圖像處理(Photoshop),  聊天(QQ),   視頻(暴風(fēng)影音,迅雷)......    還有哪些數(shù)不清的游戲以及背后的游戲引擎。

  C王國(guó)的疆域之廣闊, 可以說(shuō)是前無(wú)古人, 如果計(jì)算機(jī)世界一直停留在桌面應(yīng)用時(shí)代, 估計(jì)就沒(méi)有別人什么事了, 除非出現(xiàn)一個(gè)新的語(yǔ)言, 具備C/C++的性能, 又簡(jiǎn)單易學(xué)。

  2 互聯(lián)網(wǎng)時(shí)代

  互聯(lián)網(wǎng)時(shí)代給后來(lái)者帶來(lái)了機(jī)會(huì),整個(gè)世界開(kāi)始往互聯(lián)網(wǎng)上轉(zhuǎn)移,  剛開(kāi)始的時(shí)候是靜態(tài)網(wǎng)頁(yè),沒(méi)有什么交互, C/C++王國(guó)生產(chǎn)的Web服務(wù)器像Apache 還能夠輕松應(yīng)對(duì),可隨后就進(jìn)入了動(dòng)態(tài)頁(yè)面時(shí)代, C/C++尷尬的發(fā)現(xiàn), 自己并不適合“快速的”去生產(chǎn)這些需要和瀏覽器打交道的, 后端有復(fù)雜多變業(yè)務(wù)的系統(tǒng), 例如電子商務(wù)網(wǎng)站,社交網(wǎng)站 , 他們發(fā)現(xiàn)自己在處理Web請(qǐng)求和響應(yīng)的時(shí)候顯得異常笨拙。

  Java

  這個(gè)巨大的市場(chǎng)空白被Java 率先抓住, 成功建立了Java 帝國(guó)。 (參見(jiàn)Java : 一個(gè)帝國(guó)的崛起)

  Java 用jsp, servlet, EJB, Spring, Hibernate,  Struts,  myBatis , Ant, Maven,Velocity , Freemaker, Ehcache 等數(shù)不清的工具和框架成功的占據(jù)了Web編程領(lǐng)域, 不僅如此, 他還成功的侵蝕了C/C++帝國(guó)的地盤(pán)。

  原來(lái)那些高性能的服務(wù)器端軟件都是由C/C++ 帝國(guó)生產(chǎn)的, 隨著Java 虛擬機(jī)不斷的優(yōu)化提升, 特別是網(wǎng)絡(luò)應(yīng)用是很多處理時(shí)間花在IO上, 對(duì)速度和性能要求不是非常高, Java也適合來(lái)做服務(wù)器端軟件了, 例如應(yīng)用服務(wù)器(Tomcat, JBoss, Websphere, Weblogic) , 網(wǎng)絡(luò)應(yīng)用框架Netty,  服務(wù)框架Dubbo,   搜索Elastic Search,  消息隊(duì)列ActiveMQ等等。

  機(jī)器性能的提高, 甚至讓Java涉足桌面領(lǐng)域, 雖然沒(méi)有C++那么成功, 至少捕獲了碼農(nóng)的心, 很多開(kāi)發(fā)工具都是Java 寫(xiě)的:  IntelliJ IDEA, Eclipse  , HBuilder 等等。

  微軟帝國(guó)的.NET和C#也不得不提,雖然不如Java生態(tài)圈這么成熟和強(qiáng)大, 但是在Windows領(lǐng)域絕對(duì)是站主導(dǎo)地位, C#可以開(kāi)發(fā)Web系統(tǒng)和桌面系統(tǒng),  Visual Studio 是個(gè)非常強(qiáng)大的開(kāi)發(fā)工具,很多開(kāi)發(fā)靠拖拖拉拉就能搞定。

  只是這個(gè)圈子有些封閉,無(wú)法吸引更多的人尤其是大牛的加入, 比較可惜。

  但是我們得知道, Java和.Net 他們的底層Java 虛擬機(jī)和.NET虛擬機(jī), 也是由C/C++帝國(guó)生產(chǎn)的, 雖然老帝國(guó)的疆域大大縮小, 但在系統(tǒng)級(jí)軟件的地位依然無(wú)可撼動(dòng)!

  JavaScript

  互聯(lián)網(wǎng)時(shí)代的應(yīng)用基本是B/S結(jié)構(gòu),  即瀏覽器/服務(wù)器,  服務(wù)器端Java當(dāng)仁不讓?zhuān)?但是在瀏覽器端, Java虛擬機(jī)就沒(méi)有任何優(yōu)勢(shì)了, 這里是Javascript的天下, 從前的VBScript, JScript早就被碼農(nóng)拋棄。

  Javascript 一家獨(dú)大,  這里充斥著令人眼花繚亂的框架和庫(kù) Dojo, JQuery, Prototype, ExtJS,  AngularJS ,  React ,  Backbone ......  ,  碼農(nóng)們?cè)谶@里能深深的體會(huì)到選擇太多的幸福煩惱。

  單單是Javascript還不夠, 還需要HTML 和 CSS才能構(gòu)建起完整得瀏覽器端頁(yè)面,于是Javascript+HTML +CSS , 這三兄弟聯(lián)手把瀏覽器端給統(tǒng)治了, 現(xiàn)在的統(tǒng)治異常穩(wěn)固, 短期內(nèi)還看不到可以任何被推翻的跡象。

  在原來(lái)Javascript/HTML/CSS 還得寄人籬下, 主要是通過(guò)JSP, Veclocity ,Freemaker等視圖技術(shù)生成Web界面, 現(xiàn)在前后端分離, javascript 通過(guò)AJAX的方式只調(diào)用服務(wù)器端的接口,界面的生成完全放在瀏覽器端, 他們徹底獨(dú)立了。

  Javascript 不僅僅貪戀瀏覽器這一畝三分地, 它的攻勢(shì)咄咄逼人, 還在不斷的攻城掠地, 在Chrome的javascript 引擎V8的協(xié)助下, Javascript 用Node.js 成功進(jìn)駐了服務(wù)器端編程, 在React Native 的支持下, 竟然殺入了在手機(jī)端開(kāi)發(fā)領(lǐng)域 !

  這個(gè)最初看起來(lái)不怎么樣的語(yǔ)言風(fēng)頭一時(shí)無(wú)兩, 一個(gè)帝國(guó)開(kāi)始隱隱成型。

  腳本語(yǔ)言

  Web編程領(lǐng)域?qū)嵲谑翘螅?強(qiáng)如Java, .NET  也無(wú)法通吃,特別有很多碼農(nóng)批評(píng)Java 笨拙,臃腫,發(fā)展慢, 不靈活, 這就導(dǎo)致了很多小王國(guó)的蓬勃發(fā)展, 最具代表性的是PHP, Python和Ruby。

  這三位都是腳本語(yǔ)言,由解釋器解釋執(zhí)行(解釋器自然也是C/C++帝國(guó)生產(chǎn)) , 他們對(duì)Java Web編程領(lǐng)域的進(jìn)攻極為猛烈。

  PHP專(zhuān)門(mén)做Web編程, 它快速靈活,和Linux,Mysql 堪稱(chēng)絕配,  很多論壇(Discuz), 內(nèi)容管理系統(tǒng)(WordPress), 網(wǎng)店(Magento),還有很多大型網(wǎng)站(例如Facekbook, Yahoo,Wikipedia,新浪微博等) 都是用PHP搞定, PHP是很多碼農(nóng)的最?lèi)?ài)。

  Ruby 漂亮的語(yǔ)法和強(qiáng)大的元編程能力對(duì)碼農(nóng)們有著巨大的吸引力, Ruby on rails 這個(gè)Web編程框架是很多人的摯愛(ài), 像Twitter(現(xiàn)已轉(zhuǎn)向Scala),  Hulu (在線(xiàn)視頻租賃), AirBnb(房屋分享租賃), GitHub等都是構(gòu)建于Ruby on rails之上。

  Python 做Web編程也是一大利器, 但絕不僅僅是Web編程, 它簡(jiǎn)直就是個(gè)萬(wàn)能工具,啥都能做,爬蟲(chóng),桌面程序,科學(xué)計(jì)算,數(shù)據(jù)挖掘 樣樣都行。

  Python 和Ruby 都簡(jiǎn)單易學(xué), 并且表達(dá)能力強(qiáng), 隨手寫(xiě)幾行代碼就能完成很多功能,所以非常適合做運(yùn)維, 有很多自動(dòng)化運(yùn)維工具, 像Ruby 的Chef , Puppet ,  Python 的Saltstack。

  3 移動(dòng)互聯(lián)網(wǎng)/大數(shù)據(jù)/云計(jì)算時(shí)代

  Java帝國(guó)在Web編程領(lǐng)域受到了PHP, Python, Ruby 持續(xù)攻擊,   被搞的灰頭土臉, 但是帝國(guó)的基因和運(yùn)氣實(shí)在是好, 竟然又搭上了手機(jī)開(kāi)發(fā)和大數(shù)據(jù)快班車(chē), 成功開(kāi)辟了新戰(zhàn)場(chǎng)。

  在手機(jī)領(lǐng)域, Android 選擇了Java 作為開(kāi)發(fā)語(yǔ)言, 用來(lái)對(duì)抗蘋(píng)果iOS的Objective-C和Swift  , 占據(jù)了手機(jī)開(kāi)發(fā)的大部分江山。

  大數(shù)據(jù)領(lǐng)域, Java和Java 虛擬機(jī)更是笑傲群雄, Hadoop 是Java 開(kāi)發(fā)的, Spark 是Scala開(kāi)發(fā)的, Storm則由Java和Clojure共同組成。

  Scala和Clojure都運(yùn)行在JVM之上, 可是說(shuō)是函數(shù)式編程的語(yǔ)言在JVM上的新生, 估計(jì)漸漸老去的LISP會(huì)很欣慰的。

  在云計(jì)算領(lǐng)域,Ruby 和Python 令人吃驚的滲透了進(jìn)來(lái), 成功的擴(kuò)大了自己的領(lǐng)地,   IAAS 平臺(tái) Openstack是 Python寫(xiě)的,   PAAS平臺(tái)Cloudfoundry 是Ruby寫(xiě)的, 這再次證明了Python/Ruby 適合對(duì)性能要求不高的管理,監(jiān)控等領(lǐng)域。

  Google推出的Go語(yǔ)言也要進(jìn)來(lái)分一杯羹, 它號(hào)稱(chēng)是云計(jì)算時(shí)代的C語(yǔ)言, 能達(dá)到C的運(yùn)行效率和Python 的開(kāi)發(fā)效率。 只是還很年輕,用Go語(yǔ)言開(kāi)發(fā)的系統(tǒng)知名的有Docker, 七牛云存儲(chǔ), 容器集群管理系統(tǒng)Kubernetes等等, 至于能不能建立一個(gè)像C,Java 那樣的帝國(guó), 就看它的造化了。

 


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多