研究生,請你拒絕C++的愛(上)
????????昨天晚上,考研考的無聊了便沖到實驗室去寫了一點構思已久的代碼,在實驗室里面聽見一個老板說里面有個女生看見我的一個師兄學C++便也要去學。我真的是覺得這個女生勇氣可嘉。
????????細細想來,夸張點說我都有點悲從中來。那個女生應該是做遙感方向的,被逼到C++這條絕路上讓我頗有些覺得悲涼,更主要的是她是自愿跳C++這個大坑的,這甚至讓我有些想荊軻同志去做Suicide?Bomber時“風呼啦啦啊易河凍死人”的感受。當然,我承認我的這份感覺是摻雜了95%以上的故弄玄虛的水分的。只是我很想問那個學姐,C++有那么重要么?
????????我所在的學校是一個非常一般的以工科為主的高校,有特色學科,但是不是什么特色學校。按照我的感覺,現在的工科專業對于計算機這個Tool來說,完全是一種極度功利化的態度,這種態度讓我感覺很有些不爽。實質上在現有的工科專業中,計算機大約和數學是差不多的,都屬于工具性的學科,只不過數學更要基礎一點而已,大家似乎都對數學帶有著很敬畏的態度,而對計算機則是有些鄙夷。不合不分,不親不離,工科專業和計算機之間的關系很是尷尬,就有些像色情小說,是個男人總希望去窺探那么一把然而又恥于讓人知道。于是這種鄙夷+需要便構成了工科專業對計算機有些畸形的態度。正像我的老板一邊對我說,你學那么多計算機有什么用,一邊又讓我幫助那些不太會編程的師兄師姐們解決一些問題。
????????但是事情真的是這個樣子的么?大家都喜歡中庸的文化,所有的老師都建議我這樣對計算機有特殊偏好的人對計算機的追求要“適可而止”,要精深專業而粗通“The?Art?of?Computer?Programming”。然后給我舉出一大堆的理由,告訴我單純的編程好的人有多么多么的無能,他們面臨專業問題的時候多么多么的無奈。我親愛的老師們啊,在您勸導我不要走上一個極端的時候,為什么您要走上另外一個極端?
????????這個極端便是“極端的中庸”。不可否認,現代科學,尤其是工程科學是建立在大量的數學規則、海量計算和一些看起來合理或者不那么合理的推測和限制之上的。科學是講究絕對理性的,而這個理性的基礎卻是感性(公理系統),而工程問題上,感性這一點表現的更為明顯,有很多的問題實質上是半理性半感性所構成的,例如一些理想化的經濟學模型,感性這個東西是有很多講究的。和諧,美,合理化是理性化的感性所永遠追求的主題。對不起,扯遠了。也就是說,計算機在這里充當的角色通常有2種,進行海量計算,或者是使用理性去分析感性的模型。然而計算機本身也是個感性的東西。隨著工程問題的日益龐大,相關的計算機軟件也越做越大。當軟件或者軟件參與的計算復雜到一定程度的時候,便需要有理性化的感性去組織我們的工作使之容易為我們所用,往大了說就是要在工程中構造一種和諧的美。如果沒有這種美,那么工程本身就可能會被魔鬼拖向深淵。
????????很可惜,有的時候人對美的感覺并不一定是天生的,后天的訓練往往對于美感起到超乎想象的作用。訓練本身不一定能讓任何人都對審美達到一個不可逾越的高峰,但是至少它可以讓大多數人都知道什么是美的,什么是丑的,這樣才能樹立正確的方向。
????????軟件也是如此,沒有相當的訓練,寫出來的一堆?Bad?Smell?濃烈的代碼任誰都是不敢用的。然而我們的傳統觀念恰恰在培養這些到處遺留?Bad?Smell?Code的人。如同雞肋,食之無肉,棄之有味。
????????換過來來說,如果一個編程水平扎實然而專業基礎太差的人負責整個專業軟件的開發,這個軟件的可靠度,易用性,功能完善度,用戶友好度都有待考量。
????????我們該怎么辦?這樣的怪胎誕生自受過高等教育的人的手里,究竟是誰之過?
????????根本在于,我們忽略了“和諧”這樣一個關鍵的詞。和諧,而不是平均,這點在政治上,在美學上都已經是有了定論的,美的極致不是0.5,而是0.618。怎樣去尋找那0.618?
????????先來說說,我們現在有些什么樣的人才。
????????簡單來說,工科和計算機的結合不外乎以下五種。
????????第一種是純專業化的,除了專業,別的都不懂。現在除了一些做純學術的人外這樣的人已經不多了,但是不可否認的是,即使他們不懂計算機,他們仍然是專業領域里面的探路者。道路艱險,雖然他手無縛雞之力,但是他們的助手,同事,學生都會幫助他劈開荊棘,而如果失去了能看見那來自允諾之地的光的prophet,所有的人都會迷惘的。
????????第二種是專業為主計算機為輔的。這些人專業功底扎實,很扎實,非常扎實。雖然他們不知道專業的路怎么走,但是他們能清理掉腳邊的灌木雜草,在茂密的叢林里探尋出一條路,并且能告訴后人這條道的正確與否。但是他們往往執迷于自己的路上,越走越遠,直到有一天他們發現了真正的荊棘林之后,發現自己無法走通,于是悲慘的死在那里,只留下一個凄涼的墓碑。
????????第三種是專業為輔計算機為主。這些人不知道路怎么走,也不太清楚對于錯,但是他們都知道那個擺在遙遠未知的烏托邦,并愿意為之而奮斗。對工具熟練運用的他們是拓荒的中堅力量,如果不是他們披荊斬棘,所有人都走不出茂密的叢林。
????????第四種是專業結合計算機科學。注意,我這里說的是計算機科學。這些人是那些迷路在叢林之中的最好的本地向導。他們和第三種或者第二種人一樣,不知道真正的方向,甚至連對錯都不清楚,但是一旦遇到無法強行撼動的障礙時,他們便會帶領團隊繞開那些阻礙他們的泥濘。
????????第五種是計算機的專業人才。對于先知看到的路,他們一無所知,不知所以。在某條特別的專業小徑上,他們只能低著頭,跟在前四種人后面,做些苦力的活計,卻不能有半點想法,因為他們無法提出正確的想法。這些人實際上是一些悲情的人們,因為如果他們留在自己的家鄉,或者出去尋找一些自己能做的活計,他們一樣能活得很滋潤。但是他們也是值得敬仰的,如果沒有他們,單憑前四類那數量稀少的人,也是成不了什么事的。他們是專業領域值得然而沒有得到尊敬的墊腳石。
????????你屬于哪一種人?