未來編程的十一個預測,看得好心慌

未來編程的十一個預測,看得好心慌

文丨Peter Wayner

本文是對未來編程的發展趨勢提出了十一個預言,包括雲、物聯網、影片、機器學習、法律問題、容器等各個方面。

技術的進步日新月異。午飯剛吃飯,一位從事晶片設計的朋友就會為自己請求寬恕:摩爾定律要求他必須每周讓晶片的速度提高0.67%,即使是在假期。如果達不到這個要求,那麼晶片的速度就不會每兩年翻一番。

為了能在將來打下基礎,現在需要對未來的技術方向做出預判。但是,從物聯網日趨嚴峻的安全問題到遍地可見的機器學習,編程的未來變得越來越難以預測。

雲將擊敗摩爾定律

有的人認為晶片速度的發展不會再像八九十年代那樣每兩年翻一番了。雖然,這很有可能,但是,卻不重要,因為晶片之間的界限變得越來越模糊。

在以前,桌面CPU的速度很重要,每隔幾年就要重新購買一個更快的CPU才能提高工作效率。而現在,大部分的工作都可以在雲上面完成。當你在使用Google搜尋時,Google公司龐大的雲端可能會投入10台、20台,甚至1000台主機為你尋找正確的答案。

工程師目前面臨的挑戰是如何為每個用戶部署性能足夠的計算能力,讓用戶能夠快速完成計算,而不是讓用戶等的時間太久,以致於閒的逃到其他競爭對手的網站上去。提供雲服務的公司能為你解決計算密集型問題,但是你自己必須去尋找並行計算算法讓服務器協同工作。

物聯網(IoT)的安全性讓人憂心忡忡

Mirai病毒的出現給物聯網的發展敲響了警鐘,這些聰明的小設備也會像普通計算機一樣感染病毒。目前並沒有一個有效的機制來修復這些設備的漏洞。我們的煙霧探測器、烤箱、烘幹機,以及房子裡的一切,他們的的軟體未必都是最新的,未必安裝了所有的安全補丁。設備數量的增加使得監控家庭網路的智能化變得更加困難,因為你無法分辨出連接到家庭路由器上的所有設備。

物聯網平台的開放性能讓設備具有更大的靈活性,但是也為病毒開發者提供了更多的機會。他們需要做的就是找一個存在漏洞的小設備,然後就能黑進成千上萬個同樣的設備中去了。

影片將以新的方式主宰網路

當HTML標準委員會將影片標籤加入HTML標準時,他們可能只是為了解決插件帶來的問題,而並沒有想到要重新定義娛樂。在過去,大多數影片是被動消費的。人們坐在沙發上,按下播放按鈕,由影片的作者來決定觀眾能看到什麼。

JavaScript對影片的控制是有限的,但是聰明的網頁設計師們正在設計一種巧妙的方法,這種方法可以將影片與網頁有機地整合在一起,使得用戶可以與影片進行交互,控制故事的發展。但是作家、藝術家和編輯們的想法需要編程人員來做到。

控制台將繼續取代電腦

人們都喜歡遊戲機,遊戲機有著強大的顯卡和穩定的軟體平台,讓我們能在客廳釋放壓力,在遊戲中鋤強扶弱,或者是踢足球。

客廳控制台只是開始,房子的其餘部分的製造商們也可以遵循類似的路線向前發展。製造商可以選擇一個開源的生態系統,但他們目前卻在建立屬於自己的封閉平台。封閉的平台會破壞市場,可能造成一個開關能控制這個燈,卻不能控制另外一個。對於工程師來說,這減少了代碼重用的機會,使得他們的工作量大大增加。

數據將繼續稱王稱霸

在2016年的美國總統大選之後,一些人開始嘲笑數據分析專家,稱他們的分析統計是一種愚蠢的行為,大數據也是毫無用處的,因為專家們對總統選舉的結果預測錯了。那他們是如何得出這個結論的呢?通過將一組數字(預測)與另一組數字(選舉結果)進行比較。其實,他們這時候就是在用數據分析。

人們可能會根據不完美的數據做出錯誤的預測,但這並不意味著我們應該停止收集和分析數據。數據的收集、整理和分析是當今企業最重要的工作之一。工程師將繼續提供更多、更容易理解的數據給決策者使用。但這並不意味著決策肯定是完美的,因為決策者的知識背景和直覺也會影響最終決策。這對於工程師來說需要更加努力地工作,構建更大、更快、更多的數據密集型軟體。

機器學習將成為新的標準功能

