這幾天,關於要不要學 C 語言這個問題,挺熱鬧的。一開始時覺得挺無聊的,就沒有湊份子。但現在看了大家的文章,也想說幾句了。不過我的重點,不在技術上,前面幾位朋友的文章,已經說了很多了。我想從發展的角度來談談。
 
    1、什麼是程式設計師——能捉老鼠的貓就是好貓
 
    正確的人,做正確的事,是成功的關鍵。既然說到“程式設計師與 C 語言”,那就不能不定義一下“程式設計師”的含義。
    頭懸樑,錐刺股,苦練嚴冬與酷暑,最終藝成下山,憑語言利劍,攜演算法威風,闖出一片江湖……這是傳統意義上的程式設計師。彙編、C 語言、資料結構,一個都不能少。在 1990 年之前,這幾乎是天經地義的法則。不會這些,你就找不到工作,換句話說,那時的電腦,基本上也只能跑這些東東。
    到 2000 左右,大量會 VB、DELPHI 的程式設計從業者(暫且叫這個吧)走上了崗位。儘管你可以鄙視他們,“基礎不好,難成大器”云云,然而,你不能否認,人家找到工作了,而且活得也不錯。
    2000 年以後,VB、DELPHI 也逐漸淡出眼界,J2EE/.Net 又冒出來了。真是“程式設計代有語言出,各領風騷數百天”。這些用 JAVA/.Net 的人,又有多少人是懂彙編的?有幾個人開發過裝置驅動程式?他們照樣活得挺好。
    那麼,什麼是程式設計師呢?我的定義是:能通過某種手段,寫出程式的人,就是程式設計師;能通過寫程式找到一份工作的,是活著的程式設計師;寫出好用的程式的人,是好程式設計師。在程式設計師的定義中,沒有“C 語言”的字樣。
 
    2、技術更替與市場法則——誰是看不見的手?
 
    亞當·斯密在《國富論》中指出,經濟的發展有一隻“看不見的手”在發揮無形的作用。那麼,IT 的發展呢?讓我們們回到 100 多年前,看看近現代科學是怎麼發展的。
  • 1665 年,胡克出版了《顯微術》,影響了地質科學至少 30 年,尤其是在化石觀測方面;
  • 1887 年,赫茲證實了電磁波的存在;1894 年,Guglielmo Marconi 有幸讀到了赫茲的論文,並開始做無線電實驗,1901 年,無線電波穿越了大西洋,掀起了無線通訊技術的革命;
  • 1905 年 9 月 27 日,愛因斯坦發表了質能方程;1945 年 7 月 16 日,第一顆原子彈爆炸;
  • ……
    更多的就不寫了,免得大家睡著了。引用上述事實的目的,是想讓大家跳出“程式設計”這個思維圈子,試圖去找到這隻“看不見的手”。
  • 如果沒有發現細胞、沒有化石觀測,顯微術能否這麼著名,還不一定;
  • 如果沒有 Guglielmo Marconi,赫茲“看到”電磁波的意義,也許僅僅是個被記載在物理教科書中的經典實驗;
  • 如果沒有原子彈的爆炸,質能方程能否象今天這樣家喻戶曉還是個問題……
    我想要表達的,已經非常明確了。技術是要為“應用”服務的。而“應用”,來源於“市場需求”。市場,決定了技術之路能走多遠。
    或者你會說,沒有技術革命,哪來的市場?是的,新技術的出現能帶來工業革命,但反過來說,如果沒有工業革命,所謂的新技術又有什麼用呢?不過是圖書館裡多了的一篇論文而已。況且,程式語言與“能引起工業革命的新技術”之間的距離,似乎比地球與太陽的距離還要遠那麼一點點。
    所以,是否要學 C 語言,不是由 C 語言本身決定的,也不是由專家決定的,而是由市場決定。市場,就是那隻看不見的手!
 
    3、再回頭看看 C 語言——夕陽無限好
 
    1972 年,C 語言被發明出來,廣為流行;現今的 UNXI/LINUX 系統核心,就是用 C 寫的。在此後的很長一段時間裡,或許是為了生存,或許是為了實現技術高手的夢想,C 語言一直程式設計師的不二法寶。
    但是,社會一直在進步。現在,C 語言的應用已經越來越少了,JAVA 等後起之秀,已經修成大器。你能看到這篇文章,就表明已經在關注,已經在反思,或者說,C 語言感覺到了自己的危機。
    不要害怕,害怕也沒用。社會前進的步伐,不是任何人可以延遲或改變的。既然 C 語言在走下坡路,我們又有什麼理由一定要嚴防死守,要求每個人都學呢?條條大路通羅馬,C 語言並不是唯一的選擇。
 
    4、適應社會——如果鬥不過你,就讓我跟你幹
 
    如果你想活下去,那就要適應這個社會。如果你的公司不用 C 語言,你也不必抱殘守缺,更不要認為“精通 C 語言的才是高手”。實際崗位中,需要你用什麼,就去學什麼。個人的力量,是很難改變社會環境的。
    說句閒話:做人做事,首先都要“識時務”。認清社會發展的大趨勢,是成功的關鍵。就算自己認不清路,那也要跟著能認清路的人一起走。如果我鬥不過你,那就讓我跟你一起幹吧!
 
    5、任何語言都會過時——保持積極的心態
 
    任何事物都有產生、發展、滅亡的過程,程式語言也一樣。而且,語言的更新換代速度非常之快。現在是 J2EE 和 .Net,沒準過幾年,又出來啥玩意呢。作為程式設計從業者,應該保持“活到老、學到老”的積極心態,而不是“學一門手藝,吃一輩子飯”。
 
    不必唱輓歌,C 語言的時代已經結束。與其花時間在爭論上,不如趕快去買一本新書。