罗马不是一天建成的,VC++的也不是凭空产生的——它一直标榜自己的从C发展而来的。VB好像是专门为了羞辱VC++而创建的。C#呢,是微软类C语言的新秀——其实也不新了。乱吧?貌似挺乱的,其实这里有章可循。
纯粹的C++是从C发展而来的,是要用OO这个理念来度化广大C程序员,让他们离苦得乐的。纯粹的C++语言很单纯,很好,不像VC++那么面目可憎。但是,语言都离不开类库和开发环境,否则就不足够复杂,不足以处理复杂的大系统。我刚刚看了STL,内容太少。MFC才能满足日常所需——有人跟我提过QT,我没玩过,暂时也不想玩。但是MFC貌似太复杂了,是的,不是太困难,而是太复杂。它把太多东西暴露给开发者,还告诉开发者可选,这其实很操蛋。每个人都有选择综合症!!!这又契合了我的口头禅——没有复杂性,不足以解决问题;有了复杂性,我们的多数经历都被消耗在复杂性带来的副作用上。
VB是据说这个地球上用的最多的语言,我不想去考证这一点。但是我能理解,因为它简单。并且它的子集被用来作为Office套件的粘合剂(VBA)。还是PowerShell出来之前,Windows许多内嵌脚本的官方语言(VBScript)。照我来说,VB最适合非应用软件开发人员啦。“不要问我从哪里来,我的故乡在远方”。用就行,别问那么多。它的简单照亮了VC++的笨拙和臃肿。
C#是个好语言,也是我之前用得最多的语言。它也摒弃了C++的复杂性,舍弃了一堆一堆的宏定义。将所有的数据和操作都拿类包装起来,不说再说什么全局的。也不再分什么头文件和实现文件。它的设计理念是尽量简单、自然,易于理解和使用。把库建在大一统的.Net Framework上,使用Visual Studio这个微软独有的IDE,不让你多花一点力气在跟主题无关的事情上。它被垢鄙的地方主要是性能问题,当然这是VC++的主场。但我想说其实考虑了性能、并做了适当优化的C#程序并不差,适合大多数情形。让我YY一下,我觉得花同样的时间,C#的程序员的代码质量会稍微高些,因为打击他们自信心、分散他们注意力的东西太少了。
与C相比,C++有了面向对象这个利器,使它在建模和代码复用等很多方面有了突飞猛进。但它保留了大量的宏定义,以及全局函数。甚至还有意打破封装,搞出了友元这种机制。从C++到VC++,不单是多了个IDE和MFC类库,它还搞出来一堆的基础类型。此外它修改甚至隐藏main函数,让人如坠雾中,实在可恶。
但是,一好遮百丑。希望它宣称的性能能够让我们愿意承受这些苦痛,阿门!