關(guān)于未來編程發(fā)展趨勢的九大預(yù)測
譯文【51CTO.com快譯】一部分科學(xué)家認(rèn)為時間一直在以恒定的速率向未來推移,但也有更為睿智的人們覺得在接近光速的條件下,我們熟悉的一切都將發(fā)生改變。不過這一切都無法解釋技術(shù)世界近年來面對的快速變化趨勢。這種變化每時每刻都在加快,而我們似乎拼盡全力也難以趕上。
如果大家希望弄清自己該把開發(fā)工作的賭注押在哪項趨勢身上,那么著眼于未來五年,這更像是一項撞大運(yùn)的任務(wù)——而非真正的技術(shù)活兒。對高科技的未來前景做出預(yù)測幾乎是不可能的,而創(chuàng)新造成的影響也讓一切技能與工具在解決這個問題時都變得非常無力。不過其發(fā)展腳步偶爾也會顯露端倪,讓我們從目前的技術(shù)場景龜殼當(dāng)中搖出幾個銅錢,從而透過迷霧預(yù)見編程領(lǐng)域的未來曙光。
在這里,我們整理出了一份關(guān)于編程行業(yè)未來發(fā)展趨勢的預(yù)測清單,其主要立足于當(dāng)下已然出現(xiàn)的變革跡象。當(dāng)然,我們無法保證每項猜測都百分之百準(zhǔn)確:事實(shí)上,也沒人能做到這一點(diǎn)。其中大部分趨勢將在未來幾年中逐步顯現(xiàn),而且可以作為一種發(fā)展路線圖以指導(dǎo)我們搶先一步為未來做好規(guī)劃。
預(yù)測一號:REST將統(tǒng)治物聯(lián)網(wǎng)——至少在起步階段
REST協(xié)議已經(jīng)在Web領(lǐng)域擁有多年統(tǒng)治地位,并將隨著恒溫器、門鎖以及廚房裝飾品等小物件接入互聯(lián)網(wǎng)并作為數(shù)據(jù)包交換對象存在而進(jìn)一步鞏固其重要作用。畢竟除了REST,這些小東西不太可能采用SCSI、USB或者SATA等其它對接方式,對吧?
其理由也顯而易見。程序員們熱愛REST的簡單特性。歸功于其基礎(chǔ)架構(gòu),REST易于理解且能夠相對簡單地進(jìn)行調(diào)試。我們幾乎可以對以文本格式存在的全部數(shù)據(jù)進(jìn)行查看,并輕松了解各裝置的當(dāng)前運(yùn)行狀態(tài)。毫無疑問,各類新型安保攝像頭、微波爐或者旋轉(zhuǎn)型燙發(fā)器都將由Nginx負(fù)責(zé)控制并運(yùn)行在端口80之上,并利用HTML與CSS報告與之相關(guān)的全部信息。
預(yù)測二號:二進(jìn)制協(xié)議將再度崛起
在JSON軟件包中利用REST協(xié)議進(jìn)行數(shù)據(jù)的往來傳遞確實(shí)非常簡單,至少相較于傳統(tǒng)XML數(shù)據(jù)及其90%的標(biāo)簽載荷而言是如此,但也有一些追求終極高效目標(biāo)的程序員更傾向于直接使用二進(jìn)制數(shù)據(jù)字符串,從而保證其能夠直接通過JSON正確顯示。畢竟另一端要做的也無非是解析字符串再將其以字節(jié)方式發(fā)送回來。那么為什么不干脆直接發(fā)送字節(jié)呢——特別是物聯(lián)網(wǎng)在每次通信時只需要傳輸極小量數(shù)據(jù)字節(jié)的情況下?
開發(fā)更多二進(jìn)制協(xié)議將是一個艱難的過程。HTTP標(biāo)準(zhǔn)似乎天然為文本而生。很多程序員在使用專有型二進(jìn)制協(xié)議時碰了一鼻子灰,因?yàn)樗鼈冎荒苡蓪iT的庫進(jìn)行解包,而且有時候根本達(dá)不到預(yù)期的效果。JSON與REST的開放性已經(jīng)使其全面勝出,但這并不是說以開放方式實(shí)現(xiàn)的二進(jìn)制協(xié)議就不能作為開放標(biāo)準(zhǔn)存在。物聯(lián)網(wǎng)將生成前所未有的龐大數(shù)據(jù)總量,而很多設(shè)備將使用大量小規(guī)模數(shù)據(jù)包并要求這些數(shù)據(jù)包采取緊湊的編碼形式。即使性能表現(xiàn)如此重要,程序員們必須要想辦法尋求更多二進(jìn)制方案來實(shí)現(xiàn)數(shù)據(jù)包的傳輸。
預(yù)測三號:視頻令HTML失去生存空間
曾幾何時,我們在網(wǎng)上沖浪、在不同網(wǎng)站之間往來跳轉(zhuǎn)、瀏覽大量文本并點(diǎn)擊無數(shù)超鏈接以獲取更多詳盡內(nèi)容。但如今,我們更傾向于拿出數(shù)小時甚至數(shù)天來觀看視頻內(nèi)容,躺在沙發(fā)上昏昏沉沉并在不知不覺中等待其播放完畢。即使是在抄起鍵盤的時候,我們實(shí)際要做的也只是在搜索框中輸入“第x季”并等待Netflix返回正確的結(jié)果。互聯(lián)網(wǎng)正在演變成由電視節(jié)目以及視頻流所構(gòu)成的新形式,其取代了以往枯燥的文本顯示形式并源源不斷涌來,允許我們在觀看的同時走神甚至不慎睡上一覺兒。
事實(shí)上,甚至有一部分人認(rèn)為互聯(lián)網(wǎng)將徹底令電視失去用武之地。人們更樂于通過某些網(wǎng)站觀看電視節(jié)目片段。說實(shí)話,我就不知道《周六夜現(xiàn)場》這檔長壽的娛樂節(jié)目現(xiàn)在到底是在每周六晚播放,抑或變成了定期舉辦的一場現(xiàn)場狂歡——不過我很清楚的是,劇集中的每段內(nèi)容都在網(wǎng)上提供單獨(dú)的剪輯選項。經(jīng)典的開場獨(dú)白是否還在?是否仍設(shè)有嘉賓主持?誰知道呢,反正我們只挑自己喜歡的部分看。
不過總結(jié)來講,除了觀看實(shí)時體育賽事之外,電視和客廳對于我們幾乎完全失去了吸引力。只需點(diǎn)一點(diǎn),我們就能得到全部想要的結(jié)果。也許下一代視頻應(yīng)用程序?qū)⒃黾有碌膬?nèi)容篩選層,并對現(xiàn)有工具做出進(jìn)一步改善。Flash的消亡與HTML 5的崛起可能讓視頻剪輯同HTML之間的結(jié)合變成現(xiàn)實(shí)。也許程序員們可以利用這些機(jī)會拿出更加激動人心的成果。不過在此之前,用戶仍將像祖父母那代人一樣正常觀看電視節(jié)目——只不過視頻來源由BBC或者PBS等國家級廣播公司變成了互聯(lián)網(wǎng)流媒體巨頭。
預(yù)測四號:智能手機(jī)能實(shí)現(xiàn)一切——但就是不能打電話
人們還會通過智能手機(jī)進(jìn)行呼叫嗎?我們發(fā)送短信、閱讀郵件、瀏覽網(wǎng)站——但這一切還僅僅是開始。這塊小小的矩形屏幕已經(jīng)徹底改變了我們過去幾十年中逐漸養(yǎng)成的生活習(xí)慣,而一切變更都非常有趣。我們開始為手機(jī)上的麥克風(fēng)、攝像頭以及加速度計等各類傳感裝置找到極為巧妙的用途,這意味著任何業(yè)務(wù)或者習(xí)慣都有可能因此遭到顛覆。
大家不妨想想原先我們需要將病癥狀況交給醫(yī)生,然后在辦公室外坐等好幾個小時。目前正有數(shù)以百計的初創(chuàng)企業(yè)正尋找辦法將智能手機(jī)同醫(yī)療設(shè)備相對接。麥克風(fēng)可以用于測量心率,攝像頭能夠探查我們喉嚨部位的狀況,加速度計則可以追蹤我們的鍛煉情況。所有這一切都將以數(shù)據(jù)的形式與云端對接,保證醫(yī)生可以通過這些信息了解到我們的生活習(xí)慣以及現(xiàn)有病癥。
是的,下一代智能設(shè)備將把這一切視為基礎(chǔ)性功能。導(dǎo)航應(yīng)用除了進(jìn)行路線定制與規(guī)劃之外,還能夠完成其它多種任務(wù),包括控制汽車。鍛煉追蹤應(yīng)用則成為一類能夠追蹤我們身體全部健康狀況的工具——從睡眠到工作皆涵蓋其中。另外,有些廠商可能還會開發(fā)出一些新的好玩應(yīng)用,從而幫助我們以更具樂趣的方式進(jìn)行電話呼叫。
預(yù)測五:更大、更好的數(shù)據(jù)庫將主宰一切
誠然,搜索引擎的主要功能在于檢索網(wǎng)頁,但現(xiàn)在已經(jīng)出現(xiàn)了能夠直接檢索整個世界的數(shù)據(jù)庫——這要?dú)w功于日益發(fā)展的新一代位置識別應(yīng)用與自動駕駛汽車。Waze等應(yīng)用能夠追蹤其全部用戶的動向,為開發(fā)商及用戶提供世界范疇內(nèi)的當(dāng)前地圖,而不必再勞煩現(xiàn)場工作人員瞇著眼睛用什么激光測距工具制圖或者根據(jù)航拍照片進(jìn)行繪制。如果某條道路遭遇交通堵塞,他們會立刻得到消息。如果一頭牛賴在道中間不肯挪動,他們會立刻得到消息。如果土木工程師完成了一條新道路的建造,那么人們也能馬上知悉此事。
由數(shù)據(jù)庫提供的如此詳盡的細(xì)節(jié)信息確實(shí)令人驚嘆。舉例來說,自動駕駛汽車將需要了解路燈、自動售報機(jī)以及各消防栓的具體位置,同時做好準(zhǔn)備駛上極少有人知曉的路段以避開交通擁堵。這些數(shù)據(jù)當(dāng)中充滿了值得探究的可能性,其遠(yuǎn)遠(yuǎn)超出了自動駕駛汽車本身。城市規(guī)劃者將能夠隨時調(diào)控交通流量以提升出行效率,而路燈也將自行上報當(dāng)前狀況以降低維護(hù)成本。是的,警方也能夠掌握大量行人數(shù)據(jù)從而快速對緊急事件做出響應(yīng)。
在不久的未來,我們的數(shù)據(jù)庫將能夠記錄全國范圍內(nèi)每個坑洼的具體位置。那么城市能否解決數(shù)量如此眾多的問題?對于我們這代人來說可能比較難,但機(jī)器人已經(jīng)出現(xiàn)在了可以預(yù)見的未來,到時候交給它們處理即可。
預(yù)測六號:JavaScript仍將廣泛存在,但人們不再進(jìn)行“JS編程”
如果我們不編寫JavaScript代碼,那么這項工作該由誰來完成?轉(zhuǎn)碼機(jī)器人,它們負(fù)責(zé)這項任務(wù)。我們可以利用自己熟悉的任何編程語言編寫代碼,而轉(zhuǎn)碼機(jī)器人將能夠把它們轉(zhuǎn)化為瀏覽器或者Node.js能夠理解的內(nèi)容。目前GitHub上已經(jīng)開始有越來越多的代碼無法以不經(jīng)編譯的方式執(zhí)行。
在這方面,受影響最深的當(dāng)數(shù)“方言”眾多的編程語言,例如CoffeeScript——這類代碼過去往往會給其他程序員帶來嚴(yán)重困擾。目前CoffeeScript的衍生版本多達(dá)幾十種,其中包括Coco、IcedCoffeeScript以及CoffeeScript II:可汗之怒~但這一切還僅僅是開始,聰明的程序員們已經(jīng)編寫出更多面向各類編程語言的轉(zhuǎn)碼方案,包括Cobol、Java、Lisp以及C等等。它們都能夠在經(jīng)過翻譯以及旨在實(shí)現(xiàn)快速交付與解析的優(yōu)化過程之后直接運(yùn)行在我們的瀏覽器當(dāng)中。如果大家能夠利用自己最熟悉的語言編寫程序,并由機(jī)器人管家對其進(jìn)行翻譯,那又何必非要使用JavaScript作為編程手段呢?
預(yù)測七號:PHP將卷土重來以對抗Node.js
……不過遺留下來的傳統(tǒng)應(yīng)用還是需要進(jìn)行重新編寫。幾年之前,PHP幾乎完全無法在服務(wù)器領(lǐng)域與Node.js乃至JavaScript相匹敵。目前這種狀況也許仍然存在,不過PHP接下來很可能卷土重來。PHP 7以及HipHop虛擬機(jī)等剛剛推出的最新工具版本都能夠提供令人印象深刻的性能表現(xiàn)??紤]到這一點(diǎn),WordPress以及Drupal等代碼庫在運(yùn)行速度上很可能提升30%、40%、50%甚至是100%。
但這并不會改變JavaScript在各類項目當(dāng)中的優(yōu)勢地位,例如其能夠確保同樣的代碼順利運(yùn)行在瀏覽器以及服務(wù)器之上,但這確實(shí)能夠讓一部分出于性能考量而放棄PHP并投入Node.js懷抱的開發(fā)人員回心轉(zhuǎn)意。這些陳舊平臺也許真能在未來煥發(fā)新的生機(jī)。
預(yù)測八號:每個人都能夠編程——只不過很少有人編寫“真正的代碼”
教育項目的大量普及旨在教會每個人如何編寫軟件。2014年12月8日,美國總統(tǒng)奧巴馬從維護(hù)中東局勢以及打擊恐怖主義的繁忙公務(wù)當(dāng)中抽出了一個小時,學(xué)習(xí)了如何編寫一行代碼。也許他由此積累到的技術(shù)能力可以幫助其“奧巴馬醫(yī)改”網(wǎng)站運(yùn)行得更加順暢?
我們確實(shí)應(yīng)當(dāng)重視編程教學(xué)工作,說不定哪天我們養(yǎng)的小狗或者鸚鵡都能學(xué)會軟件開發(fā)。而對于真正的程序員們,最好的辦法就是報以微笑與鼓勵。新生代當(dāng)中越多人了解編程,就會有越多人深刻意識到打理這些數(shù)字、API以及其它任何相關(guān)元素的難度所在。像奧巴馬總統(tǒng)那樣編寫一行象征性的代碼當(dāng)然很簡單,可要以同樣的方式構(gòu)建起一套由上億行代碼構(gòu)成的完整系統(tǒng)則極為困難——相信每位對編程有所了解的人都能意識到這一點(diǎn)。
也許其中會有一些人真正掌握了語言及開發(fā)技能,但相信絕大多數(shù)人都會扯著自己的頭發(fā)陷入深深的絕望。任何人都能夠?qū)懗鲆惶籽h(huán),但只有極少數(shù)人能夠根據(jù)需求選擇合適的循環(huán)。每個人都能把木料鋸開,但只有木匠才能做出漂亮的家具并建起堅固的住房。
預(yù)測九號:準(zhǔn)備好迎接新的折磨
那時候全民編程培訓(xùn)已經(jīng)實(shí)現(xiàn),而這些拿出幾個小時弄明白了一丁點(diǎn)編程原理的家伙開始插手我們的日常工作了。
“你是打算在這兒用變量嗎?”老板走過來插言。“你覺得用常量是不是更合適?你是不是打算在這里用循環(huán)?”
這時候各位程序員兄弟姐妹們只要微笑,微笑就好。
原文標(biāo)題:9 predictions for the future of programming
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】