相信有許多的人在糾結,到底是選擇C/C++,還是JAVA,還是C#,或者是PHP還是ASP呢?有人說底層語言被比較好,可是我們發現,其實底層語言的從業人民不怎麼多,萬一我選擇了找不到工作怎麼辦?然是我選擇PHP或者ASP,可是有人說這些語言不入流,過幾年就OVER了,那我是不是還要選擇呢?或許有許許多多的人像我這樣糾結的,今天我想說的是,你再為選擇什麼語言,而猶豫不前,你就是蠢貨!
今天聽了OOP群裡面高手的一些話,另外看了下面一個前輩寫的文章,有些鄙視自己。以前幾年時刻為選擇一個既能找到好工作,又能工資高,前途比較好,並且永恆的語言而努力,結果今天看起來比較好笑,比較的蠢。如果有這樣疑惑的人,請看下下面的文章,要是沒有疑惑的,請繞道,因為你已經達到了更高的層次,看了以免耽誤你的時間!以下是文章:
我剛開始寫程式那會,十分在意於各種程式語言之間的比較。每次自己使用的語言被別人說三道四,心裡就跟打翻了五味瓶一樣,很不是滋味。
同樣情況下,換成那些在知識技術上過硬或業內稍有所成就的人,一般都會心平氣和,有理有據地跟別人爭辯。心裡壓根兒不會感到絲毫冒犯,更不會突然覺得自己缺胳膊少腿似的低人一等。反倒是那些新手們,沒有技術又眼高手低的半吊子,一番胡亂瞎扯後,就恬不知恥地開始罵娘。
為什麼有些程式設計師這麼糾結於程式語言呢?
我們都知道,作家所描寫的故事無論多麼跌宕起伏,精彩絕倫,人物勾畫的再怎麼惟妙惟肖,躍然紙上,都跟緊握在手中的筆沒有任何關聯。 說到底,筆和紙只是他們所熟悉的一種表達工具。就算改用石器,降低的也只是寫作效率,而非他們的創作功力。
“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: 用了很多成語,對語言的把控能力還有待提高。
作者的原題目我看的是萬能語言,我看起來有些不和文章意思,又因為今天有些感悟,所以整理下此文章,另外發表個人的見解。如果把C/C++比作斧頭,那麼JAVA就是刀刃比較厚的刀,PHP和ASP就是薄刃的刀,PHP和ASP一般只能用來切青菜,做一些WEB開發,而JAVA可以做WEB開發,也可以做應用程式,C/C++可以做應用程式,也可以更加底層的東西。在此說明的是,不是說PHP和ASP不能做應用程式,而是相對來說不怎麼適合,試問有人拿著薄刃的刀去砍柴呢?
本文轉載自:https://medium.com/