新時(shí)代的開(kāi)發(fā)語(yǔ)言該如何抉擇?
2015-04-30 09:55:09 donews隨著互聯(lián)網(wǎng)的發(fā)展,新的IT技術(shù)也層出不窮,面對(duì)著這些琳瑯滿目的新興技術(shù),開(kāi)發(fā)者應(yīng)該如何選擇呢?在這里筆者從個(gè)人角度對(duì)Web的開(kāi)發(fā)方面做一分析。
其實(shí)目前很多新興的開(kāi)發(fā)語(yǔ)言還處于初級(jí)階段,而很多傳統(tǒng)的語(yǔ)言卻越來(lái)越不適應(yīng)現(xiàn)代的計(jì)算機(jī)發(fā)展趨勢(shì),尤其是在移動(dòng)互聯(lián)網(wǎng)的發(fā)展浪潮之下,很多傳統(tǒng)的開(kāi)發(fā)語(yǔ)言已經(jīng)失去了存在的價(jià)值。例如在面對(duì)著如今分散與多核心的計(jì)算平臺(tái),包括大數(shù)據(jù)中心和云平臺(tái),很多傳統(tǒng)開(kāi)發(fā)語(yǔ)言已經(jīng)無(wú)法適應(yīng)其不斷增長(zhǎng)的復(fù)雜性。
但是目前很多新的開(kāi)發(fā)語(yǔ)言都忽略了對(duì)最初瀏覽器的支持,雖然這些新興語(yǔ)言可以創(chuàng)建出一些復(fù)雜的高性能應(yīng)用,而且同傳統(tǒng)語(yǔ)言相比,這些新興語(yǔ)言開(kāi)發(fā)出的應(yīng)用更加可靠而且交互也更加豐富,但是這一切的好處都是以犧牲瀏覽器的基本功能為代價(jià)的。因此大家在選擇新的開(kāi)發(fā)語(yǔ)言時(shí),一定要注意到對(duì)瀏覽器的支持,做好網(wǎng)站內(nèi)容的語(yǔ)義化,以用戶體驗(yàn)為中心進(jìn)行開(kāi)發(fā)。
例如現(xiàn)在大家在瀏覽網(wǎng)站時(shí),經(jīng)常會(huì)出現(xiàn)JavaScript無(wú)法執(zhí)行的狀況,筆者自己就遇到過(guò)多次。除非你主動(dòng)禁用JavaScript,否則更大的可能是高延遲導(dǎo)致的JavaScript請(qǐng)求超時(shí),或者是因?yàn)橐粋€(gè)沒(méi)有被注意到的語(yǔ)法小錯(cuò)誤。
如果是CSS或HTML就很好辦,它們可以主動(dòng)降級(jí),而JavaScript就不行。如果你調(diào)用了一個(gè)沒(méi)有驗(yàn)證過(guò)的標(biāo)準(zhǔn)庫(kù)函數(shù),就有可能導(dǎo)致JavaScript在你的網(wǎng)站上根本無(wú)法得到執(zhí)行。
有些情況下JavaScript只是網(wǎng)站的輔助功能,在這種情況下影響還不大,但也有很多時(shí)候JavaScript是網(wǎng)站必不可少的部分,那么麻煩就來(lái)了,你在使用瀏覽器訪問(wèn)網(wǎng)站時(shí)返回的有可能就只是一個(gè)空白頁(yè)面,什么都沒(méi)有。
再有的問(wèn)題就是在語(yǔ)義結(jié)構(gòu)上,在開(kāi)發(fā)iPhone應(yīng)用時(shí),APP用來(lái)顯示給用戶的方式總是等同的,但是在你通過(guò)智能手表這樣的設(shè)備訪問(wèn)WEB網(wǎng)站時(shí),智能手表上的瀏覽器很可能會(huì)直接忽略你的布局,而是通過(guò)更適合智能手表屏幕的方式來(lái)顯示你的網(wǎng)站內(nèi)容。
在這個(gè)時(shí)代,我們需要重新審核我們的開(kāi)發(fā)方式,確保應(yīng)用可以提供盡可能多的語(yǔ)義元數(shù)據(jù),為將來(lái)可能出現(xiàn)的一切智能設(shè)備做好準(zhǔn)備。
下面筆者為大家推薦幾種目前新興的開(kāi)發(fā)語(yǔ)言中比較有代表性的,它們都針對(duì)目前的一些問(wèn)題做出了獨(dú)特的改進(jìn),也許會(huì)在未來(lái)的開(kāi)發(fā)語(yǔ)言競(jìng)爭(zhēng)中脫穎而出。
在這種局面下,谷歌推出了GO語(yǔ)言,用以替代傳統(tǒng)的C++,正是因?yàn)镃++已經(jīng)很難適應(yīng)現(xiàn)在的局面,使用C++會(huì)大幅度的限制當(dāng)今程序員的工作效率,大量的時(shí)間被浪費(fèi)在了匯編上面。GO語(yǔ)言對(duì)這方面做出了大幅度的改進(jìn),甚至只需要幾秒鐘就可以執(zhí)行程序了。
在面對(duì)移動(dòng)互聯(lián)網(wǎng)的大趨勢(shì)時(shí),Ambient Talk的出現(xiàn)帶來(lái)了一條新的出路,它是一種以環(huán)境為導(dǎo)向的開(kāi)發(fā)語(yǔ)言,不依賴中央網(wǎng)絡(luò)基礎(chǔ)設(shè)施,而且充分考慮到了移動(dòng)網(wǎng)絡(luò)連接的不穩(wěn)定性和無(wú)法預(yù)知的狀況(例如你的手機(jī)不在服務(wù)區(qū)的狀況),它能夠智能的緩沖信息,保證在網(wǎng)絡(luò)中斷時(shí)這些信息不會(huì)丟失,而網(wǎng)絡(luò)恢復(fù)正常之后這些信息將正常發(fā)出,就像從來(lái)沒(méi)出過(guò)問(wèn)題一樣。
微軟推出的Kodu則徹底顛覆了傳統(tǒng)的開(kāi)發(fā)方式,他們?cè)噲D使得軟件開(kāi)發(fā)變成一項(xiàng)普通人都可以進(jìn)行,并且會(huì)有興趣進(jìn)行的工作,而非必須專業(yè)的程序員才可以做。Kodu是一種開(kāi)放的可視化編程語(yǔ)言,沒(méi)有了傳統(tǒng)開(kāi)發(fā)語(yǔ)言中的變量、字符串等概念,而是利用了一個(gè)3D游戲平臺(tái)對(duì)游戲中的角色編注腳本,角色做出的各種動(dòng)作都會(huì)直接映射到實(shí)際的編程之中,使得Kodu可以執(zhí)行復(fù)雜的邏輯。
在傳統(tǒng)語(yǔ)言方面,筆者認(rèn)為C++的地位目前還是無(wú)法動(dòng)搖,雖然GO語(yǔ)言具備著獨(dú)特的優(yōu)勢(shì),但是想要完全取代C++還有很長(zhǎng)的路要走。而在WEB開(kāi)發(fā)方面,Php和Java將依然是未來(lái)很長(zhǎng)一段時(shí)間內(nèi)的主導(dǎo)。
Php具備著容易上手的優(yōu)勢(shì),我們熟悉的Php+MySQL+Apache的組合非常適合中小型Web應(yīng)用的開(kāi)發(fā),不僅開(kāi)發(fā)速度快,而且所有軟件都是開(kāi)源的,全部免費(fèi),投入成本極低,能夠?qū)ζ髽I(yè)變動(dòng)的需求做出快速的相應(yīng)。
而Java更適合做企業(yè)級(jí)的應(yīng)用,通過(guò)JDBC來(lái)訪問(wèn)數(shù)據(jù)庫(kù),接口比較統(tǒng)一,用Java開(kāi)發(fā)的Web應(yīng)用從MySQL轉(zhuǎn)移到Oracle數(shù)據(jù)庫(kù)只需要做出很少的修改。而且Java可以實(shí)現(xiàn)多層的網(wǎng)絡(luò)架構(gòu),數(shù)據(jù)庫(kù)層、應(yīng)用邏輯層和表示邏輯層彼此分開(kāi),而且都有著成熟的開(kāi)發(fā)框架支持。
總體而言,筆者認(rèn)為在未來(lái),多語(yǔ)言混合編程很可能成為一種趨勢(shì),開(kāi)發(fā)人員將使用不同的語(yǔ)言來(lái)應(yīng)對(duì)不同的問(wèn)題,讓每種語(yǔ)言充分發(fā)揮出自己的優(yōu)勢(shì)。
EETOP 官方微信
創(chuàng)芯大講堂 在線教育
半導(dǎo)體創(chuàng)芯網(wǎng) 快訊
相關(guān)文章