萬能的編程語言

萬能的編程語言

不要習慣性地把工具當作你天性缺陷的遮羞布。


我剛開始寫程序那會,十分在意於各種編程語言之間的比較。每次自己使用的語言被別人說三道四,心裏就跟打翻了五味瓶一樣,很不是滋味。

同樣情況下, 換成那些在知識技術上過硬或業內稍有所成就的人, 一般都會心平氣和, 有理有據地跟別人爭辯。心裏壓根兒不會感到絲毫冒犯, 更不會突然覺得自己缺胳膊少腿似的低人一等。反倒是那些新手們, 沒有技術又眼高手低的半吊子, 一番胡亂瞎扯後,就恬不知恥地開始罵娘。

爲什麼有些程序員這麼糾結於編程語言呢?

我們都知道,作家所描寫的故事無論多麼跌宕起伏,精彩絕倫, 人物勾畫的再怎麼惟妙惟肖, 躍然紙上, 都跟緊握在手中的筆沒有任何關聯。 說到底,筆和紙只是他們所熟悉的一種表達工具。就算改用石器, 降低的也只是寫作效率,而非他們的創作功力。

“A tool is only as good as the person using it.”

那同樣的道理適用於程序和編程語言嗎? 答案是肯定的。

如果把編程語言也簡單地看作工具。那麼,靜態和動態語言,只是對運行速度和開發效率之間進行取捨; 面向對象編程(OOP)和函數式編程(FP)各有所長, 因此選擇時脫離不開實際業務的需求與運用場景。

大多數時候,真正區分程序員技術高低的往往是像常用算法,數據結構這樣基礎的 ‘硬知識’, 還有對硬件工作原理的整體瞭解程度。只要肯多花時間學習琢磨與實踐,多少都是可以做出成就來的, 完全沒必要過分留意語言之間的比較。

但這也正是問題的根源所在。日常生活中, 人們嚴重低估了自己對天性的掌控能力, 錯誤地以爲成就很大程度上是跟某樣東西掛鉤。但事實上呢?並非如此。

Nobel-winning psychologist Daniel Kahneman
“生活中你想的每一件事,都沒有你想的那麼重要。”

這是諾貝爾獎得主丹尼爾·卡納曼教授對他提出的 “聚焦幻覺”所作的總結, 他還舉了個例子:

“教育程度是決定收入一個重要因素, 最重要的因素之一。但它並沒有大多數人以爲的那麼重要。假設每個人都受到完全相同的教育,收入差距只會縮小不到10%。當你聚焦於教育時你忽略了無數其他決定收入的因素。有些人受的教育程度相同,但收入有天壤之別。”

按照這邏輯繼續做推斷, 想必天賦也沒印象中那般重要。即使重要,可能也起不了作用了, 因爲:

“以大多數人的努力程度之低,根本輪不到去拼天賦。”

看到這,你可能覺得我在偷換概念; 覺得程序員之所以這麼在意程序語言,框架這些東西的比較, 完全是由於他們對技術的熱愛, 就像賽車手對速度的執着一樣。還有你看F1,賽車的硬件難道跟賽車手的成績沒半點關係嗎?

同一賽道上, 給你一輛世界上最快的賽車,非專業車手的你確定比的過坐在跑車裏的舒馬赫? 不在技術上研究着如何進步,反而對工具挑三揀四,吹毛求疵。整日妄想着能找到一種萬能的語言,以此一勞永逸。這不是在思想上偷懶嗎? 是抱怨周邊環境的影響容易些還是承認自己的懶惰更容易些?


PS: 關於編程語言那段, 講得未免有點籠統。現在很多動態語言的運行速度基本與靜態語言持平,甚至超越。不像幾年以前的天差地別。而像Go這樣新生代的高性能靜態語言,在開發效率上一點也不輸Python和Ruby。最後,每個人都有自己的思考模式,所以找對合適的語言來表達自己的思維也很重要。但無論如何,不要習慣性地把工具當作你天性缺陷的遮羞布。

PPS: 用了很多成語,對語言的把控能力還有待提高
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章