新聞資訊
行業(yè)資訊
大數(shù)據(jù)的發(fā)展,伴隨的將是軟件工程師的漸退,算法工程師的崛起
2017-05-05 14:14:35
摘要:大數(shù)據(jù)在人類(lèi)歷史長(zhǎng)河的各個(gè)時(shí)期一直存在著,只是要等到技術(shù)發(fā)展到一定階段,它才開(kāi)始嶄露頭角。而它的未來(lái)又在哪里?來(lái)自 Intercom 的工程師 Cathal Horan 表達(dá)了他對(duì)大數(shù)據(jù)的看法,他認(rèn)為,未來(lái)屬于算法,而不是代碼。
  大數(shù)據(jù)在人類(lèi)歷史長(zhǎng)河的各個(gè)時(shí)期一直存在著,只是要等到技術(shù)發(fā)展到一定階段,它才開(kāi)始嶄露頭角。而它的未來(lái)又在哪里?來(lái)自 Intercom 的工程師 Cathal Horan 表達(dá)了他對(duì)大數(shù)據(jù)的看法,他認(rèn)為,未來(lái)屬于算法,而不是代碼。
大數(shù)據(jù)的發(fā)展,伴隨的將是軟件工程師的漸退,算法工程師的崛起
  “大數(shù)據(jù)時(shí)代”的稱(chēng)號(hào)并不能為當(dāng)今世界所獨(dú)享,數(shù)據(jù)充斥著人類(lèi)文明歷史長(zhǎng)河的各個(gè)時(shí)期。縱觀這些歷史時(shí)期,通過(guò)從離散到抽象的轉(zhuǎn)換,我們就會(huì)明白為什么算法比代碼重要。   說(shuō)到大數(shù)據(jù)……   如果我們把整個(gè)人類(lèi)歷史看成一天,那么我們只能從晚上 11 點(diǎn) 7 分開(kāi)始說(shuō)起。這是安靜的一天。但是在隨后的一丁點(diǎn)時(shí)間里,我們積攢了很多知識(shí)和故事,并打算將它們傳達(dá)給其他人。你可以想象最開(kāi)始人類(lèi)通過(guò)對(duì)話的形式將知識(shí)代代相傳,從父輩傳給子輩,從老師傳給學(xué)生。但是整個(gè)社會(huì)的知識(shí)量增長(zhǎng)迅速,以至于最初的對(duì)話形式無(wú)法傳達(dá)這么多的信息。   我們需要將這些信息編撰成冊(cè)進(jìn)行保存和傳播。通過(guò)書(shū)寫(xiě)的方式將知識(shí)編撰成冊(cè)代表著這些時(shí)期在技術(shù)上的重大轉(zhuǎn)變。事實(shí)上,蘇格拉底(柏拉圖“斐德羅篇”里的角色)認(rèn)為這種技術(shù)轉(zhuǎn)變比不上最初的對(duì)話形式,擔(dān)心它會(huì)降低我們開(kāi)發(fā)智慧和知識(shí)的能力。所以很自然地,我不認(rèn)為蘇格拉底會(huì)喜歡電視。   問(wèn)題的核心是,對(duì)話代表了一種離散的溝通手段。你知道你的交談對(duì)象是誰(shuí),而且參與對(duì)話的人通過(guò)論證和反證的方式進(jìn)行直接的互動(dòng)。反過(guò)來(lái),書(shū)本是一種抽象的溝通手段,作者和讀者之間不存在直接的互動(dòng)。作者并不知道誰(shuí)讀了他的書(shū),也不知道有多少人、在什么時(shí)候、在哪里讀了他的書(shū)。有時(shí)候,我們可能知道潛在的讀者群體是誰(shuí),然后根據(jù)讀者群體進(jìn)行內(nèi)容裁剪。不過(guò)大多數(shù)時(shí)候,書(shū)本都只是一種抽象的傳播知識(shí)和學(xué)習(xí)新技能的手段。   等腰三角形的大數(shù)據(jù)   當(dāng)我們從簡(jiǎn)單的計(jì)算形式轉(zhuǎn)變?yōu)橛啥ɡ?、符?hào)和算法組成的抽象形式(我們現(xiàn)在稱(chēng)其為數(shù)學(xué)),就開(kāi)啟了另一個(gè)大數(shù)據(jù)時(shí)代。第一批有記載的計(jì)算發(fā)生在公元前 2500 年的美索不達(dá)米亞。當(dāng)時(shí),美索不達(dá)米亞人需要計(jì)算出一谷倉(cāng)的糧食能夠養(yǎng)活多少人。   美索不達(dá)米亞人有具體的問(wèn)題關(guān)注點(diǎn),他們很清楚需要解決的問(wèn)題是什么。他們的計(jì)算都是很離散的,因?yàn)槊恳淮斡?jì)算只能解決一個(gè)問(wèn)題。這也就是為什么評(píng)論家們認(rèn)為它們不是數(shù)學(xué)。直到公元前 500 年的古希臘,畢達(dá)哥拉斯學(xué)者們(可以把他們認(rèn)為是早期的 Google 使用者,哈哈)開(kāi)始針對(duì)三角形提出了一些奇怪的問(wèn)題。比如,他們想知道等腰直角三角形的三個(gè)邊能否都是整數(shù)(這聽(tīng)起來(lái)像不像一個(gè) Google 風(fēng)格的面試題?)。   如果你想通過(guò)離散的方式來(lái)解答這個(gè)問(wèn)題,那么可以像美索不達(dá)米亞人那樣做。不過(guò),隨著數(shù)字的增加,這種方式會(huì)顯得很笨重。要證明這個(gè)假設(shè),你需要進(jìn)行多少次計(jì)算(其實(shí)這個(gè)假設(shè)是錯(cuò)誤的,三個(gè)邊不可能都是整數(shù))?等腰三角形問(wèn)題的不同之處在于,它不存在具體的關(guān)注點(diǎn)。我們不知道三角形的大小,也不知道它們的邊長(zhǎng),而且它們的大小可能是無(wú)限的。如果我們?cè)跀?shù)字上應(yīng)用推理,那么就進(jìn)入了數(shù)學(xué)領(lǐng)域,大數(shù)據(jù)也就接踵而至。畢達(dá)哥拉斯式的思維方式體現(xiàn)了數(shù)學(xué)的抽象特征,在今天,我們使用符號(hào)、規(guī)則和推理來(lái)解答這類(lèi)抽象的問(wèn)題。   或許你想知道人類(lèi)歷史上的其他大數(shù)據(jù)時(shí)期,不過(guò)我想直接跳到 20 世紀(jì),看看代碼如何成為現(xiàn)代技術(shù)領(lǐng)域的重要組成部分(如果你有其他大數(shù)據(jù)時(shí)期的資料,可以聯(lián)系我 @cathalhoran,我相信它們會(huì)很有趣)。   代碼的崛起   1945 年,當(dāng) Grace Hopper 開(kāi)始在 Harvard Mark I 計(jì)算機(jī)上工作時(shí),編碼(或者說(shuō)編程,不過(guò)我們不打算在這里區(qū)分它們有什么不同)這項(xiàng)工作的重要性就開(kāi)始凸顯出來(lái)。在這之前,電腦(如果可以這么叫它的話)充其量只是個(gè)計(jì)算工具。以二戰(zhàn)為例,當(dāng)時(shí)的大炮需要借助矩陣進(jìn)行輔助瞄準(zhǔn)。矩陣是一些方程式的計(jì)算結(jié)果,這些方程式使用數(shù)百種不同的計(jì)算因子,比如距離、海拔、風(fēng)速、溫度、濕度,等等。電腦(computer)這個(gè)名字的由來(lái)也是很偶然的,人們用它描述在二戰(zhàn)中操作計(jì)算機(jī)的女性,她們被稱(chēng)為“computer”。操作員們必須使用打孔卡和曲柄來(lái)處理方程式。一個(gè)打孔卡需要 170 個(gè)人月才能完成。   這個(gè)與我們之前討論的事情有什么相似之處?美索不達(dá)米亞人使用黏土矩陣來(lái)進(jìn)行計(jì)算,而到了 20 世紀(jì),計(jì)算媒介變成了編碼。雖然已經(jīng)有了長(zhǎng)足的進(jìn)步,不過(guò)編碼仍然是一種離散的操作,因?yàn)樗鼒?zhí)行的是具體的計(jì)算任務(wù),只是效率上有所提升而已。編碼解放了人工操作,讓我們可以處理更多的數(shù)據(jù)。   算法與代碼   算法:一系列用于描述一個(gè)問(wèn)題解決方案的步驟,符合正確性和有限性的標(biāo)準(zhǔn)。是與具體實(shí)現(xiàn)相互獨(dú)立的抽象計(jì)算步驟。代碼:一系列計(jì)算機(jī)指令。它們是計(jì)算的具體實(shí)現(xiàn),使用一種特定的編程語(yǔ)言,運(yùn)行在一個(gè)特定的平臺(tái)上。   人們可以借助這種直接向計(jì)算機(jī)發(fā)送編碼指令的方式來(lái)實(shí)現(xiàn)更為復(fù)雜的指令序列,并以算法的形式呈現(xiàn)出來(lái)。算法比編碼的出現(xiàn)要早得多。穆斯林?jǐn)?shù)學(xué)家 Al-Khawarizm 早在公元 820 年就對(duì)解決線性方程和二次方程式的算法進(jìn)行了描述。算法一詞來(lái)源于這位數(shù)學(xué)家的拉丁文名字“Algoritmi”,而“algebra”則來(lái)源于“al-jabr”,Al-Khawarizm 用它來(lái)解決二次方程式問(wèn)題。算法由一系列有限的計(jì)算或指令組成,并產(chǎn)生一個(gè)結(jié)果。正如我們所知道的那樣,代碼是向計(jì)算機(jī)發(fā)出指令的一種方式,很適合用于實(shí)現(xiàn)算法。它們只不過(guò)是一系列按照一定次序執(zhí)行的操作。   與早期的大數(shù)據(jù)時(shí)期一樣,我們這個(gè)時(shí)代的信息量也在增長(zhǎng)。根據(jù)摩爾定律,我們?cè)诰幋a的設(shè)計(jì)和使用方面所作的改進(jìn)換來(lái)了性能的提升,從而能夠應(yīng)付不斷增長(zhǎng)的數(shù)字化需求。你可以繼續(xù)編寫(xiě)代碼從數(shù)據(jù)庫(kù)查詢相關(guān)的資源列表。這些操作的離散特征仍然被保留了下來(lái),因?yàn)槿藗內(nèi)匀辉谕ㄟ^(guò)編寫(xiě)代碼告訴硬件應(yīng)該做哪些事情。就算操作變得越來(lái)越復(fù)雜,它仍然只是人類(lèi)的編碼指令。不過(guò),算法已經(jīng)開(kāi)始展露頭角,正在創(chuàng)造一個(gè)抽象的新時(shí)代。   算法的崛起   所以說(shuō),算法和代碼之間有很大的不同。代碼可以用來(lái)實(shí)現(xiàn)算法,而且代碼的實(shí)現(xiàn)方式會(huì)影響到性能。例如,如果你要從一個(gè)序列里找出最大或最小的元素,那么二叉堆的性能相比其他的數(shù)據(jù)結(jié)構(gòu)要好很多。不過(guò),你已經(jīng)沒(méi)有必要通過(guò)編寫(xiě)代碼來(lái)實(shí)現(xiàn)一個(gè)算法,就像沒(méi)有必要通過(guò)聽(tīng)音樂(lè)來(lái)寫(xiě)歌一樣。   雖然每個(gè)人都知道摩爾定律的魔力,驅(qū)動(dòng)數(shù)字經(jīng)濟(jì)發(fā)展的性能改進(jìn)遵循的就是摩爾定律,但鮮有人知道,在很多領(lǐng)域,算法所產(chǎn)生的性能改進(jìn)已經(jīng)超過(guò)了硬件所帶來(lái)的性能提升。實(shí)際上,2010 年的一份官方報(bào)告表明,算法已經(jīng)為很多領(lǐng)域帶來(lái)了顯著的性能提升,比如語(yǔ)音識(shí)別、神經(jīng)語(yǔ)言處理和物流。   “更加令人感到吃驚但同時(shí)又令人難以理解的是,在很多領(lǐng)域,算法為性能帶來(lái)的提升已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了處理器速度提升所帶來(lái)的性能改進(jìn)。”——面向總統(tǒng)和國(guó)會(huì)的報(bào)告:設(shè)計(jì)數(shù)字的未來(lái)   抽象算法   我們現(xiàn)在擁有大量的數(shù)據(jù),這意味著我們不能再用離散的思維來(lái)思考問(wèn)題。大數(shù)據(jù)促使我們轉(zhuǎn)變思維。它促使我們向后退一步,去尋找能夠處理數(shù)據(jù)洪流的方法。按照傳統(tǒng)的方式,你可能會(huì)根據(jù)一些指定的模式或參數(shù)編寫(xiě)代碼來(lái)查詢數(shù)據(jù)。例如,你可能想從數(shù)據(jù)庫(kù)中查找在過(guò)去兩周買(mǎi)過(guò) 2 件商品并且支付超過(guò) 30 歐元的顧客,因?yàn)槟阆肼?lián)系到這些顧客,并向他們推薦一些優(yōu)惠活動(dòng)。你使用這個(gè)模式來(lái)查找匹配的數(shù)據(jù)。不過(guò)大數(shù)據(jù)卻正好相反,你先有了數(shù)據(jù),然后查找可以匹配這些數(shù)據(jù)的模式。   想想看,有這么多的數(shù)據(jù),但是我們卻找不到匹配的模式,所以我們要回退一步。我們通過(guò)集群、分類(lèi)、機(jī)器學(xué)習(xí)和其他新的支撐技術(shù)來(lái)尋找模式,而能夠幫助我們做到這點(diǎn)的是算法,不是代碼。要找到隱藏在暗處的模式,跨出這一步是必需的。與光譜一樣,有一些波長(zhǎng)的光線我們是看不到的,而超過(guò)一定數(shù)據(jù)量之后的模式我們也是看不到的,它就是大數(shù)據(jù)。   我們不僅可以從中搜索到模式,它還能夠生成做這些事情所需要的代碼。Pedro Domingos 在“The Master Algorithm”一書(shū)中描述了如何使用“學(xué)習(xí)者算法”來(lái)創(chuàng)建新的算法,這些算法可以反過(guò)來(lái)為我們編寫(xiě)我們所需要的代碼,“通過(guò)機(jī)器學(xué)習(xí),計(jì)算機(jī)可以自己編程,我們就可以解放了”。為了實(shí)現(xiàn)這個(gè)目標(biāo),我們需要更好地理解這些算法的原理,以及如何讓它們與我們的需求相匹配。否則,我們就無(wú)法向抽象轉(zhuǎn)變。   “工業(yè)的發(fā)展讓手工勞動(dòng)自動(dòng)化,信息的發(fā)展讓腦力勞動(dòng)自動(dòng)化,而機(jī)器學(xué)習(xí)則讓它自己自動(dòng)化。如果沒(méi)有機(jī)器學(xué)習(xí),程序員就會(huì)成為發(fā)展瓶頸。而有了機(jī)器學(xué)習(xí),發(fā)展的速度就會(huì)加快。”——Pedro Domingos,“The Master Algorithm”   思考算法   不過(guò),不管如何從離散轉(zhuǎn)變成抽象,我們?nèi)匀恍枰绦騿T,但這不是重點(diǎn)。并不是說(shuō)代碼已經(jīng)變得不重要了,也不是說(shuō)代碼就不會(huì)再帶來(lái)任何改進(jìn)。重點(diǎn)在于,我們要開(kāi)始思考算法,這不僅僅是數(shù)學(xué)家或?qū)W者的事情。我們周邊充斥著各種算法,以致于我們不需要知道如何編寫(xiě)代碼來(lái)使用它們,或者理解它們。現(xiàn)在,有一些人通過(guò)新的算法對(duì)不同的領(lǐng)域進(jìn)行優(yōu)化和改進(jìn),他們使用了遺傳編程(genetic programming)和大數(shù)據(jù)技術(shù)。人們甚至創(chuàng)造了更好的優(yōu)化技術(shù),他們觀察金屬的冷卻過(guò)程,并通過(guò)算法對(duì)其進(jìn)行建模(被稱(chēng)為模擬退火算法,這就是我們應(yīng)該從算法角度開(kāi)始考慮問(wèn)題的一個(gè)最好的例子)。   編碼作
USA-IDC為您提供免備案服務(wù)器 0元試用
立即聯(lián)系在線客服,即可申請(qǐng)免費(fèi)產(chǎn)品試用服務(wù)
立即申請(qǐng)