Skip to main content

ChatGPT 可以取代Programmer嗎?

· 10 min read
戈頓
Developer & Co-founder of Tecky Academy

2022年11月30日,是人工智能的一個重要日子,OpenAI在這一天推出了以Transformer模型為主的ChatGPT語言模型。ChatGPT剛一推出就已經震驚世界,因為其自然語言 理解及自然語言生成,都比之前的模型有非常大的進步,不少嘗鮮者都發覺ChatGPT之語言能力,大大超出了大眾的想像。

筆者身在倫敦,讓ChatGPT以十二月冬日倫敦為題,賦詩一首。

ChatGPT Poem

Source

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產生軟件所須的程式碼。 筆者每次聽到這個講法,都不期然會想起這幅漫畫。

AI replacing Programmer

Source

這幅漫畫揭示了普遍行外人對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)

Technological Singularity

意義上,代表機器在智能上完全超越人類,那到時大家要擔心的,就不是Programmer的飯碗問題,而是人類到底在這個後人工智能時代應如何自處,因為任何人類能夠做的事,機 器都能夠做到,而且做得更快更好。

所以...AI會取代Programmer嗎?

看了這麼多篇幅,你可能依然滿頭問號,所以筆者總結一下,所謂AI 能夠取代Programmer,其實有兩個意義,兩個意義的難度大不相同,對世界的影響也完全不同。

第一個層次下,AI能夠將自然語言的詳細要求,變成程式語言,扮演的其實只是一個高階Compiler的角色,這個AI對Programmer的意義,就是提升工作效率,以及減少要重覆編寫的 程式碼(Boilerplate)。 這個層次的AI,當然不能取代Programmer。這個層次AI,很有可能在未來幾年得到廣泛使用,提升編程的工作效率。

第二個層次下,AI能夠從零到尾建立一個軟件,完全理解提出任何要求的人類之Context,這個AI將能夠取代Programmer,但有趣的是,由於Programmer工作的本質是自動化,Programmer會是人類工作的最後堡壘。不會存在Programmer被完全取代,而其他工作依然需要人力的情況。也就是當Programmer失業的時候,其他人有極大可能早已失業了。 這個層次的AI是否可能存在,仍然未知,但筆者對人類科技發展頗為樂觀,確實有未來存在之可能性。