《TO》導讀:工程師真的是一種很苦命的生物,林之晨曾經預測:台灣老闆可能會轉性?台大資工畢業生,三年內起薪破 10 萬(這句話的潛台詞是現在剛出社會的工程師起薪沒有 10 萬),要賺錢本來就很難了,未來要賺錢只會更難。因為未來機器人、軟體都會更加智慧化,也就代表工程師的職位也有可能被取代,身為工程師大大的你,會擔心嗎?
工程師是注定滅絕的一個物種。
在一個來自於 CGP Grey 很精彩的影片中,他提出說,在不久的將來,大多數工作將會由機器替代。許多行業,從卡車司機到醫生,在不久的將來將會消失或發生巨大的變化,創造出一種全新的社會體制。但是,這樣一來似乎有點說不通——既然未來的人工智慧將會大放光彩,那麼勢必需要更多的工程師。畢竟,創建自動汽車、自動化的醫療診斷系統、小販機器人等等,都需要工程師的參與,不是嗎?
大錯特錯。
- coding 是什麼?
編程是將理念(業務、法律、遊戲、數學問題等)翻譯成機器可以執行,其他人可以讀取的代碼的學科。歸根結底,工程師不過是中間人而已,一個既能明白問題又能理解機器的中間人,因此,可將兩者進行轉換。僅僅如此而已。
- 每個人都在寫程式
中間人最終會被淘汰。
coding 在過去幾十年間已經發展到了相當高的程度。高級城市語言和可用的在線訊息,將進入寫程式的門檻幾乎降至為零。Scratch,一款來自於 MIT,有著數百萬用戶和上千萬項目的兒童友好型的程式平台,已經可以媲美 GitHub。現在,一個普通的工程師相較於 20 年前的同行,需要理解的計算機體系結構和演算法要少很多。
然而,這場革命近期似乎停滯不前了。我們最重要的工具——程式語言最近並沒有發生太大的改變。大多數新的和流行的語言(如 GO 和 Rust),只是逐漸改進了現有的範式,缺乏革命性的功能。目前最流行 的語言是 Java(1995 年),C(1973)和 C ++(1983 年),年紀都已經不小。這個行業卻反而開始專注於開發支持工具和方法,來提高生產效率。我們已經太久沒有創新了,所以,我強烈推薦大家看看 Bret Victor 的演講《The Future of Programming》。
這是什麼意思?
- S 曲線
科技的發展是這樣的:SSSSSSSSSSSSSS
如果要描述地更清楚點的話,它是這樣的:
例如,IBM 的第一個文字處理器程序(FORMAT)使用繁瑣的穿孔卡片作為輸入。在同一時間,最先進的打字機附帶可替換字體、自動字符重複以及打印數學公式的能力。然而,卻沒有人使用打字機。本來位於打字機下方的文字處理器的曲線很快趕上並超越了打字機,打字機變成了過去時。
我相信,我們正處在一個類似的語言技術曲線上,正在等待一個新的時代的到來。
- 不需要工程師的程式語言
為了從系統中徹底淘汰工程師(中間人),我們需要讓程式平台自身去「理解」問題,而不再需要編寫代碼。
這個想法並不是我首創的。1963 年,Ivan Sutherland 在《Sketchpad》中就描述了這樣一個系統,它可以解決給定的若干已定義約束的問題。Prolog(1972 年),一種聲明性程式語言,就是為了解決給定的一系列邏輯規則問題而創建的。它雖然依然是一種需要工程師的程式語言,並且並沒有被廣泛使用,但是它沒有完全消失。比如,它以及其他語言一起成就了 IBM 著名的超級計算機沃森(Watson)。
對於不需要工程師的程式語言,最偉大的例子是自然語言,如英語。從二進制代碼到彙編,從 C 到 Python,程式語言趨向於越來越類似自然語言。並且作為現在一種推崇的方式,越來越多的工程師,正在試圖讓他們的代碼盡可能地接近於白話英文,以便於其他工程師和未來自己的理解。那麼這個融合的限制是什麼?
- NLP
現在的自然語言處理(natural language processing,NLP)系統能夠理解文本中的單詞角色以及它們之間的相互關係。下面是來自斯坦福大學 CoreNLP 輸出的一個例子:
我們可以發現,僅通過分析文本,該程序就能夠識別同一個人的聯合引用,並識別單詞的角色。
下面說一個更有趣的,例如,此簡單的業務規則:
注意 CoreNLP 是如何識別條件(if – buy)和對象(buy – iPhones)的。那麼現在將這些翻譯成計算機程序還有什麼難的嗎?
有越來越多的新聞文章是由機器人寫的。最近如 Apple、Google、Microsoft 和亞馬遜等公司已經相繼開發出基於語音識別和自然語言處理的客戶產品。這進一步加快了這一領域的研究。
如果你想親自體驗自然語言處理,那麼我強烈建議 Python 的 NLTK。
- 遺傳算法
另一個有趣的研究領域是遺傳算法。使用類似於自然選擇的進程,遺傳算法通過生產最佳的解決方案來解決問題。從設計噴氣發動機到玩超級瑪麗都是它的應用範圍。
但是,遺傳算法肯定不能生成程式代碼,是吧?再好好想想。
一個名叫 Kory Becker 的開發人員,編寫了一個可以生成 Brainfuck 代碼來解決簡單問題的程式。當然,這款軟體的實用性非常有限,但這僅僅是個開始。正如他所說,更複雜的問題需要更多的計算能力,來找出最適合的解決方案。
例如,下面的代碼,完全是由程式寫的,可打印 hello。
+-+-+>-<[++++>+++++<+<>++]>[-[---.--[[-.++++[+++.. ].+]],]<-+<+,.+>[[.,],+<.+-<,--+.]],+] [[[.+.,,+].-
該字段稱為遺傳編程,並且也不是什麼新生事物:
對遺傳和進化的研究需要結合查找的基因和生存價值標準。(Alan Turing,《Intelligent Machinery》,1948 年)
結合 NLP 和 GP,我們就可以建立能理解用自然語言寫的約束的系統,並實施可解決這些帶有約束的問題的程序。
- 享受這段美好時光吧
我相信不是所有的編寫程式工作都會被機器人取代,至少不會很快。比如說,那些需要高度優化的代碼或使用高級演算法的程式任務。其他的還有領域過於複雜的情況。不過,我也相信,大量的工程師將會在未來幾年被取代。我的預測是,這將急劇減少對工程師的需求,抵消對軟體創造的不斷增加的需求,並最終結束工程師的高薪時代。
這是否令你很難過?享受這段美好時光吧,至少我們有機會參與到這場革命中。
譯文鏈接:http://www.codeceo.com/article/the-future-of-programmers.html
英文原文:The future of programmers
(本文轉自碼農網,翻譯作者:碼農網 –小峰,未經授權不得轉載;圖片來源:hackNY)