很多年后編程還有意義嗎?
而那些認(rèn)為編碼將死、程序員將失業(yè)的人的理由是機(jī)器智能會(huì)像今天的程序員一樣具備自學(xué)編程的能力。比如說(shuō) AlphaGo 擊敗李世石就是一個(gè)機(jī)器學(xué)習(xí)能力的證據(jù)。不過(guò)更多人傾向于認(rèn)為,到 2025 年時(shí)編程仍然有意義,但有人說(shuō) 2025 年以后情況可能就不是這樣了。
有些人認(rèn)為編程不僅在 10 年內(nèi)還有意義,而且還會(huì)比今天更重要。不過(guò)編程語(yǔ)言的語(yǔ)法會(huì)變得越來(lái)越簡(jiǎn)單。剛開(kāi)始的時(shí)候,編程是在紙板上面打孔(可編程打孔機(jī))。然后形式變成了這個(gè)樣子:00101010101。而現(xiàn)在看起來(lái)更像英語(yǔ)。隨著編程語(yǔ)言變得越來(lái)越像英語(yǔ),這種東西學(xué)習(xí)起來(lái)會(huì)越來(lái)越容易,越來(lái)越不神秘,所以也會(huì)越來(lái)越流行。同時(shí),隨著計(jì)算機(jī)滲透到我們的日常生活里面,告訴這些設(shè)備我們想做什么,發(fā)明新的用例也會(huì)變得越來(lái)越流行。
但是在可以用自然語(yǔ)言跟機(jī)器進(jìn)行對(duì)話并且讓它們完美理解并執(zhí)行從未訓(xùn)練過(guò)的復(fù)雜任務(wù)這些事情上我們還有很長(zhǎng)的路要走(好幾十年)。當(dāng)然,一些簡(jiǎn)單的、預(yù)編程好的任務(wù)是沒(méi)問(wèn)題的,比如 “告訴我去加油站近的方向。”
但是要想教計(jì)算機(jī)做從來(lái)沒(méi)做過(guò)的事情,還是需要對(duì)如何跟這種特殊的計(jì)算機(jī)程序員進(jìn)行溝通有特殊的理解,以及要有描述算法的計(jì)算思維。如何設(shè)計(jì)循環(huán)或條件供計(jì)算機(jī)執(zhí)行任務(wù)或進(jìn)行決策的語(yǔ)法也許會(huì)變,但底層的基礎(chǔ)概念估計(jì)很久都不會(huì)消失。
自 1999 年開(kāi)始就一直開(kāi)發(fā) web 門(mén)戶(hù)的 Christoph Richter:
Fred Brooks 1975 年的一篇文章說(shuō)軟件開(kāi)發(fā)永遠(yuǎn)都是復(fù)雜的。雖然有一些東西可能會(huì)變?nèi)菀祝诵牡臇|西永遠(yuǎn)都不會(huì)容易?!度嗽律裨挕愤@本書(shū)說(shuō)的就是軟件工程這項(xiàng)核心挑戰(zhàn)一直都難以克服——沒(méi)有銀彈,40 年過(guò)去了,至今情況依然如此。
某個(gè)研發(fā)軟件工程師簡(jiǎn)答:是的!但不是今天的樣子。
從機(jī)器語(yǔ)言、到面向?qū)ο笳Z(yǔ)言,編程的演進(jìn)歷史就是不斷地抽象。這一路上我們還在操作系統(tǒng)的作用下得以開(kāi)發(fā)出更好的基礎(chǔ)設(shè)施。大家很快意識(shí)到自己可以在這些基礎(chǔ)設(shè)施之上編寫(xiě)出更復(fù)雜的程序,然后繼續(xù)開(kāi)發(fā)出更復(fù)雜的軟件架構(gòu)。
有 30 年技術(shù)從業(yè)經(jīng)驗(yàn),曾當(dāng)過(guò)工程師、產(chǎn)品主管、CTO、CEO 的 Greg Kostello 認(rèn)為:
在機(jī)器學(xué)習(xí)的推動(dòng)下我們現(xiàn)在進(jìn)入了軟件開(kāi)發(fā)的新時(shí)代。IBM 的 Watson 和 Google 的 AlphaGo 已經(jīng)證明數(shù)據(jù)>算法?;蛘吒卣f(shuō),數(shù)據(jù)就是算法。但是現(xiàn)在你需要非常特殊的技能才能開(kāi)發(fā)出機(jī)器學(xué)習(xí)解決方案。工程師和數(shù)據(jù)科學(xué)家仍然需要對(duì)機(jī)器學(xué)習(xí)算法進(jìn)行編程,但終同樣的系統(tǒng)會(huì)教它們學(xué)會(huì)如何通過(guò)分析自己的代碼來(lái)改進(jìn)自己。