近日,国外技术博客lbrady.com 发表了一篇非常有意思的博文。文章认为C++语言庞大而复杂,只有那些在c++开发之旅上吃过许多苦头的程序员才能真正的了解C++。显然作者受到一些刺激,他的博文名称为“永远不要相信那些自称懂C++的程序员(Never trust a programmer who says he knows C++)”。原文如下:
经过一段长时间的面试工作后,我意识到一个非常重要的关于C++的问题,那就是C++是个“严重两极化"的程序语言。我的意思是:C++是***一个完全不同的两类使用者都自称精通,却对它的理解大相径庭的语言。让我用下面这个图示说明。
图注:(自左向右,自上而下,所标文字为各阶段程序员对C++的认知。分别是:带类的C语言、那些模板报错信息真令人发狂、引用类型太不可捉摸了、到底啥是虚析构函数?这些异常说明符比Java的差、静态对象初始化段错误、我们需要一些规则。)
一般的程序员(特别有C语言基础的)都可以很快上手C++开发,并且感到挺熟练。如果是这样的程序员说他很懂C++,那他肯定在撒谎。因为当他继续在C++开发之路走下去时,他就会经历上图下曲线上标注的所有挫折,而后他就会认识到C++是一个多么复杂的语言。在面试中,这带来了一个优点(至少对面试官而言):很容易辨别哪些是经历过这些挫折,哪些没有。只要你提及C++真是一个变态的复杂语言时,挫折经历后的同学就会向你抱怨,他们在使用C++时遇到的127个小问题。而没有经历过的同学就会说:“安啦,那不就是带有类的C语言嘛?”
你对C++语言的理解到了哪一步呢?
【编辑推荐】