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