ChatGPT 可以取代Programmer嗎?
2023-02-10
2022年11月30日,是人工智能的一個重要日子,OpenAI在這一天推出了以Transformer模型為主的ChatGPT語言模型。ChatGPT剛一推出就已經震驚世界,因為其自然語言 理解及自然語言生成,都比之前的模型有非常大的進步,不少嘗鮮者都發覺ChatGPT之語言能力,大大超出了大眾的想像。
筆者身在倫敦,讓ChatGPT以十二月冬日倫敦為題,賦詩一首。
ChatGPT大概半分鐘就完成了整首詩,結構、描寫、意境、壓韻都悉數盡有,這首詩故然不會是大詩人的作品,但早已超越絕大多數人的寫作能力。 ChatGPT由此成為了一個熱潮,引起了大眾對AI取代人類工作的擔憂,現代社會大部份工作都是Paper work,語言能力是其中最重要的部份,ChatGPT卓越的語言能力,代表 AI確有取代不少人工作之能力。醫生、律師等專業行業亦面臨自動化的危機。
不可避免的是,不少人就提出了一個設想,就是未來根本不再需要Programmer,只需要AI就可以了,程式語言也是語言,ChatGPT如果能夠處理自然語言,就能夠處理程式語言。 所以Programmer的生涯終結也是屈指可數。
乍聽之下,這好像很合理,始終以專業知識、困難程度而言,Programmer 着實不比其他專業如醫生、律師、工程師要高,如果其他專業都面臨自動化逼近的話,Programmer 又如何能夠 倖免呢?
兩個層次的AI
所謂AI取代Programmer,其實箇中有兩個層次,分別在要求(Specification)的細緻程度:
- 第一層次是AI能夠理解任何人類的詳細要求(Detailed Specification),然後能夠產生軟件所須的程式碼。
- 第二層次是AI能夠理解任何人類的任何要求(Any Specification),然後能夠產生軟件所須的程式碼。
第一層次: 寫Code其實就是在寫詳細要求
這個層次的AI其實就是只須寫好一個軟件需要甚麼功能,就可以由AI產生軟件所須的程式碼。 筆者每次聽到這個講法,都不期然會想起這幅漫畫。
這幅漫畫揭示了普遍行外人對Programmer工作的不瞭解,左邊男子覺得電腦快速發展下,很快人類就可以只是寫下要求(Specification),電腦就會自動寫好所有程式, 右邊Programmer就指出,其實Programmer一直在寫的,就是Specification。 其實今日的Programmer也不是在寫電腦能夠讀懂的語言,今時今日寫的Python、JavaScript 其實都會由Compiler 編譯成machine code,供CPU 運行。 Programmer 一向在寫的,都是人類的語言,而不是電腦的語言。
筆者看過不少提倡AI將取代Programmer的文章,似乎都在假設普通用戶能夠提出詳細而準確的「要求」,因此AI 就能夠產生一個軟件。 但以筆者多年編寫軟件經驗而言,普通用戶從未能提出詳細而準確的要求,通常只是一些非常模糊的要求,例如: 「我想要一個像Facebook的網站」或是「左邊有幾粒制,可以去到唔同頁面」之類的要求。詳細而準確的要求,從來是Programmer釐清要求下,才會成形。
筆者認為,普通用戶以為自己不能寫程式是因為不懂程式語言,其實普通用戶欠缺的是表達詳細而準確要求的能力,與學懂語言與否其實反而不是最大關係,這正正是Computational Thinking。
退一萬步說,即使一個「能夠理解自然語言,能夠產生任何程式碼」的AI存在,人類依然需要 一個人可以理解所有要求,然後再逐一對AI表達這些說法,那這個人,其實不就是Programmer嗎?
第二層次:Programmer 的工作就是自動化
第二層次的AI就被第一層次的AI 要厲害得多,因為這個層次的AI,理論上可以在無須提供詳細要求下,就產生出所有所須的程式碼,也就是這個AI 能夠猜度提出要求者的intention。 舉一個例子,假如這個AI存在,人類可以對他說,我想要一個能夠「令太空船登陸火星」的軟件,在無須提供多餘條件下,AI就能夠猜度出人類心中所想,是需要一個能夠控制太空船,以一個不會致命 的速度着陸火星的軟件。這些是前文後理(Context),人類天然就理解的事情。這個層次的AI,應該能夠勝任。
假如這個AI真實存在,筆者大膽認為,Programmer是最難取代的工作。 這不是因為筆者作為Programmer的自傲,而是要去理解Programmer工作的本質其實到底在做甚麼?Programmer工作的本質,不是在打字;不是在上網,而是在自動化(Automation)。
所謂自動化,就是寫下指令,命令機器(電腦)基於不同的條件(Condition),作出不同的動作(Action),取代人力。 會計軟件取代了會計文員人手計算; 電子商貿網站取代了 店員的作用; Google Translate 就取代了簡單的翻譯工作。 假如要取代的是Programmer呢?由於Programmer的工作就是Automating things,代表這個AI 能夠自動化自動化本身。由於電腦運算速度比人腦速度快了不知多少個量級, 也就是如果這個AI存在,他就能夠以人類不能想像的速度,不斷自動化所有人類能夠做的所有事。 因此屆時人類所有能做的事,機器都能夠做到。而且由於AI本身也是一個程式,也就代表這個AI能夠在無須人類幫助下,不斷自我演化(Self-Evolution)。這個情況,電腦科學家早已想像得到, 就是科技奇異點(Technological Singularity)。
意義上,代表機器在智能上完全超越人類,那到時大家要擔心的,就不是Programmer的飯碗問題,而是人類到底在這個後人工智能時代應如何自處,因為任何人類能夠做的事,機 器都能夠做到,而且做得更快更好。
所以...AI會取代Programmer嗎?
看了這麼多篇幅,你可能依然滿頭問號,所以筆者總結一下,所謂AI 能夠取代Programmer,其實有兩個意義,兩個意義的難度大不相同,對世界的影響也完全不同。
第一個層次下,AI能夠將自然語言的詳細要求,變成程式語言,扮演的其實只是一個高階Compiler的角色,這個AI對Programmer的意義,就是提升工作效率,以及減少要重覆編寫的 程式碼(Boilerplate)。 這個層次的AI,當然不能取代Programmer。這個層次AI,很有可能在未來幾年得到廣泛使用,提升編程的工作效率。
第二個層次下,AI能夠從零到尾建立一個軟件,完全理解提出任何要求的人類之Context,這個AI將能夠取代Programmer,但有趣的是,由於Programmer工作的本質是自動化,Programmer會是人類工作的最後堡壘。不會存在Programmer被完全取代,而其他工作依然需要人力的情況。也就是當Programmer失業的時候,其他人有極大可能早已失業了。 這個層次的AI是否可能存在,仍然未知,但筆者對人類科技發展頗為樂觀,確實有未來存在之可能性。
Comments
Read More
Data Science? AI ? Machine Learning? 到底有何分別?
2018-11-23
近幾年大家經常聽到 Data Science(數據科學)、AI(人工智能)、Machine Learning(機器學習)、 Deep Learning(深度學習)等等詞彙, 以上的名詞的意思好像差不多,但又並非完全一樣
馮紐曼
2018-12-28
今日是12月28日,115年前的今日,一位對現今電腦有深遠影響的天才出世了。他一生對數學、電腦科學、物理學貢獻良多,被譽為電腦科學其 中一位奠基人,與廣為人所知的艾倫‧圖靈齊名,他就是約翰‧ 馮紐曼(John von Neumann)。
如何對治思維籠統
2019-01-23
以下情況相信大家似曾相識: > A公司希望完成一個專案,將專案外判給一間軟件開發公司B開發,專案開始後,總發覺B公司不太理解要求,製成品也與要求相去甚遠,與B公司的 > 程式設計師多次開會亦結果不彰,最終專案「爛尾」收場,A公司不得已又將專案再外判給C公司,同一問題似乎又再上演... 探究原因,何解此類問題經常出現?原因往往在於A公司的相關負責人本身沒有編程背景,因此給出的要求相當籠統,B公 司的程式設計師亦不理解A公司期望,因此導致專案最終失敗。 讀到這裏,大家可能會嚷道:「A公司的負責人當然沒有編程背景啦,不然A公司自己做就好了」其實問題重點不在於A公司本身是否有編程的專才,而在於產品 負責人(Product Owner)與程式設計師溝通良好與否,即使A公司本身有編程Team,如果溝通不良,專案失敗是不會改變的。要討論溝通良好與否,先 要理解平常人的思維方式,與程式設計師的思維方式,往往差別甚大。
學寫程式為何甚艱難?
2019-06-13
如果你想學寫程式,在網上搜尋一下,不難找到不少「輕鬆學習XXX」、「YY天輕鬆學會Python」的教材及影片;去電腦書店逛一圈,很容易就可以找到「七天學會Java」等的書籍,這些教材其實都在推廣一個信念,也就是: 學寫程式很簡單,人人都可以學會。 筆者對此信念後半部深表認同,但是對前半部所謂「學寫程式很簡單」,卻真是不敢苟同。