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