除了模式,上周日我和sunway还谈到了C++的问题——结果周二就看到Linus Torvalds就C++的话题跟人吵架,引发了国内C++圈里的大讨论——孟岩版,云风版,刘未鹏版。我也来扯一篇吧,不过层次肯定比这帮职业C++高手差多了。
云 风最近一次从C++回到C我是知道的,还曾经因为C是不是需要提供GC的问题跟他有过讨论。那天sunway跟我讨论的主要观点跟云风及Torvalds 差不多,其实他们也没有说C++就是绝对的一无是处,但是C++也绝非万能——我觉得这是在这次争吵中,C++铁杆支持者们所犯的最大的错误。
作为Git的核心开发者,Torvalds选择C当然有他自己的理由,Kakurin如果觉得不爽,大可以自己用C++写一个类似的东东来比拼一下嘛。
其实我并不是很认同C++中的所谓“mental包袱”的说法,是不是包袱关键还要看用的人。如孟岩所说的《用C设计,用C++编码》就是一种摆脱“mental包袱”的方法。但是必须承认的是:绝大部分人还是会被这所谓的“mental包袱“所影响。当你在程序中用上了STL, boost甚至loki的时候,难免会不由自主地越陷越深,抽象程度越来越高,最后不可避免地走向过度设计和过度抽象,背离最初的目标。但是C没有提供这 些可能性,所以C程序员只能很直接地奔目标而去,把所有的抽象都抛在脑后。
我觉得C++和C就如