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