編程趨勢(shì):十五大熱門(mén)與十五大冷門(mén)
譯文熱門(mén)還是冷門(mén)?從Web到主板再到培訓(xùn)工作,一同探討哪些項(xiàng)目正當(dāng)其時(shí)、哪些則逐漸退出歷史舞臺(tái)。
程序員總是喜歡對(duì)時(shí)尚界冷嘲熱諷,認(rèn)為那里的風(fēng)潮總是一波接著一波、令人莫衷一是。裙子長(zhǎng)了又短、短了再長(zhǎng),色彩的選擇也是你方唱罷我登場(chǎng),就連領(lǐng)帶也是時(shí)寬時(shí)窄。相比之下,技術(shù)領(lǐng)域則穩(wěn)定得多——嚴(yán)謹(jǐn)、科學(xué)、數(shù)學(xué)以及精度始終占據(jù)統(tǒng)治地位,成為從業(yè)者們一直遵循的永恒原則。
但這并不是說(shuō)編程是一門(mén)缺乏趨勢(shì)變化的專(zhuān)業(yè)技能。與時(shí)尚界不同的是,編程講求的始終是對(duì)更高效率的追尋,更高定制程度與易用性成為技術(shù)人的努力目標(biāo)。新型技術(shù)之所以能夠占據(jù)優(yōu)勢(shì)、完全是因?yàn)槟軌蛟谝环矫婊蛘叨鄠€(gè)方面超越前代方案——總而言之,優(yōu)秀的機(jī)制才能生存下來(lái)、僅僅靠奇思妙想還遠(yuǎn)不足以在技術(shù)領(lǐng)域立足。
有鑒于此,我們將在今天的文章中與大家共同探討技術(shù)業(yè)界的熱門(mén)與冷門(mén)項(xiàng)目,相信各位朋友作為程序員對(duì)此也已經(jīng)有所感受。當(dāng)然,相信并不是每位讀者都能認(rèn)同熱門(mén)及冷門(mén)清單中的項(xiàng)目,也必然有一些大家認(rèn)為值得一提的內(nèi)容沒(méi)能上榜。但這也正是令編程工作令人著迷的另一大因素:我們面對(duì)的永遠(yuǎn)是一個(gè)快速變化、不斷引發(fā)激烈爭(zhēng)論且舊項(xiàng)目仍有機(jī)會(huì)東山再起的世界。
熱門(mén):預(yù)處理器
冷門(mén):全語(yǔ)言堆棧
就在不久之前,創(chuàng)建新型編程語(yǔ)言的人們還不得不使盡渾身解數(shù)將代碼轉(zhuǎn)化為能夠令芯片理解的信息。這時(shí),有人發(fā)現(xiàn)自己可以把原先取得的工作成果添加進(jìn)來(lái)。如今人們有了更加睿智的處理方式,只需編寫(xiě)一套預(yù)處理器,即可將新型代碼轉(zhuǎn)譯為具備豐富API及庫(kù)的舊有代碼。
偏愛(ài)動(dòng)態(tài)類(lèi)型的技術(shù)人員創(chuàng)建出了Groovy,這是一套Java的簡(jiǎn)化版本、不再過(guò)分堅(jiān)持標(biāo)點(diǎn)符號(hào)的使用方式。那些希望改進(jìn)JavaScript的技術(shù)人員則創(chuàng)造出了CoffeeScript,這套預(yù)處理器允許使用者在無(wú)需考慮標(biāo)點(diǎn)符號(hào)運(yùn)用方式的前提下進(jìn)行編碼。目前已經(jīng)有以Scala及Clojure為代表的數(shù)十種語(yǔ)言運(yùn)行在JVM之上,但JVM卻繼續(xù)保持著自身的獨(dú)特地位。既然轉(zhuǎn)譯完全可行,我們?yōu)槭裁匆炎约哼^(guò)去的工作推倒重來(lái)?
熱門(mén):JavaScript MV*框架
冷門(mén):JavaScript文件
很久很久以前,每個(gè)人都學(xué)會(huì)了如何利用JavaScript編寫(xiě)警告彈窗或者檢查電子郵件地址當(dāng)中是否正確包含@符號(hào)。現(xiàn)在HTML AJAX應(yīng)用程序已經(jīng)變得如此復(fù)雜,幾乎沒(méi)有多少開(kāi)發(fā)人員會(huì)從零開(kāi)發(fā)進(jìn)行研究。最簡(jiǎn)單的辦法是選擇一套精心制作的框架,并利用一部分銜接代碼實(shí)現(xiàn)自己需要的獨(dú)特業(yè)務(wù)邏輯。目前這樣的框架非常豐富,其中包括Kendo、Sencha、jQuery Mobile、AngularJS、Ember、Backbone、Meteor JS等等——它們都能夠很好地幫助我們的Web應(yīng)用程序及網(wǎng)頁(yè)完成事件與內(nèi)容處理工作。
熱門(mén):CSS框架
冷門(mén):通用CSS樣式表
曾幾何時(shí),要向網(wǎng)頁(yè)當(dāng)中引入一點(diǎn)新鮮內(nèi)容意味著我們需要打開(kāi)CSS文件,并向其中添加類(lèi)似font-style:italic這樣的新命令。接下來(lái),大家要把忙活了一上午的工作成果保存在文件當(dāng)中,然后啟動(dòng)整個(gè)項(xiàng)目。時(shí)至今日,Web頁(yè)面已經(jīng)變得非常精致,我們幾乎不可能僅僅通過(guò)向某個(gè)文件中添加這類(lèi)簡(jiǎn)單命令來(lái)實(shí)現(xiàn)如此出色的效果。甚至僅僅調(diào)整一種顏色,所有內(nèi)容都會(huì)受到影響。這正像是專(zhuān)家們對(duì)于陰謀論及生態(tài)學(xué)的評(píng)述:環(huán)環(huán)相扣,所有組成部分之間都存在著關(guān)聯(lián)。
在這方面,CSS框架與SASS頗具相似之處,而且其表親Compass也已經(jīng)擁有堅(jiān)實(shí)的群眾基礎(chǔ)。它們通過(guò)提供編程結(jié)構(gòu)——例如實(shí)際變量、嵌套塊以及混合插件——吸引經(jīng)驗(yàn)老道的開(kāi)發(fā)人員為其提供穩(wěn)定的編碼成果。這種特性聽(tīng)起來(lái)在編程領(lǐng)域似乎并不新鮮,但在設(shè)計(jì)層面卻帶來(lái)實(shí)實(shí)在在的巨大飛躍。
熱門(mén):SVG與JavaScript攜手闖蕩Canvas
冷門(mén):Flash
多年以來(lái),F(xiàn)lash一直成為令開(kāi)發(fā)人員們抓狂的罪魁禍?zhǔn)祝囆g(shù)工作者卻對(duì)它所呈現(xiàn)出的結(jié)果非常滿(mǎn)意??逛忼X渲染效果相當(dāng)出色,而且很多才華橫溢的藝術(shù)家們也已經(jīng)利用Flash代碼創(chuàng)建出深層堆棧,從而實(shí)現(xiàn)復(fù)雜的轉(zhuǎn)換與動(dòng)畫(huà)成品。
現(xiàn)在JavaScript層已經(jīng)具備實(shí)現(xiàn)大部分同類(lèi)效果的能力,瀏覽器廠商與開(kāi)發(fā)人員也在額手相慶、同賀Flash時(shí)代的終結(jié)。他們發(fā)現(xiàn)由SVG(即可伸縮矢量圖形)等新型格式所帶來(lái)的DOM層在整合方面更具優(yōu)勢(shì)。SVG與HTML共同構(gòu)成一套規(guī)模龐大的標(biāo)簽集,而這通常更易于Web開(kāi)發(fā)人員使用。此外,另有大量API能夠?qū)anvas對(duì)象進(jìn)行精雕細(xì)琢,且通常都有利用到顯卡提供的強(qiáng)大性能支持。綜合這幾大因素,我們似乎已經(jīng)沒(méi)什么理由繼續(xù)堅(jiān)持Flash了。
熱門(mén):大數(shù)據(jù)(不涉及Hadoop的分析技術(shù))
冷門(mén):大數(shù)據(jù)(Hadoop)
每個(gè)人都希望成為同儕中的風(fēng)云人物,如果實(shí)在達(dá)不到這一高度,那么寧為雞口、不為牛后也是多數(shù)人民群眾的首要選擇。因此,我們一如意料地看到“大數(shù)據(jù)”一詞在各企業(yè)高管層風(fēng)靡之后,大部分***都傾向于尋求***、***勁的大數(shù)據(jù)系統(tǒng)——這種感覺(jué)似乎跟他們購(gòu)買(mǎi)游艇或者辦公大樓時(shí)非常相近。
有趣的是,其實(shí)大部分企業(yè)事務(wù)的規(guī)模都沒(méi)有大到必須使用高級(jí)大數(shù)據(jù)解決方案。當(dāng)然,像谷歌或者雅虎這類(lèi)努力追蹤所有用戶(hù)的網(wǎng)絡(luò)瀏覽記錄、需要處理PB甚至更高量級(jí)數(shù)據(jù)集的企業(yè)確實(shí)有必要做大做強(qiáng)。不過(guò)大多數(shù)公司都能夠?qū)?shù)據(jù)集簡(jiǎn)單保存在一臺(tái)常見(jiàn)PC機(jī)的內(nèi)存當(dāng)中。我目前使用的這臺(tái)電腦擁有16GB內(nèi)存——足以容納十億個(gè)容量正常的事件。而且對(duì)大多數(shù)算法而言,數(shù)據(jù)也沒(méi)必要一直盤(pán)踞在內(nèi)存當(dāng)中,使用SSD已經(jīng)完全足夠了。
我并不否認(rèn),某些企業(yè)可能需要一套由數(shù)十臺(tái)并行運(yùn)作的設(shè)備構(gòu)成Hadoop云體系,從而實(shí)現(xiàn)快速響應(yīng)。然而從普遍意義上講,大家只需要一臺(tái)設(shè)備就足以搞定這類(lèi)工作,還能夠由此省去各設(shè)備之間協(xié)調(diào)與溝通的麻煩。
#p#
熱門(mén):游戲框架
冷門(mén):本地游戲開(kāi)發(fā)
遙想當(dāng)年,游戲開(kāi)發(fā)意味著雇用大量開(kāi)發(fā)人員,讓他們從零開(kāi)發(fā)用C語(yǔ)言編寫(xiě)所有組件。當(dāng)然,盡管需要付出無(wú)數(shù)美刀作為開(kāi)發(fā)成本,但其最終效果也相當(dāng)令人滿(mǎn)意。不過(guò)如今已經(jīng)沒(méi)人能輕松負(fù)擔(dān)得起如此奢侈的定制化代碼了。大部分游戲開(kāi)發(fā)人員已經(jīng)收起了過(guò)去那種自豪感以及職業(yè)“操守”,開(kāi)始使用Unity、Corona或者LibGDX等代碼庫(kù)進(jìn)行系統(tǒng)創(chuàng)建。相較于C代碼,他們編寫(xiě)的大部分內(nèi)容都只是代碼庫(kù)指令。這樣說(shuō)來(lái),我們是否應(yīng)該為自己的游戲不再是“純手工打造”、而是大量重復(fù)使用同一套引擎而感到羞愧?其實(shí)沒(méi)必要這樣考慮問(wèn)題。請(qǐng)大家放松心態(tài),拋開(kāi)繁重的開(kāi)發(fā)工作之后、各位才能將注意力集中在游戲性、敘事方式、角色塑造以及藝術(shù)設(shè)計(jì)等方面。
熱門(mén):?jiǎn)雾?yè)面Web應(yīng)用
冷門(mén):網(wǎng)站
不知道大家是否還記得當(dāng)初那段URL指向Web頁(yè)面、Web頁(yè)面中又充斥著大量靜態(tài)文本與圖片的歲月。多么簡(jiǎn)潔、多么古樸,那時(shí)候我們會(huì)把這種由包含著信息的多個(gè)頁(yè)面所構(gòu)成的整體稱(chēng)為網(wǎng)站。新型Web應(yīng)用則屬于內(nèi)容豐富的大型數(shù)據(jù)庫(kù)的交互前端。當(dāng)Web應(yīng)用程序需要信息時(shí),它會(huì)從數(shù)據(jù)庫(kù)當(dāng)中直接提取并將其轉(zhuǎn)化為本地形式。我們不必再對(duì)數(shù)據(jù)加以修飾并以Web頁(yè)面的形式呈現(xiàn)出來(lái)。如今的數(shù)據(jù)層已經(jīng)完全獨(dú)立于表現(xiàn)與格式層之外。當(dāng)然,移動(dòng)計(jì)算的興起則是Web應(yīng)用升溫的另一大重要理由:?jiǎn)我磺医?jīng)過(guò)響應(yīng)式設(shè)計(jì)的Web頁(yè)面在使用感受上與傳統(tǒng)應(yīng)用程序非常相似——而且有效避免了用戶(hù)不斷訪問(wèn)應(yīng)用程序商店的麻煩。
熱門(mén):移動(dòng)Web應(yīng)用
冷門(mén):原生移動(dòng)應(yīng)用
舉例來(lái)說(shuō),如果大家已經(jīng)醞釀好了出色的移動(dòng)內(nèi)容設(shè)計(jì)方案,那么擺在面前的路有兩條:其一,大家可以針對(duì)iOS、Android、Windows 8甚至是BlackBerry OS乃至其它系統(tǒng)的各個(gè)版本進(jìn)行原生應(yīng)用開(kāi)發(fā)。毫無(wú)疑問(wèn),這意味著我們需要組織多個(gè)開(kāi)發(fā)團(tuán)隊(duì),而且各個(gè)團(tuán)隊(duì)之間使用的編程語(yǔ)言也有所不同。另外,我們還需要經(jīng)過(guò)各個(gè)平臺(tái)上應(yīng)用程序商店的審核,***才能把應(yīng)用成果交付到用戶(hù)手中。其二,大家可以直接創(chuàng)建一款HTML應(yīng)用并將其直接放在網(wǎng)站上,這樣所有平臺(tái)就都可以直接使用了。如果需要對(duì)應(yīng)用作出修改,我們也無(wú)需再跟應(yīng)用商店打交道、祈禱他們能快點(diǎn)通過(guò)bug修復(fù)審核。如今HTML層的處理速度明顯加快,移動(dòng)設(shè)備的處理芯片也愈發(fā)強(qiáng)勁,因此HTML應(yīng)用甚至足以與復(fù)雜的交互式應(yīng)用程序相抗衡。
熱門(mén):Android
冷門(mén):iOS
就在幾年之前,蘋(píng)果直營(yíng)店門(mén)前還排著長(zhǎng)長(zhǎng)的消費(fèi)者長(zhǎng)龍。但時(shí)至今日,情況已經(jīng)有所轉(zhuǎn)變。盡管iPhone與iPad仍然受到愛(ài)好者們的堅(jiān)定擁護(hù),蘋(píng)果設(shè)備所提供的豐富精巧的用戶(hù)界面居于領(lǐng)先位置,但Android設(shè)備的原始銷(xiāo)量卻一路扶搖直上。某些報(bào)告甚至指出,全球智能手機(jī)總銷(xiāo)量當(dāng)中有超過(guò)七成都屬于Android。
理由也許很簡(jiǎn)單——這就是價(jià)格因素。在iOS設(shè)備繼續(xù)保持高價(jià)的同時(shí),Android世界已經(jīng)涌現(xiàn)出一波又一波廉價(jià)狂潮——不少***競(jìng)爭(zhēng)力的平板設(shè)備在價(jià)格上僅為iPad的五分之一。省錢(qián)永遠(yuǎn)是一種誘惑,令人無(wú)法抗拒。
除此之外,開(kāi)源也是Android逐步崛起的重要理由。任何一家廠商都有機(jī)會(huì)在市場(chǎng)上一試身手——而這也確實(shí)吸引到了眾多廠商的參與。如今我們看到的Android平板設(shè)備有大有小,甚至出現(xiàn)了采用Android操作系統(tǒng)的照相機(jī)乃至冰箱。誰(shuí)也不需要得到谷歌的批準(zhǔn)之后再行創(chuàng)新。如果他們有了好主意,完全可以直接放手實(shí)施。
熱門(mén):GPU
冷門(mén):CPU
當(dāng)軟件結(jié)構(gòu)簡(jiǎn)單而指令又被有序整理起來(lái)時(shí),CPU無(wú)疑堪稱(chēng)計(jì)算機(jī)上足以承擔(dān)一切重任的至高王者。然而當(dāng)下視頻游戲當(dāng)中充斥著大量能夠并行運(yùn)行的圖形程序,而這一切都是顯卡施展身手的***舞臺(tái)。我們花上五百或者六百美元就能輕松買(mǎi)到一塊相當(dāng)強(qiáng)勁的顯卡,不少游戲發(fā)燒友甚至?xí)瑫r(shí)使用多塊顯卡——這使得他們的臺(tái)式機(jī)在價(jià)格上比普通臺(tái)式機(jī)高出一倍有余。當(dāng)然,玩家并不是GPU崛起的惟一推動(dòng)力。計(jì)算機(jī)科學(xué)家們現(xiàn)在也能夠?qū)⒋罅坎⑿袘?yīng)用程序交給GPU打理,并獲得高達(dá)數(shù)百倍的處理速度提升。
熱門(mén):GitHub
冷門(mén):簡(jiǎn)歷
沒(méi)錯(cuò),大家可以通過(guò)閱讀積累并學(xué)習(xí)寶貴的知識(shí)與技能,包括國(guó)際象棋俱樂(lè)部提供的高階戰(zhàn)術(shù)指南。不過(guò)參考他人的代碼成果更能豐富我們的儲(chǔ)備,也能給自己的工作帶來(lái)不少啟發(fā)。他們編寫(xiě)的注釋是否準(zhǔn)確有效?他們有沒(méi)有浪費(fèi)大量時(shí)間把工作內(nèi)容加以拆分、實(shí)際效果卻不盡人意?某種架構(gòu)是否還有擴(kuò)展的空間?這些問(wèn)題都能夠在查閱某些代碼的過(guò)程中找到答案。
有鑒于此,如今參與開(kāi)源項(xiàng)目已經(jīng)成為我們尋找工作時(shí)愈發(fā)重要的一項(xiàng)參考指標(biāo)。從專(zhuān)有項(xiàng)目中獲取代碼共享非常困難,但開(kāi)源代碼則隨處可見(jiàn),因此充分利用才是明智之舉。
熱門(mén):租賃
冷門(mén):購(gòu)買(mǎi)
當(dāng)Amazon在黑色星期五以令人心動(dòng)的折扣推銷(xiāo)計(jì)算機(jī)及其它電子產(chǎn)品時(shí),企業(yè)用戶(hù)往往忘記了同樣由該公司提供的更具性?xún)r(jià)比的方案——云服務(wù)。也許目前還不成熟,但請(qǐng)?jiān)俳o他們一點(diǎn)時(shí)間。就在不久之前,企業(yè)還需要建立自己的數(shù)據(jù)中心并聘請(qǐng)專(zhuān)門(mén)的工作人員來(lái)打理這些全價(jià)買(mǎi)進(jìn)的計(jì)算設(shè)備。時(shí)至今日,很多企業(yè)已經(jīng)習(xí)慣于租用計(jì)算機(jī)、數(shù)據(jù)中心、工作人員甚至按小時(shí)計(jì)費(fèi)使用業(yè)務(wù)軟件。所有權(quán)會(huì)帶來(lái)麻煩,沒(méi)人喜歡麻煩。這是個(gè)好主意,除非服務(wù)供應(yīng)商的網(wǎng)站感染了病毒或者我們意識(shí)到自己需要為網(wǎng)站的每一次點(diǎn)擊付費(fèi)?,F(xiàn)在只要Amazon能夠找到一種更為便利的云服務(wù)交付辦法,那么使用云方案的趨勢(shì)還將進(jìn)一步升溫。
#p#
熱門(mén):Web接口
冷門(mén):IDE
很久以前,人們使用命令行編譯器。這時(shí)有些技術(shù)人員想到利用一套編輯器外加其它工具來(lái)構(gòu)建起IDE?,F(xiàn)在IDE也開(kāi)始黯然失色,取而代之的則是歸屬于工作系統(tǒng)、基于瀏覽器的開(kāi)發(fā)工具——允許我們?cè)谄渲羞M(jìn)行代碼編輯。如果大家不喜歡WordPress的工作方式,其中內(nèi)置的編輯器允許我們通過(guò)修改調(diào)整其各個(gè)方面的實(shí)際表現(xiàn)。微軟的Azure允許我們直接在其門(mén)戶(hù)頁(yè)面當(dāng)中編寫(xiě)JavaScript膠水代碼。這些系統(tǒng)所提供的調(diào)試環(huán)境都不太理想,而且編輯生產(chǎn)代碼也可能帶來(lái)潛在風(fēng)險(xiǎn),不過(guò)我們?nèi)匀灰獮檫@種思維方式拍手叫好。
熱門(mén):Node.js
冷門(mén):JavaEE、Ruby on Rails、PHP
服務(wù)器領(lǐng)域一直推崇那種容錯(cuò)性較強(qiáng)的線程模型,從而使得操作系統(tǒng)能夠容忍程序員們帶來(lái)的任何自以為是、效率低下或者不符合規(guī)則的處理活動(dòng)。無(wú)論是愚蠢的循環(huán)還是對(duì)資源的赤裸裸浪費(fèi),程序員們的編碼失誤總能被操作系統(tǒng)以切換線程的方式加以平衡、從而提供相對(duì)穩(wěn)定的性能表現(xiàn)。
然而Node.js攜JavaScript編程回調(diào)模式而來(lái),從而使得代碼運(yùn)行變得極為迅捷——其實(shí)際速度甚至超出任何一位開(kāi)發(fā)人員的期望,畢竟這種語(yǔ)言最初只是為了編寫(xiě)警示對(duì)話框。幾乎在一夜之間,創(chuàng)建新線程的成本變得愈發(fā)明顯,而Node.js也因此而一飛沖天。一旦程序員們不守規(guī)矩,問(wèn)題將立即出現(xiàn),但這種嚴(yán)酷的狀況在很大程度上反而能夠促進(jìn)他們的自我要求與工作表現(xiàn)。當(dāng)資源限制比較顯著時(shí),程序員們通常能夠更快地完成代碼開(kāi)發(fā)。
Node.js也充分利用了瀏覽器與服務(wù)器之間的和諧關(guān)系。同樣的代碼內(nèi)容使其開(kāi)發(fā)人員能夠輕松實(shí)現(xiàn)特性的遷移與功能的復(fù)制。其結(jié)果是,目前Node.js已經(jīng)成為互聯(lián)網(wǎng)上最為熱門(mén)的堆棧方案。
熱門(mén):黑客空間
冷門(mén):高等院校
一邊四年學(xué)費(fèi)要二十五萬(wàn)美元,另一邊每個(gè)月只需五十塊美刀——提前支付還能享受更多優(yōu)惠。一邊付出的高昂學(xué)費(fèi)只是為了支付足球場(chǎng)使用費(fèi)、華麗的宿舍、給領(lǐng)導(dǎo)視察專(zhuān)用的禮堂以及印刷課本。而另一邊我們的支出卻被用于購(gòu)置3D打印機(jī)、示波器以及電烙鐵等真正實(shí)用的技術(shù)裝備。
黑客空間在努力培養(yǎng)創(chuàng)新精神的同時(shí),也幫我們省下了大學(xué)園區(qū)中那高得離譜的日常開(kāi)銷(xiāo)。他們所創(chuàng)建起的社交網(wǎng)絡(luò)已經(jīng)成為新興企業(yè)及知識(shí)財(cái)富的孕育溫床,而且絕不存在那些可怕的官僚作風(fēng)與愚蠢的個(gè)人要求。課程并不需要持續(xù)一整個(gè)學(xué)期,沉重也不需要在真正開(kāi)始學(xué)習(xí)之前先到學(xué)生會(huì)里搞什么競(jìng)選。面對(duì)當(dāng)下這個(gè)迅速發(fā)展的技術(shù)世界,專(zhuān)攻型學(xué)習(xí)流程已經(jīng)開(kāi)始證明自身的寶貴價(jià)值。