“這不是只修眼前這一個函數,而是提醒你——為什么外部和內部參數名,總在絆倒人。”我上周在Swift粉筆器里撞見 “extraneous duplicate parameter name” 時,腦子里蹦出這句話。同一周內,我還在Google AI Studio里敲了一段描述詞,幾分鐘后就拿到一個完全可用的吉祥物生成器。把這兩種構建方式壓縮進同幾天,差異被放得巨大——有些發現,連我自己也意外。
寫Swift函數那陣子,我像在跟一位極其精準、無比耐心的老師對話。每一次循環都短得驚人:寫完一個函數,試著調用,撞上錯誤。錯誤往往具體到令人牙酸——參數標簽不匹配,少了return,或者標簽重復。接著是讀懂了編譯器的提示,修正,再次運行,看見輸出,確認它按你預期行事。每一個步驟都小,每一個錯誤都是具體的。而真正要緊的是,每一次修正都在打磨你將來給別人講解時的措辭。
![]()
比如那天我在測試外部參數名和內部參數名的差異,寫了個小片段,立刻彈出 “extraneous duplicate parameter name”。這個錯誤不是讓你改一下就完事,它像一塊路標,標明Swift的機制:當你只給一個名字時,它同時充當外部標簽和內部標簽。如果此時你又顯式地加了一個外部名,命名就重復了。這層理解才是推動系列文章從“陳述規則”走向“展示規則為何存在”的那個關鍵細節。一個報錯,把語言設計者的取舍直接攤在你面前。
與此平行的時間線里,我用谷歌AI Studio構建吉祥物工藝坊,是完全另一番景象。只寫了一段描述——一個用Imagen和Gemini生成吉祥物的應用,加上風格關鍵詞輸入——幾秒鐘后返回的頁面里,出現了一個“角色設計師”板塊、我沒要求的調色板選項、好幾種美術風格備選,還有一個“工作室畫廊展示”功能,同樣不在我的請求里。整件事從構思到部署完成,可以說是一個app從天而降。
在這里沒有一步步糾錯的循環,或者說有,但全部發生在你看不見的后臺。我確實點過一次“修復”按鈕,接著彈出了付費API密鑰提示,我關掉它就再無波瀾。整個過程的體量龐大到我即便有心跟隨,也根本跟不住。感覺像你朝一個方向扔出線索,整座大廈就自動營造完成,你甚至沒看見一根鋼梁是怎么搭上去的。
最讓我意外的事情發生在事后復盤時。對那些Swift片段,我可以逐行解釋為什么每個例子生效或失敗,細到為什么Swift把一個單獨給出的名字同時視作外部和內部標簽。而吉祥物工藝坊完工后,我能說清楚它做了什么,卻無論如何說不出Gemini為什么選擇localStorage來存畫廊,而不是別的持久化方案;也說不出它為什么恰恰挑了那幾個調色板名稱。一篇帖子下有讀者點出:在真實產品里,基于localStorage的方案會成為大坑——換個瀏覽器,你存的所有吉祥物就沒了。這個批評完全站得住腳,而它指向一個更大的困惑:當我們幾乎省略了全部推理路徑,我們究竟錯過了什么?
在逐行構建里,每個報錯都在逼迫你形成可轉述的理解;在一段話生成應用里,你獲得的成品雖然豐富,卻封緘了所有決策理由。也許這根本不是非此即彼的選擇——但我仍然在問自己,下一個項目里,我要在哪一部分握緊方向盤,又該在哪里放手。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.