探索C++語言中的秘密
許多編程人員學習C++總結(jié)經(jīng)驗為,有的覺得C++語言是一門獨立的語言,并不是在C語言的基礎上,可以直接學習C++不必先從C下手,希望大家切磋。。
評論數(shù)目也有一百多。為什么獨獨這篇能夠激起這么多的回應,想必是國內(nèi)的C++社群被C++壓抑太久,或者,嚴格來說,是被C++的教育方式壓抑太久。實際上,不管是在各大國內(nèi)論壇上。
還是在comp.lang.c++.moderated這樣的國際C++論壇上,乃至于在douban上的小組內(nèi),有心者都會發(fā)現(xiàn),對C++語言的細節(jié)的關(guān)注一直都沒有停止過,同樣,對C++語言的細節(jié)的抱怨也從來都沒有停止過。
一個例子就是comp.lang.c++.moderated上的一個技術(shù)牛人James Kanze說的,他說接觸C++十年了,到現(xiàn)在還需要不時去翻C++標準。這就難怪Eric Raymond老大在《The Art of Unix Programming》中說“C++是反緊湊”的了。C++中的細節(jié)太多,就算都看過了,也不可能都記住。更關(guān)鍵的是,就算都記住了,也不能讓你成為一個真正的好程序員。
絕大多數(shù)人都把細節(jié)太多(或者用貶義詞來說就是“陰暗角落太多”)歸結(jié)為C++的本質(zhì)問題,認為一切邪惡由此而生。也正因此,大約9月份的時候,Linus在郵件列表上說“C++是一門有思想包袱的語言;僅僅是為了讓程序員遠離C++,我也要用C”。這句短短的話在國內(nèi)引起了很大的反應,最初是劉江轉(zhuǎn)了Linus的話,然后云風和孟巖都發(fā)表了自己的看法;我也寫了一篇“Why C++”(后來發(fā)給Bjarne,Bjarne對這篇文章做了一個友情評注)。
然而,這一通渾水攪過之后,我相信引起的變化未必很大。大多數(shù)原先的反對者能從中找出反對的理由,于是更加反對;大多數(shù)原先的贊同者也能從中找到贊同的理由,于是更加贊同;而剩下來的原先沒有明確意見的,看雙方各有各的道理,可能還是沒有頭緒。
擺脫自我服務偏見——理性思考的前提 《決策與判斷》上提到過一個有趣的真實故事:1980年的某一天,美國空戰(zhàn)司令部的計算機突然發(fā)出警報——蘇聯(lián)的一枚核彈正在向美國本土飛來。司令部立即調(diào)兵遣將,迅速為一場核戰(zhàn)做好了準備,然而3分鐘之后,工程人員發(fā)現(xiàn)是計算機的一個小零部件故障造成的。
然而,這場虛驚之后,大眾的反應才是真正有意思的:原先支持核武裝的,認為現(xiàn)在感覺更加安全了(因為“事實證明這類的故障是完全可克服的”);而原先反對核武裝的則認為更不安全了(因為“這類錯誤信號可能導致蘇聯(lián)過度反應,引發(fā)真正的核戰(zhàn)”)。
類似的情況也發(fā)生在三里島核泄露事件之后,同樣的,反對者認為(“這表明管理部門沒有辦法安全管理核能”),支持者認為(“這正表明這樣的危險沒有想像得那么嚴重,是可克服的”)。社會心理學把諸如此類的現(xiàn)象總結(jié)為“自我服務偏見”。不幸的是,“真理越辯越明”其實只適用于理性思考者。
為什么啰嗦這么一大通呢?就是因為,一直以來泛濫于程序員社群的“語言之爭”,背后真正的原因其實并不在于語言實質(zhì)上的優(yōu)劣,而在于觀察者的眼睛。在觀察者的眼睛里面,語言并非一門工具,而是自己花了N多時間(其中尤數(shù)C++為最)來“修煉”的技能,對于這樣的技能,被否定無疑等同于自己被否定。所以,從心理學上講,語言并不是工具(盡管一直有這么一種呼吁),而是信仰。
這樣的信仰在越是花得時間久的語言上越是激烈。有趣的是,幾乎所有的“熱鬧”的社群都有這樣的現(xiàn)象,Java、Python、Ruby…莫不如是;因為就算語言本身不復雜,程序員仍然還是要投入大量的精力去學習各種各樣的框架類庫(想想Java的那些框架?)。因此這些語言社區(qū)的信仰未必不比C++社群的強烈。
然而,一旦弄清我們?yōu)槭裁磿颜Z言當成信仰,就非常有助于擺脫在看待語言時的“自我服務偏見”,從客觀的角度去看待問題?!爱斈憧吹降氖侵С帜硞€意見的證據(jù)時,試著去想一想有哪些證據(jù)是不支持它的”。
那么為什么要擺脫自我服務偏見?說小了,是為了成為一個更優(yōu)秀的程序員(誰也不希望因為偏見而去使用一門低效的語言乃至不妥當?shù)恼Z言)。C++語言說大了是節(jié)省生命(因為偏見可能導致越陷越深,浪費時間)。 所以,如果你能夠理性的思考我們將要討論的問題,避免自我服務偏見(就當你從來沒有花時間在C++上一樣)。那么我們便可以開始討論真正的問題了。
【編輯推薦】