當大學生們在學習「數據結構」這門課時,他們了解到祖父母們以前寫代碼的時候是無法依賴一個名為「數據庫」的東西的。真正的工程師必須脫離Oracle、MySQL或MongoDB而對數據進行存儲、排序,以及關聯數據。

機器學習算法在最近這幾年得到了突破性的發展,過去,工程師需要自己編寫大量的代碼來執行複雜的分析,但是,像R語言這樣的商業智能工具逐漸流行起來,並開始成為一些軟體的基本功能。

機器學習算法不會在一夜之間發生翻天覆地的變化,目前我也不清楚它的未來會是什麼樣子,但是很明顯,越來越多的商業計劃依賴於機器學習算法來找到最佳的解決方案。

隨著個人電腦的衰退,UI設計將變得更加複雜

在智慧型手機、客廳控制台和平板電腦崛起的時候,唯一仍然堅持使用個人電腦的人是上班族和需要交作業的學生。

以前,工程師在製作UI的時候可以假設軟體或網站用戶都有一個鍵盤和一個滑鼠。但是現在很多用戶卻沒有鍵盤或者滑鼠。智慧型手機用戶用手指觸摸一塊幾乎無法容納完整的26個字母的玻璃螢幕,而控制台用戶正在按遙控器上的方向鍵。

由於觸摸事件與點擊事件略有不同,因此,設計一個網站會更加棘手。用戶螢幕的分辨率各不相同,螢幕尺寸也差異很大。在將來,UI設計只會變得更加麻煩。

開放性的終結

個人電腦在逐步走向衰退,這也是一個開放而又深受歡迎的市場在走向死亡。

PC的開發人員可以自由地寫程序,編譯代碼,將其復制到磁盤上,然後將這些磁盤打包,向全世界的人銷售。而現在,家庭控制台被牢牢地管控著。沒有資本投資,就沒有人能夠進入這個市場。應用商店雖然開放,但它們仍然是一座有著圍牆的花園,限制我們能做什麼,不能做什麼。

我們正在失去共享代碼的能力,因為我們正在失去編譯和運行代碼的能力。PC的終結是開放性終結的其中一個重要的方面。雖然對於現在來說,大多數讀者可能還是會有一台可以編譯和運行代碼的桌面電腦的,但這正在慢慢的發生變化,能夠編寫並分享代碼的人將越來越少。

自主交通就在這裡

這不單單是指汽車,一些人想要製造不需要道路的自主飛機,而另一些人想要製造適合簡單旅行的自主滑板。

工程師不會控制人們在螢幕上看到的內容,但是能控制人們去哪裡,以及如何與世界進行交互。人只是遊戲的一部分。所有的東西都會自主移動。

如果你想要吃市中心的某個著名廚師做的食物,那麼一個帶有保溫功能的自主滑板會把食物帶到你家裡。如果您想要割草,自主割草機將取代鄰居家的小孩。

法律會發現新的限制

幾年前,最高法院認為對車輛進行跟蹤需要有相關的授權,因為當時只有警察會在汽車裡裝配跟蹤器。現在,沒有人真的知道哪條規定適用於獲取Waze、Google或者其他應用程序的跟蹤數據,而這些數據包含了我們的位置信息。警察偽造文件或密碼合法嗎?如果目標是真正的恐怖分子,或者僅僅是在停車點停車太久而沒有及時付費的普通人呢?

這是開發者未來幾年的一大難題。軟體架構師需要在設計軟體地時候提前考慮這些法律問題。在編寫任何代碼之前,他們需要考慮隱私和法律的問題。如果不這樣做,開發者在以後可能會遇到麻煩。

同時,代碼本身就是法律的一個版本。工程師定義軟體什麼可以做什麼不可以做。在我們編寫代碼時,我們實際上定義了世界的某個角落的自由和限制。

容器將占統治地位

理論上我們不需要容器。可執行文件用來運行,操作系統負責權限管理和資源調度,以便讓所有的可執行文件可以和平共處。但是,這個夢想的破碎比以往任何時候都要快。可以和平共處的程序逐漸變少,許多程序依賴於各種不同版本的庫或其他特殊的環境。即使有「隨處可以運行」的技術,例如Java,但也可能會遇到麻煩,因為有各種不同版本的虛擬機。

好的VM可以解決這個問題,但是它們很龐大。容器是輕量級的,易於使用,因此大家都喜歡。我們將在企業的各個角落看到越來越多的容器,因為他們的魅力實在太大了。

未來編程的十一個預測,看得好心慌