在程式設計中,靜態類型與動態類型之間的分歧是最長久的之一。在我的整個職業生涯中,我聽過無數來自雙方的論點,但很少有論點能讓任何人信服。因為偽裝成理性的合理化在信仰問題上通常不會奏效。騎士總是會為大象的道路辯護。 這並不是說沒有轉換陣營的人。事實上,這些人通常會大聲喊出最激烈的合理化。常常就像一個終身雜食者突然變成素食者,或是一個在加密貨幣上運氣好的傳統銀行家。信仰越短,火焰越亮。 就我個人而言,我毫不掩飾地偏好動態類型。這就是我如此喜愛 Ruby 的原因。它充分利用動態類型,讓詩意的語法產生如此美麗的代碼。對我來說,Ruby 如果有明確的靜態類型,就像是一碗冰淇淋的沙拉。他們根本不搭。 我也承認過去曾擁抱動態類型的福音立場。甚至到了一種「唯一真理命題」的病態。將對動態類型的熱情缺乏視為教育、經驗或甚至能力的缺失。 哦,真是愚蠢。 就像試圖說服一個內向的人,如果他們稍微放鬆一下,他們會真的喜歡派對。實際上,在擁擠的房間裡待上幾個小時,為了溝通而大聲喊叫,因為那種 VIBE!真的很有趣! 如今,我開始欣賞多樣性的壯麗。如果我們都被限制在同一範式中,程式設計將是一項可怕的工作。人性太過多樣,無法接受這種對創造力的約束。 你能想像如果所有的視覺藝術都必須以立體主義的風格呈現?或者寫實主義?或者所有小說都以海明威那種簡短直接的風格寫成?那會多無聊啊! 這會毀掉程式設計的魔力。這種藝術與工程的獨特融合。 但我花了一段時間才得出這些結論。我是一個正在康復的解決方案主義者。因此,當我看到人們懷著不信的心情發誓,任何地方都可能有人更喜歡 JavaScript 而非 TypeScript 時,我微笑著,想起那些我在鏡子中認識到他們熱情的日子。 這並不是說所有的程式設計方法都簡化為平等但不同的心態。這種相對主義是有界限的。但靜態與動態類型在其範疇內是確定的。函數式與面向對象的程式設計也是如此。這兩個軸的極端在幾十年中都顯示出能夠交付優秀的軟體(也有糟糕的東西!)。 現在,人們有能力從任一端同樣好地表達自己。這種雙手靈活的特性似乎很少見,因為雙方經常表達的完全不信任,認為對方可能持有合理的立場。 我不是雙手靈活的。我不喜歡靜態類型,物件讓我的心靈眼睛活躍。但我已經開始欣賞其他人用函數式程式設計的約束和明確的類型拼寫來照亮他們的創造力,與我一樣強烈。 只要我不必讓我的 Ruby 污染上類型提示,或將所有前端代碼寫成 TypeScript,我就能與那些熱愛 Go 或無法忍受 JavaScript 的人快樂共存。活出差異!