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