我為什麼反對語言之爭?我的語言歷險

gudesheng發表於2008-01-03
 
 
因為上一篇文章《誤導程式設計師的喧囂:評CSDN引導Java和Ruby之爭》,引起了一些爭論,我回了一些質疑,不過始終覺得沒把問題講清楚,因此再寫一篇。
 
十幾年前,我是從C++開始計算機程式設計的。(不算那些在課堂上學的FORTRAN,Pascal,Basic,Z80和微控制器(51)彙編,因為除了在學校安排下的上機——有的連上機都沒有——敲過幾行程式,沒真正用它們做過軟體。)那時我在一個電腦公司兼差。老闆是學校的老師,想法挺不一樣,看我能寫幾行程式,就讓我專門寫點小東西,裝在286、386的機器上,賣機子比別人快。
後來老闆的公司有了一點名氣,就開始承接軟體專案。有一個專案,是在幾個相隔幾百公里的地點傳資料。這幾個資料點,一起共享一根電話線。傳輸是通過只有可憐的14.4Kb的傳輸率的Modem進行的。電話線路質量似乎也不太好。開始這個專案也不是我做,因為一些變故,就落到我頭上了。
我拿到專案時已經有了一個框架。前面的人用Borland C++在DOS下,寫了一部分UI和通訊層。UI是用Turbo Vision(不知道有沒有人知道)——Borland的一種庫——通訊層是用Modem的AT指令,另外還用Code Base庫訪問資料庫。我那時是糊塗膽大,反正也沒什麼可怕的,學生嘛,也不存在怕丟工作,接手就做。昏天黑地了一個月,逃了不知道多少課,以致一門課的老師當堂指名道姓宣佈,考試必抓我。但鬱悶的是,系統還是一會工作一會兒不工作。也不敢跟老闆明說,只是含糊說,還行吧。
到了上線那天,下大雨,我帶著一個師弟和半成品,上路了。老闆大概心裡明白著呢,就沒去。那是我生平第一次出差。滲著汽油味的長途汽車出行200多公里地,晚上的時候,進了一個山窩窩。那裡的人倒也熱情,幾桌子菜,每桌子都堆到三層,大魚大肉,我還看見一塊生平未見的大蹄膀。接著又有一些酒氣熏天的傢伙逼著我們喝酒。想來我們的到來剛好成了他們的“巴浦洛夫”,大大地讓他們奢侈了一番。
第二天除錯當然不順。於是,我開始怪天氣,說大雨影響了傳輸,總之,不是我們的錯;)。對方似乎也挺相信。最後實在不行了,就約好那天天氣好了再來。回來的路上,我的心情很是陰沉。期末考試就要近了,我還沒抱佛腳。說實在的,對那個程式,我也沒什麼信心了。不要說很快天氣就要晴了,而我不能這麼快就能改好,就再改一個月也未必行……
回來以後,老闆也沒責怪我。他找了一個老師,說他能搞定。三天後,那個老師回話說,做完了!
我大為震驚。剛好老闆讓我幫忙測試,我趕緊看那老師到底是怎麼做的。
只見那老師根本不用C++,他用Foxpro。他做了一個軟盤,裡面是Novell的撥號網路,直接可以撥到一臺伺服器,這就是通訊部份;剩下就是:拷貝檔案和在資料庫裡插記錄。還用說,專案當然成功得不能再成功了。
我舒了一口氣,同時也有點不服氣。總覺得老師的實現技術含量不高,難度不大。在剩下的大學生涯,我把幾本C++的大厚本書裡的程式碼全敲了一遍,自以為是高手了。
 
畢業後去了南方。那時膽小如鼠,聽從父母的安排去了一家傳統企業。因為不甘心,週末總在電腦公司晃盪,和老闆們混熟了。有一天,一個老闆閒聊時對我說,有個桑拿管理系統,想不想做?500塊。我當然想做,要不我在電腦公司晃盪幹什麼?我做了一個開發計劃:30天。那老闆睜大眼睛看著我,“老大,別人兩個星期就做完了!”我說:“怎麼可能?”生意當然黃了。後來一打聽,有個老兄用VB,這種系統還不是小菜?
 
這事對我打擊很大。我每天學到12點,對C++,Window API,自以為掌握地很好,想不到還賺不了錢。看來C++是不行,我還是弄點別吧。我於是辭掉了工作開軟體公司。此後數年,從VB,VF到PB,從PB到Delphi,中間還用過Developer 2000,Java,Netscape的伺服器端Javacript。從通訊程式、ERP系統,什麼爛MIS,寫了一個接一個。當然,錢嘛,還是沒掙著。
 
後來實在挺不下去了。只好去打工。開始到一家很大的外企面試,面試官出了一道題:不用庫函式用C++實現字串比較。我那時有三四年沒用C++了,答案寫了一頁紙。面試官最後說:標準答案是三行。
 
我又開始疑惑了,C++怎麼又有市場了?後來找了家公司,老老實實從基層幹起來了。PHP,Oracle資料庫,Java,C++,公司要什麼我就做什麼;後來公司發展了,職位也逐年上升,而日子居然也一天天好起了。看看手上曾經做過的產品,已經有很多使用者在用,也頗有成就感。而語言,突然發現它在整個過程中是很次要的事情:
管理團隊,讓大家工作得開心又負責任,才能把專案做好,和語言無關。
和客戶或產品經理弄清楚需求,花的時間是整個專案的三分之一到一半:與語言無關。
產品設計最頭痛的是前後版本相容性問題,效能問題,冗餘,故障恢復問題,線上備份問題……大部分還是跟語言無關。
產品程式碼出Bug,邏輯出錯佔一半:和語言無關。
最頭疼的產品出錯,都是什麼產品環境配置問題,系統結構不佳啊,程式程式碼錯誤最多隻有20%,而且大部份是最簡單的錯誤。
而大部分語言問題,都是無論那種語言來做都會有的共性問題;而是不是某種語言的問題,就像吃飯的筷子是竹子做的還是木頭做的,好像忘了它的存在一樣。
 
這時,離我拿起第一本C++的教程,十幾年過去了。
 
現在再回頭看語言在我心中的變化:
剛出道時:什麼難學什麼。年少輕狂,把這個看成是智力挑戰。
4-7年:什麼流行學什麼。學什麼很功利主義,有時也很盲從,有時也是生活所迫。有時就像在押一個總是遲一步的寶,又總是押不著。這段時間是最痛苦的時候。
8-12年:忘了語言,只有產品。豁然開朗,也明白了為什麼程式設計師可以是一個一輩子的工作。
 
我為什麼反對CSDN引導Java和Ruby的爭論?請注意,我是反對CSDN來引導此次爭論,而不是反對什麼其他人願意在自己的田地裡吵鬧。除了我的個人觀點外,我是希望CSDN引導一些更有價值的事情。語言之爭多年前已經演練過了,被證明是愚蠢之舉;今天再討論,就像是在爭執姓資姓社一樣沒有價值。其次,這種爭執誘導了一些年輕程式設計師站隊押寶,我看到或處理過多次這種案例:非要做某種語言或工具,這對程式設計師的發展相當有害。參見上文《誤導程式設計師的喧囂:評CSDN引導Java和Ruby之爭》。
 
過去有位作家說,寫東西就像擰身上的一個痦子,擰出了就舒服了。好吧,我想要說的也說得差不多了,估計表達漏洞也多得很,各位網友儘管板磚。

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1325152


相關文章