新聞中心
Erlang、Node.js、Go:本文將指導(dǎo)大家邁出走向熱門編程語言的第一步。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比雞澤網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式雞澤網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋雞澤地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。
“前沿”這個字眼可能太過激烈,甚至?xí)苯訃樑芤恍┍J氐钠髽I(yè)技術(shù)人員。對于企業(yè)IT部門而言,利用前沿性技術(shù)打造新產(chǎn)品簡直有幾分癡人說夢的味道。
這種反應(yīng)不只源自對新方案的恐懼或者現(xiàn)有機制太過陳舊以至于難以更新,畢竟企業(yè)團隊需要采納一切可資借鑒的新思路來指導(dǎo)業(yè)務(wù)流程——甚至包括新思路的階段性成果。但從管理者的角度出發(fā),他們也需要盡可能保持業(yè)務(wù)體系的穩(wěn)定性,因此原有堆棧代碼帶來的確定性能帶來理想的使用安全感。
使用前沿性技術(shù)的關(guān)鍵在于多做實驗而不能粗暴地組織全面升級。在預(yù)期效果最明顯的領(lǐng)域嘗試部署新代碼,觀察這些前沿工具能否提供我們所需要的性能及功能,然后權(quán)衡業(yè)務(wù)流程的基礎(chǔ)要素是否受到了影響。單靠實驗并不一定能立即暴露出新技術(shù)中的全部潛在弱點。因此逐步增加對應(yīng)工作量,在審查結(jié)果達到全面準確之后再以嚴謹?shù)膽B(tài)度進行實施才是正途。
在本文中,我們將論證與當前“最新最強”技術(shù)方案相關(guān)的七種實驗流程。請放心,這些技術(shù)都已經(jīng)具備一定發(fā)展歷程——事實上,其中一些已經(jīng)有超過二十年的歷史。但它們?nèi)匀荒軌驗楝F(xiàn)代企業(yè)堆棧提供顯著的領(lǐng)先優(yōu)勢,也因此受到技術(shù)行業(yè)的廣泛關(guān)注。不要抗拒,請以積極的心態(tài)加以嘗試。這些技術(shù)是大家從熟悉的世界邁向新紀元的理想起點,更快、更簡單、更純粹——不容錯過。
前沿實驗第一位:利用Erlang實現(xiàn)純粹的并發(fā)效果
目前前沿技術(shù)的主要訴求在于解決實際問題——換言之就是治標不治本。云計算之所以能夠興起,是因為數(shù)據(jù)中心的管理工作令I(lǐng)T部門十分頭痛。而像Erlang這樣的新語言之所以不斷涌現(xiàn),則是因為技術(shù)老鳥們無法勝任新時代下的技術(shù)要求。
作為一種擁有二十多年歷史的編程語言,Erlang憑借著自身的高效結(jié)構(gòu)將并發(fā)線程的執(zhí)行難度降至最低,從而贏得了越來越多技術(shù)人員的青睞。如果利用Erlang進行編程,Web服務(wù)器能夠在多用戶并發(fā)任務(wù)當中帶來更出色的表現(xiàn)——這是由于該語言的設(shè)計初衷旨在幫助開發(fā)人員通過限制程序的編寫方式來做出正確決策。當然,技術(shù)從牛們完全可以利用其它語言實現(xiàn)同樣的功效,但Erlang在設(shè)計中采用一系列安全輔助機制,從而避免線程紊亂狀況的發(fā)生。Erlang語言為需要被鎖定及解鎖的共享變量中引入了功能性設(shè)計及消息傳遞機制,這使得IT部門所開發(fā)的企業(yè)集群能夠更好地應(yīng)對多用戶環(huán)境。
Erlang語言由Ericcson開發(fā),最初是為了用于內(nèi)部電信系統(tǒng),而后逐漸演變?yōu)殚_源項目。在Erlang步入開源道路之后,其大型技術(shù)社區(qū)如今已經(jīng)提供大量支持工具,例如在大部分主流操作系統(tǒng)中進行基本運行安裝,以及其它開源項目。很多參與者利用OTP——全稱為開放電信平臺——作為網(wǎng)站數(shù)據(jù)服務(wù)的交付基礎(chǔ),這也是大部分簡單項目的最佳起點。(大家可以點擊此處下載Erlang。)
不過任何一種語言都存在局限。Erlang的主要瓶頸在于,其新工具的設(shè)計目的并不是為了修復(fù)那些由失誤或故障引發(fā)的問題;它們關(guān)注的是提供差異化決策方案。也就是注重“取舍”而非“問題”。
舉例來說,云計算能夠帶來出色的簡便性與靈活性,但卻會同時造成控制與安全方面的難題。使用Erlang語言的程序員需要犧牲一部分自由度來換取新的開發(fā)模式。如果大家的代碼需要面對的是多位彼此互不相關(guān)且無需溝通的用戶,那么使用Erlang模式來編寫代碼是最便捷的方式。不過如果大家需要讓自己的線程彼此溝通——前提是各位有能力攻克這項難關(guān)——使用Erlang反而會讓事情變得更加復(fù)雜。
從小處著手,了解Erlang是否能夠與自己的實際需求相吻合,而后通過取舍獲得最佳代碼表現(xiàn),這就是我們進行實驗的意義所在。
前沿實驗第二位:Node.js Web堆棧
很多企業(yè)在評判服務(wù)的實際效果時,都會觀察其是否能夠快速交付數(shù)據(jù)。沒人愿意讓一位潛在客戶面對著空白的瀏覽器窗口破口大罵。此外,在向頂頭上司進行工作匯報時,大家也肯定不希望把時間浪費在等待關(guān)鍵性業(yè)務(wù)分析報告生成身上。
不少前沿性工具都專門為速度而生。以Node.js為例,它的流行主要是因為其出色的運行速度。它在與新型NoSQL數(shù)據(jù)庫協(xié)作時的速度表現(xiàn)甚至更快,這是由于新型NoSQL數(shù)據(jù)庫在數(shù)據(jù)保存方面速度拔群??傊?,我們可以在這套小型平臺上建立起高速Web基礎(chǔ)設(shè)施,并且同時降低對電力資源的消耗。速度與能效之間往往存在著緊密聯(lián)系。
這樣的速度表現(xiàn)對于將快速響應(yīng)視為首要目標的企業(yè)用戶來說極具吸引力。更短的網(wǎng)站響應(yīng)時間能夠大大提高客戶的第一印象,從而將潛在客戶轉(zhuǎn)化為實實在在的買家。不過銀行等擁有大量固定客戶的企業(yè)對于這方面特性可能并不關(guān)注。
Node.js是一套以Chrome V8 JavaScript引擎為基礎(chǔ)創(chuàng)建的開源堆棧,但大多數(shù)技術(shù)人員會在nodejs.org網(wǎng)站上為各類主流平臺尋找預(yù)先開發(fā)好的可執(zhí)行方案。作為主要贊助商,Joyent公司還提供配備鏡像的云設(shè)備,其中包含所有必要庫及工具。
很多開發(fā)人員習(xí)慣于直接向Web框架求助,例如Tower、Geddy或者Railway,它們能夠切實簡化數(shù)據(jù)驅(qū)動的基礎(chǔ)網(wǎng)站的開發(fā)流程。
Node.js的局限與性能無關(guān),最大的問題在于它給開發(fā)人員帶來沉重的技術(shù)負擔。即使是最為睿智的程序員也需要加倍小心,因為這意味著所有數(shù)據(jù)包都運行在同一進程當中。如果某位用戶的無意操作偶然觸發(fā)了代碼中的bug,整個Web服務(wù)器都將陷入崩潰。優(yōu)秀的程序員以及嚴格的測試流程能夠避免問題的發(fā)生,但沒人能保證永遠不出紕漏。在這方面,Erlang的做法正好相反——它利用多項限制幫助程序遠離嚴重錯誤。
Node.js與NoSQL相結(jié)合完全能夠成為當下前沿實驗的理想方向之一:專注于為爆炸式發(fā)展中的社交網(wǎng)絡(luò)提供支持。如果大家打算親自進行實驗,請務(wù)必選擇對速度要求較高、但對穩(wěn)定性不太關(guān)注的領(lǐng)域。如果您的數(shù)據(jù)需要精心打理,請告別Node.js、遠離風(fēng)險。
前沿實驗第三位:HTML 5 Web與移動應(yīng)用
古語有云“新官上任三把火”,剛剛誕生的新工具也值得我們體驗一下其旺盛火力。從零開始剛剛建立完成的最新語言及軟件堆棧很可能尚未經(jīng)過新版本帶來的細微調(diào)整并舍棄不合用的API,但其語法及格式也因此比較純粹、簡潔。
這往往能為大家?guī)砀唵巍⒏兇獾拇a。盡管程序員們能夠利用任何語言編寫出復(fù)雜的代碼,但新型堆棧往往不需要經(jīng)過太多代碼修復(fù)及版本測試流程。智能手機上的某些應(yīng)用需要經(jīng)過幾十個版本的嚴格測試,從而確保其能夠以正確版本發(fā)揮正確效果。新型堆棧就不至于帶來這樣的額外復(fù)雜性。
目前市場上已經(jīng)存在多種HTML 5項目,旨在為開發(fā)者提供創(chuàng)建網(wǎng)站或者移動手機應(yīng)用所必需的基本要素。代碼,或者被稱為框架或者支架,能夠在頁面中組織內(nèi)容并提供由菜單為主導(dǎo)的過渡機制。其中最具人氣的項目包括jQuery Mobile、Sencha Touch以及Titanium,但近來還興起了更多其它工具。很多人氣極高的CMS堆棧,例如WordPress或者Drupal,已經(jīng)開始將關(guān)注重點轉(zhuǎn)移到移動環(huán)境當中,而且往往能夠使用大量原始代碼。
雖然這些新的代碼堆棧足夠簡潔,但它們需要將原有平臺徹底淘汰之后才能實現(xiàn)效果。新工具能夠輕松幫助開發(fā)者編寫出簡單而精致的代碼。它們往往直接忽略掉陳舊硬件以及操作系統(tǒng)版本。當然,它們的簡潔性與高速性源自對現(xiàn)有預(yù)發(fā)布代碼的高度依賴。
HTML 5框架往往會在大家使用舊版本或者不符合標準的瀏覽器時發(fā)生故障。突然之間,菜單顯示的位置出現(xiàn)嚴重偏移,而且文字內(nèi)容也開始只顯示一半——這說明CSS指令無法正常工作。有時候新需求需要與舊方案和諧相處,但新代碼卻堅持以同一種方式實現(xiàn)某一種功能,這也是最令人頭痛的問題。
在邁入實驗階段之前,請認真考慮自己是否有能力為技術(shù)的特定子集提供必要支持。
#p#
前沿實驗第四位:利用R語言進行數(shù)據(jù)處理
從簡潔Web設(shè)計到更為復(fù)雜的大數(shù)據(jù)分析,R語言已經(jīng)成為目前大部分熱門新工具的開發(fā)核心——這些成果往往被用于通過數(shù)據(jù)解決問題或者掌握客戶情況。在眾多成果工具集的支持下,R不僅是一種能夠為通用統(tǒng)計公式提供預(yù)定義功能的語言,更是一種思考問題并找尋解決方案的全新方式。
舉例來說,大數(shù)據(jù)分析軟件包中的統(tǒng)計模型能夠識別并標記復(fù)雜的模式并充分發(fā)揮現(xiàn)代計算機集群所提供的全部性能資源。統(tǒng)計模型取代了原本只能排序或者尋找最大值的簡陋機制。與前沿統(tǒng)計軟件協(xié)作意味著大家能夠?qū)崿F(xiàn)深層次分析,并在舊有代碼無能為力的狀況下找到有價值的蛛絲馬跡。
這些新型視角的出現(xiàn)幫助企業(yè)節(jié)約了數(shù)十億美元的常規(guī)支出。他們幫助店鋪確定所在地域的口味喜好,根據(jù)人們的審美習(xí)慣以顏色、圖案、大小等標準安排貨架擺放方式。它們匯總出的結(jié)論幫助營銷人員精準確定廣告投放量??傊?,只要有數(shù)據(jù)的地方,我們就有機會從中找到有利于自身的發(fā)展機遇。
作為開源項目,R語言專注于通過培養(yǎng)機制建立核心用戶群體。很多開發(fā)人員會以R Studio等更為完整的IDE作為起點,因為這些IDE捆綁有編輯器以及具備執(zhí)行引擎的輸出窗口。在生產(chǎn)堆棧領(lǐng)域,R Studio IDE已經(jīng)成為最理想的開發(fā)機制。
不過像R語言這樣的統(tǒng)計工具也有缺陷,其結(jié)果并非永遠直觀,實驗所獲得的效用也常常不夠明顯。這是因為盡管思路足夠前衛(wèi),但其執(zhí)行流程還不夠科學(xué)。大數(shù)據(jù)分析是一套極為出色的理論,甚至堪稱偉大的靈感,但幾乎沒人能準確說出這項技術(shù)到底有多出色——特別是在背景條件的影響之下。統(tǒng)計分析真能幫助大家改善自己的產(chǎn)品嗎?收集到的數(shù)據(jù)能否帶來理想的精確度以指導(dǎo)工作?沒人說得清,但如果能花上幾個月組織實驗,大家沒準會得到自己的結(jié)論。
考慮到R語言等統(tǒng)計工具令人激動的特性,我們不禁急于利用它對磁盤陣列中保存的數(shù)據(jù)進行一番全面分析。也許大家運氣很好,巨大的機遇正在磁盤中靜靜等著你來發(fā)現(xiàn)。不過很多技術(shù)人員已經(jīng)發(fā)現(xiàn),單靠大數(shù)據(jù)分析機制還不足以徹底實現(xiàn)“去其糟粕、取其精華”的目標,人力的介入不可避免。單靠分析結(jié)果中那一串串數(shù)字只會讓人找不著北。
前沿實驗第五位:體驗NoSQL的極致速度
讓我們面對現(xiàn)實:我們程序員其實是個相當懶散的群體。我們不愿意從零開始創(chuàng)建項目——除非不得不做。新工具的出現(xiàn)往往是由于對新型功能的強烈需求。有時候情況甚至更為嚴重。
獲得這些新功能的惟一途徑就是接受新型工具。許多新型NoSQL數(shù)據(jù)庫能夠毫不費力地遷移到云環(huán)境當中。弄一堆設(shè)備,在它們之間順利運作,這正是技術(shù)人員的專長與構(gòu)建基礎(chǔ)設(shè)施的出發(fā)點??傊绻麤]必要,IT部門根本不會有熱情引進新機制。
目前可供選擇的NoSQL數(shù)據(jù)庫可謂層出不窮,其中大部分項目在功能方面存在廣泛交集。對這些交集進行一一列舉并詳加解釋是項巨大的工程,受篇幅所限,我在這里就不再贅述了??傊壳氨容^熱門的工具有Cassandra、MongoDB、CouchDB以及Riak。某些企業(yè)還會提供工具即服務(wù)方案。MongoLab以及MongHQ就是兩套利用MongoDB實現(xiàn)數(shù)據(jù)存儲的方案,只要版本版本相近即可實現(xiàn)兼容。
以閃電般的速度以及靈活的擴展性實現(xiàn)響應(yīng)非常重要,為了充分享受新工具在這兩方面帶來的提升,大家值得對手中的全部現(xiàn)有代碼進行重寫。不過此類前沿方案的核心吸引力還在于,我們找不出它們在發(fā)展過程中誤入歧途的端倪。通常情況下,技術(shù)方案往往存在陰暗面,我們需要通過艱辛的探索——甚至錯誤——才能全面地對其加以認識。
NoSQL數(shù)據(jù)庫也面臨著同樣的問題。它的速度確實夠快,但這主要是因為它并不提供任何堅實的一致性承諾。這類數(shù)據(jù)庫項目單純接納大量數(shù)據(jù)并在確定全部數(shù)據(jù)都已經(jīng)寫入磁盤之前就顯示“全部完成”信息。對于社交網(wǎng)站這類內(nèi)容不太重要的企業(yè)來說,個人用戶狀態(tài)信息的丟失不至于惹出什么大麻煩,但其它企業(yè)的心態(tài)可就沒這么輕松了。
尋找合適的區(qū)域,確保其中不涉及任何關(guān)鍵性數(shù)據(jù),接下來就可以放心大膽地鼓搗這些鍵-值數(shù)據(jù)存儲方案了。
前沿實驗第六位:利用圖形數(shù)據(jù)庫尋找連接
數(shù)據(jù)庫概念確立于上個世紀。簡單來說,我們首先定義包含著特定數(shù)據(jù)列的列表,然后向其中插入行,全部填滿后就形成了一套數(shù)據(jù)庫。數(shù)列中可以包含整數(shù)、十進制數(shù)字或者字符串,傳統(tǒng)數(shù)據(jù)庫的靈活性也就僅限于此了。
但Neo4j等圖形數(shù)據(jù)庫的出現(xiàn)給數(shù)據(jù)庫概念引入了新思路。我們?nèi)匀豢梢栽跀?shù)列中添加數(shù)字及字母,但現(xiàn)在大家還可以在不同單元行之間創(chuàng)建指針以形成網(wǎng)絡(luò)結(jié)構(gòu)。如果存儲的內(nèi)容是社區(qū)網(wǎng)絡(luò),那么數(shù)據(jù)庫就能夠記錄下每位用戶以及與之相關(guān)的好友。
在規(guī)則數(shù)據(jù)庫中,我們一直可以為每個單元行賦予一個鍵,并將所有指針以鍵的形式保存在同一個列當中。圖形數(shù)據(jù)庫的強大實力體現(xiàn)在用戶運行查詢之時。圖形數(shù)據(jù)庫能夠?qū)W(wǎng)絡(luò)進行解壓,并利用經(jīng)過精密調(diào)整的搜索算法組織網(wǎng)絡(luò)查詢。它不需要像關(guān)系數(shù)據(jù)庫那樣處理復(fù)雜的鏈接與加入關(guān)系。如果大家希望查詢某位用戶的朋友的朋友的朋友一共有多少位,查詢引擎能夠直接給出結(jié)果。如果大家希望測試兩位用戶之間需要經(jīng)過多少次朋友關(guān)系跳轉(zhuǎn)才能彼此聯(lián)系,引擎則需要搜索網(wǎng)絡(luò)并找出答案。
Neo4J由Neo技術(shù)公司所打造,提供三種版本并遵循多種許可模式。社區(qū)版以GPL 3.0許可為基礎(chǔ)并提供所有搜索能力。高級版及企業(yè)版則增加了多種工具,用于監(jiān)控數(shù)據(jù)吞吐量、實現(xiàn)集群同步并對數(shù)據(jù)庫進行備份。二者都遵循針對實驗及開源項目的Affero GPL許可,能夠支持且無需公開大家自己的代碼。
在功能集方面,我們同樣需要做出取舍。圖形數(shù)據(jù)庫與其它數(shù)據(jù)庫家族成員相比,在開發(fā)水平及調(diào)整精度上有所欠缺。它們在圖形算法領(lǐng)域可算當之無愧的專家,但在傳統(tǒng)功能方面則既不夠淵、也不夠博。選擇圖形數(shù)據(jù)庫就意味著放棄其它功能取向。
前沿實驗第七位:利用Go簡化結(jié)構(gòu)
多年以來,各類編程語言就像雨后春筍一般爭相涌現(xiàn)。由于每個人都希望把自己喜愛的功能及思路添加進來,因此很多原本單純的想法最終變成了一大坨重量級負擔?,F(xiàn)在是時候創(chuàng)建一套嶄新而又經(jīng)過修剪的王牌語言了。
Go就是這樣一款由谷歌公司的眾多技術(shù)專家創(chuàng)建出的語言。其語法機制對于熟悉C及Java的程序員來說并不陌生,而且其本身難度也絕對親民。我們不僅可以通過定義類型對代碼進行編譯,甚至還能在代碼運行過程中對其加以修改。無用存儲單元收集程序負責(zé)所有內(nèi)存分配任務(wù)。Go還提供一套輕量級機制用于組織并發(fā)方法,這樣大家就能輕松編寫出支持并行運行的代碼了。
谷歌以自由度極高的開源許可為基礎(chǔ),為Unix、Linux、Mac OS X以及Windows等系統(tǒng)平臺提供了編譯器與運行堆棧。目前已經(jīng)有多家企業(yè)開始以實驗方式測試Go語言,而谷歌也表示嘗試將其代碼引入某些生產(chǎn)環(huán)境。大家可以訪問tour.golang.org網(wǎng)站以交互方式了解這款新語言。
Go這樣的語言最適合幫助企業(yè)用戶在重新組織或者設(shè)計辦公環(huán)境時清理原有負擔。對結(jié)構(gòu)加以精簡能夠簡化員工之間的協(xié)作難度,因為大家的溝通將變得更順暢、也能夠更輕松地向預(yù)定目標共同努力。Go的支持者們對其特性大加贊美,認為它能夠幫助自己與他人協(xié)作開發(fā)出簡潔而極具功能性的產(chǎn)品。簡潔性將協(xié)作過程中經(jīng)常出現(xiàn)的溝通與同步障礙一掃而空,這也正是Go語言的核心價值所在。
文章標題:值得嘗試的七大前沿性編程實驗
網(wǎng)站URL:http://www.5511xx.com/article/dpioshe.html


咨詢
建站咨詢
