關于10種編程技術将成爲主流趨勢
2016年即将進入尾聲,在即将到來(lái)的(de)2017年和(hé)未來(lái)的(de)幾年内,在編程界,會有哪些新技術出現,成爲新的(de)潮流,又有哪些技術的(de)熱(rè)潮會漸漸消退呢(ne)?最近,infoworld.com的(de)一位編輯Peter Wayner在他(tā)撰寫的(de)文章(zhāng)21 hot programming trends -- and 21 going cold 中,提到了(le)21種會流行的(de)技術,以及相應地,21種可(kě)能會遇冷(lěng)的(de)技術。本文旨在與大(dà)家一起討(tǎo)論這(zhè)個(gè)話(huà)題。下(xià)面所列出的(de)10種技術,摘自Peter的(de)文章(zhāng)。大(dà)家也(yě)可(kě)以閱讀他(tā)的(de)全文,了(le)解他(tā)對(duì)其它技術的(de)預測。
1. 大(dà)熱(rè):JavaScript MV框架; 遇冷(lěng):JavaScript文件
很久以前,每個(gè)人(rén)都學會了(le)寫JavaScript代碼,用(yòng)來(lái)彈出一個(gè)消息窗(chuāng)口或檢查表格中含有@符号的(de)電子郵件地址。不過現在有了(le)HTML Ajax應用(yòng)程序,它們非常精細,因此很少人(rén)從零開始寫代碼了(le)。使用(yòng)一個(gè)有詳細說明(míng)的(de)框架和(hé)寫一點膠水(shuǐ)代碼來(lái)執行你的(de)商業邏輯是比較簡單的(de)方法。
現在有很多(duō)框架,如Kendo, Sencha,jQuery Mobile,AngularJS,Ember, Backbone, Meteor JS等等,所有這(zhè)些框架都是爲了(le)處理(lǐ)Web應用(yòng)程序以及頁面事件和(hé)内容而準備的(de)。另外,還(hái)有一些爲智能手機和(hé)平闆電腦(nǎo)提供的(de)跨平台框架,其中包括nativescript,PhoneGap和(hé)Sencha Touch等,它們可(kě)以用(yòng)來(lái)創建源自HTML5技術的(de)app。
HTML5 Mobile App Development with PhoneGap - Livecoding.tv
在livecoding.tv上,一位開發者使用(yòng)Phonegap開發一款HTML5 App
2.大(dà)熱(rè): SVG + JavaScript on Canvas; 遇冷(lěng): Flash
Flash已經令人(rén)們瘋狂了(le)很多(duō)年,但編程大(dà)師們一直看重的(de)是結果。反鋸齒渲染看起來(lái)很棒,以及很多(duō)有才華的(de)編程大(dà)師已經建立了(le)一個(gè)Flash代碼堆垛來(lái)處理(lǐ)複雜(zá)的(de)過渡和(hé)動畫(huà)。
現在JavaScript層具有很多(duō)相同的(de)能力。浏覽器的(de)制造商和(hé)開發者都在爲Flash的(de)結束而歡呼。JavaScript可(kě)以與DOM層更好地整合在一起,DOM層來(lái)自一些新的(de)格式,例如SVG(可(kě)縮放矢量圖形)。SVG和(hé)HTML包含了(le)一大(dà)堆标簽,Web開發者使用(yòng)起來(lái)往往更方便,現在還(hái)有了(le)大(dà)的(de)APIs,讓你可(kě)以在畫(huà)布對(duì)象上詳細地繪畫(huà)圖形,通(tōng)常還(hái)會提供視頻(pín)卡來(lái)幫助你使用(yòng)。把它們結合起來(lái)使用(yòng),你還(hái)有什(shén)麽理(lǐ)由要用(yòng)Flash呢(ne)?
3. 大(dà)熱(rè):遊戲框架;遇冷(lěng):本土遊戲開發
很久以前,遊戲開發意味著(zhe)要請大(dà)量開發人(rén)員(yuán),他(tā)們從零開始用(yòng)C語言寫所有代碼。當然這(zhè)得(de)投入巨資,但它看起來(lái)很棒。現在,沒有人(rén)能負擔得(de)起奢侈的(de)自定義代碼了(le)。大(dà)多(duō)數遊戲開發者放下(xià)了(le)他(tā)們多(duō)年前的(de)驕傲資本,現在他(tā)們使用(yòng)庫,如Unity, Corona,或LibGDX來(lái)建立系統。他(tā)們不會再寫像庫說明(míng)那麽多(duō)的(de)C代碼了(le)。這(zhè)現象是否會令人(rén)慚愧呢(ne)?我們的(de)遊戲不再是用(yòng)手工寫代碼完成,而是由相同的(de)引擎來(lái)制作而成的(de)。不過,大(dà)多(duō)數開發者都對(duì)此感到很欣慰,因爲他(tā)們不需要被迫去處理(lǐ)細節,這(zhè)樣他(tā)們可(kě)以專注于遊戲玩法,情節,人(rén)物(wù)和(hé)藝術。
Livecoding.tv 上的(de)直播者使用(yòng) Unity 及其它庫來(lái)開發各種遊戲
4. 大(dà)熱(rè):單一網頁的(de)Web apps; 遇冷(lěng):網站
如何把所有信息放在一個(gè)由數個(gè)獨立網頁組成的(de)網站中,網站設計人(rén)員(yuán)要花幾個(gè)小時(shí)來(lái)制作網站地圖,以令網站導航變得(de)簡單。
新的(de)Web應用(yòng)程序是從前端到有大(dà)量内容的(de)大(dà)數據庫。當Web應用(yòng)程序需要信息時(shí),它就從數據庫中提取信息并将信息注入到本地的(de)模具中。現在沒有必要使用(yòng)Web附加設備所需要的(de)所有東西來(lái)标記數據,以便創建一個(gè)網頁了(le)。數據層是完全獨立于演示和(hé)格式層。移動計算(suàn)的(de)興起是另一個(gè)因素:單頁的(de),響應式設計的(de)網頁,它工作起來(lái)就像一個(gè)app——所有這(zhè)些都更好,以避免混亂的(de)App商店(diàn)。
5. 大(dà)熱(rè):移動Web apps; 遇冷(lěng):本土移動apps
對(duì)于移動内容,你可(kě)能會有很多(duō)很好的(de)想法。你可(kě)以寫不同版本的(de)app來(lái)應用(yòng)于不同的(de)系統:Android,iOS,Windows 8,甚至BlackBerry OS或是其它任何一個(gè)系統。每一個(gè)版本的(de)app需要由一個(gè)獨立的(de),懂(dǒng)得(de)不同編程語言的(de)團隊來(lái)開發。然後,每一個(gè)平台上的(de)app商店(diàn)在把app交到用(yòng)戶手中之前,可(kě)能會各自提出種種合理(lǐ)不合情的(de)要求。
或者你可(kě)以創建一個(gè)HTML app,把它放在一個(gè)網站上,在所有平台上運行。如果出現了(le)什(shén)麽變化(huà),你不需要返回app商店(diàn)去請求獲得(de)一個(gè)迅速的(de)錯誤檢查和(hé)修複。現在,HTML層越來(lái)越快(kuài),而且它在速度較快(kuài)的(de)芯片上運行,這(zhè)種方法可(kě)以使移動Web app更好地與本土app競争,甚至是與更複雜(zá)的(de)交互式app競争。
6.大(dà)熱(rè): Android; 遇冷(lěng): iOS
幾年前,蘋果專賣店(diàn)門前排起的(de)“人(rén)龍”還(hái)記得(de)吧?時(shí)代在改變,雖然iPhone和(hé)iPad仍然擁有忠實粉絲,他(tā)們喜歡豐富、複雜(zá)的(de)用(yòng)戶界面,但原始銷售數據依然對(duì)Android有利。一些報道甚至說,超過80%的(de)手機是Android的(de)。
原因可(kě)能很簡單,因爲成本。當iOS的(de)設備成本仍然很高(gāo)的(de)時(shí)候,Android正在以大(dà)量競争洶湧而來(lái),那就是用(yòng)五分(fēn)之一的(de)價格來(lái)生産平闆電腦(nǎo)。省錢永遠(yuǎn)是一種誘惑。不過,另一個(gè)因素可(kě)能是開源的(de)效果。任何人(rén)都可(kě)以在市場(chǎng)上競争。現在市場(chǎng)上有大(dà)的(de)安卓平闆電腦(nǎo),也(yě)有小的(de);有安卓攝像頭,甚至還(hái)有安卓冰箱。
7. 大(dà)熱(rè): Web界面; 遇冷(lěng):集成開發環境(IDEs)
很久以前,人(rén)們用(yòng)的(de)是命令行編譯器,然後有人(rén)把編輯器和(hé)其它工具整合在一起,創造了(le)IDE。現在又輪到IDE的(de)熱(rè)潮消退了(le),因爲有了(le)基于浏覽器的(de)工具出現。它們通(tōng)常是一個(gè)工作系統,可(kě)以讓你編輯代碼。如果你不喜歡WordPress的(de)功能,它配備了(le)一個(gè)内置的(de)編輯器,讓你可(kě)以即時(shí)更改代碼。微軟的(de)Azure允許你在它的(de)入口寫JavaScript膠水(shuǐ)代碼。雖然這(zhè)些系統不能提供最好的(de)調試環境,并且在編輯生産代碼時(shí)可(kě)能會有一些危險,但這(zhè)個(gè)創意是不錯的(de)。
你可(kě)以嘗試Cloud9,Aptana,和(hé)Mozilla WebIDE,但要堅持探索。Web界面正在變得(de)越來(lái)越強大(dà)。有可(kě)能會出現這(zhè)樣的(de)情況,在微軟的(de)Azure網站上建立一個(gè)完整的(de)大(dà)數據分(fēn)析項目。
8.大(dà)熱(rè): Node.js; 遇冷(lěng): JavaEE, Ruby on Rails
服務器的(de)世界一直在線程模型上長(cháng)盛不衰,它讓程序員(yuán)在使用(yòng)操作系統時(shí)可(kě)以有種種行爲,如固執,低效或是放任。無論是由程序員(yuán)編碼而造成的(de)愚蠢的(de)循環或是浪費的(de)計算(suàn),操作系統都可(kě)以在線程之間切換來(lái)平衡性能。
Node連同JavaScript一起回調編程模型,它的(de)代碼的(de)确運行得(de)很快(kuài),比任何人(rén)預期的(de)還(hái)快(kuài)。它曾經可(kě)能是一種無實用(yòng)價值的(de)語言,隻是被用(yòng)于警告消息框。但意外地,由于創建新線程的(de)開銷變得(de)明(míng)顯,Node.js騰飛(fēi)了(le)。當程序員(yuán)表現得(de)不好時(shí),問題就會出現了(le),但責任在很大(dà)程度上是對(duì)他(tā)們有好處的(de)。顯然,限制資源往往可(kě)以令程序員(yuán)更快(kuài)地寫代碼。
Node.js還(hái)有利于浏覽器和(hé)服務器之間的(de)和(hé)諧。運行在浏覽器和(hé)服務器上的(de)相同代碼可(kě)以讓開發人(rén)員(yuán)更方便地移動和(hé)複制功能。因此,Node.js層已經成爲互聯網上最熱(rè)門的(de)棧。
9. 大(dà)熱(rè): PHP 7.0; 遇冷(lěng):舊(jiù)版PHP
在過去,PHP是一種簡單的(de)方法來(lái)淘汰一些動态網頁。如果你需要一點點的(de)變化(huà),你可(kě)以在HTML标簽之間嵌入簡單的(de)代碼。Web開發者有了(le)它就基本足夠了(le),但它的(de)緩慢(màn)足以令程序員(yuán)中的(de)中堅分(fēn)子看不起它。
這(zhè)是一則舊(jiù)聞了(le),因爲一些喜愛(ài)PHP的(de)程序員(yuán)在Wordpress和(hé)Facebook等地方都在争相利用(yòng)即時(shí)編譯器,這(zhè)種曾創造出Java如此高(gāo)性能解決方案的(de)技術來(lái)執行比以前更快(kuài)的(de)PHP代碼。現在的(de)工具如HipHop,虛拟機和(hé)PHP7.0提供的(de)速度可(kě)能是舊(jiù)版本的(de)2倍。這(zhè)會給Node.js和(hé)java帶來(lái)挑戰。
10.大(dà)熱(rè): 與時(shí)并進的(de)教育; 遇冷(lěng):四年傳統教育
以計算(suàn)機爲介導的(de)課程不再是新玩意了(le),每個(gè)人(rén)正在享受著(zhe)觀看視頻(pín)講座的(de)好處。我們可(kě)以随意調整視頻(pín)的(de)播放進度,加快(kuài)或放緩,還(hái)可(kě)以重複觀看自己想看的(de)部分(fēn)。在線論壇同樣比以前的(de)討(tǎo)論室有了(le)改善,以前每一次討(tǎo)論,隻能由一個(gè)人(rén)來(lái)主宰。
但這(zhè)不僅是教育的(de)一種本質,網上課程技術的(de)背後是它颠覆了(le)教育産業技術的(de)複雜(zá)性;它還(hái)可(kě)以讓你靈活地支配自己的(de)學習(xí)時(shí)間和(hé)地點。這(zhè)正在改變我們的(de)生活動态,因爲我們不再需要投資四年的(de)時(shí)間以及負擔高(gāo)額的(de)學費去學習(xí)一系列課程了(le)。當你需要獲得(de)新信息的(de)時(shí)候,你的(de)需要可(kě)以得(de)到滿足,而且不要讓迅速腐爛的(de)想法困擾你的(de)頭腦(nǎo)。
直播編程成爲一種流行的(de)編程教育和(hé)編程社交方式
就編程來(lái)說,我們可(kě)以在網上找到很多(duō)學習(xí)網站、社區(qū)、博客,這(zhè)些都是很好的(de)學習(xí)資源。例如Livecoding.tv,這(zhè)是一個(gè)将直播,教育,社交和(hé)工作結合在一起的(de)綜合平台。這(zhè)個(gè)平台以直播編程的(de)方式,将世界各地的(de)程序員(yuán)開發産品或項目的(de)過程直觀地呈現給觀衆用(yòng)戶。你可(kě)以學到很多(duō)在書(shū)本上不一定能學到的(de)編程知識和(hé)技巧,因爲每一個(gè)直播,都是一個(gè)真實的(de)案例。除了(le)直播,你還(hái)可(kě)以觀看每一個(gè)直播者的(de)視頻(pín)。因此,你可(kě)以在這(zhè)個(gè)網站上學習(xí)某種編程語言的(de)基礎知識,也(yě)可(kě)以學習(xí)某個(gè)産品,工具甚至是整個(gè)項目的(de)開發,看看優秀的(de)開發者是如何寫代碼,除錯,創建框架等等。當直播與在線學習(xí)結合在一起時(shí),這(zhè)也(yě)是互聯網的(de)一個(gè)趨勢。
- 全部評論(0)