沒有吃夠苦頭的C++程序員稱不上了解C++
近日,國外技術(shù)博客lbrady.com 發(fā)表了一篇非常有意思的博文。文章認(rèn)為C++語言龐大而復(fù)雜,只有那些在c++開發(fā)之旅上吃過許多苦頭的程序員才能真正的了解C++。顯然作者受到一些刺激,他的博文名稱為“永遠(yuǎn)不要相信那些自稱懂C++的程序員(Never trust a programmer who says he knows C++)”。原文如下:
經(jīng)過一段長時間的面試工作后,我意識到一個非常重要的關(guān)于C++的問題,那就是C++是個“嚴(yán)重兩極化"的程序語言。我的意思是:C++是***一個完全不同的兩類使用者都自稱精通,卻對它的理解大相徑庭的語言。讓我用下面這個圖示說明。
圖注:(自左向右,自上而下,所標(biāo)文字為各階段程序員對C++的認(rèn)知。分別是:帶類的C語言、那些模板報錯信息真令人發(fā)狂、引用類型太不可捉摸了、到底啥是虛析構(gòu)函數(shù)?這些異常說明符比Java的差、靜態(tài)對象初始化段錯誤、我們需要一些規(guī)則。)
一般的程序員(特別有C語言基礎(chǔ)的)都可以很快上手C++開發(fā),并且感到挺熟練。如果是這樣的程序員說他很懂C++,那他肯定在撒謊。因為當(dāng)他繼續(xù)在C++開發(fā)之路走下去時,他就會經(jīng)歷上圖下曲線上標(biāo)注的所有挫折,而后他就會認(rèn)識到C++是一個多么復(fù)雜的語言。在面試中,這帶來了一個優(yōu)點(至少對面試官而言):很容易辨別哪些是經(jīng)歷過這些挫折,哪些沒有。只要你提及C++真是一個變態(tài)的復(fù)雜語言時,挫折經(jīng)歷后的同學(xué)就會向你抱怨,他們在使用C++時遇到的127個小問題。而沒有經(jīng)歷過的同學(xué)就會說:“安啦,那不就是帶有類的C語言嘛?”
你對C++語言的理解到了哪一步呢?
【編輯推薦】