头文字C的混战何时方能休?论从某语言怎么怎么样到我要怎样怎样的语言
昨夜月黑风高,小风搜搜地吹着,引得浪涛阵阵,园子里一番鸡飞狗跳,好不热闹。这是为什么捏?起因就是因为一篇炮贴,起初是linus大牛炮轰c++,后来某大牛引入园子里 剑指c#。于是乎好是一番热闹阿。
某冷眼旁观多时,苦思整夜,终于顿悟,其争论的焦点所在,其实是,一伙人在说某某语言不好,是因为他多了什么什么,应该什么什么样,一言概之,就是,这不是我好的那一口。另外一伙人呢则拼命的给之前一伙人布道,说其实老兄误会了,此语言应该这么这么用,其实这个语言是很好的。这不是对牛弹琴么?两边的出发点都是不同的,唯一相关的就是都关系到c#这门语言而已。其实某兄批判C#,正如老赵批判JAVA一样,老赵也没堪破这一关阿。
回过头来说说自己的看法。每一门语言的出现,都代表了一个大牛牛对于生活的看法(其实也就是一种对技术的观点),这是这门语言的基本出发点,每一个观点的存在都是有价值的,但是我也不想和稀泥说什么语言没有高低贵贱之分之类的毫无营养价值的话。这里用C,C++,C#,JAVA这四个最有代表性的语言来说明一下。
C的出现是因为Unix,所以C的哲学是简单,贴近底层,为底层编程提供一个更加适合人类阅读的实现(相比汇编而言)。
C++的出现是为了增强C,并且提供面向对象的实现,结果为了兼容C的变成范式把事情搞糟了,但是并不是说C++就不能用来做事了,只不过因为当年的失误造成了对开法人员的素质有个更高的要求而已,Linus不喜欢C++有他的理由,有他的视角,而对于做windows平台下桌面应用开发的C++在很多时候是唯一的选择。
JAVA自从改称平台了以来,一直被IBM等大公司把持。它的哲学是软件工程化,说白了就是让架构师搭好架子丢给一大群软件民工去编码的,有鉴于此,java在很长一段时间内都排斥一些新的编程范式融入java的血统里,因为这样会提高民工的培养成本。正是因为有了规范的范式,严谨的风格,所以阿三的超大规模软件工厂才能够存在。
C#其实现在的状况,起码在国内来说还是一门“工程语言”我所谓的工程语言,就是和Java差不多的用来码代码的砖头语言。当然很多人会本能的驳斥这种说法,但是事实如此,正因为如此,现在才会有用3.5的框架写2.0甚至1.1风格的代码的怪现象,不是大家不愿意学习,而是因为从工程的角度来说,本能的排斥新技术的引入,因为那样会带来不必要的风险,而工程非常讲究的就是风险控制。有很多到大公司应聘的同学抱怨说那个面试官如何如何,这个新技术也不懂,那个也不懂,其实都很正常,长期从事大型项目技术管理的人对工程的技术管理非常的牛,经验非常的丰富,但是也很大程度的限制了他们的视野,当然不能一概而论,因人而异吧,很多管大项目的牛人视野还是很开阔的,我只是说这种现象有其道理,不值得惊奇。
JAVA的红火很大程度上其实正是因为其保守而获得了工程管理人员的亲睐,而C#的激进可能是因为微软想以此来吸引更多的开发者转移到微软平台,然后卖更多的Money :)。
最后想要对firelong说的是,你的看法没错,因为你想要的不是C#而是有GC的C,但是你文章里的观点有问题,C++既然在做应用的时候不如C#和JAVA,是因为什么,是因为没有C#和JAVA那么高的开发效率,而不是执行效率,所以你对C#那些特性会影响性能的看法是错误的,去掉那些特性,剩下的还是C#么,去掉了的那些东西,其实剩下的C#既没有了开发的效率,也没有了执行的效率,反而成了拔毛的凤凰不如鸡,这才是真正的杯具
某冷眼旁观多时,苦思整夜,终于顿悟,其争论的焦点所在,其实是,一伙人在说某某语言不好,是因为他多了什么什么,应该什么什么样,一言概之,就是,这不是我好的那一口。另外一伙人呢则拼命的给之前一伙人布道,说其实老兄误会了,此语言应该这么这么用,其实这个语言是很好的。这不是对牛弹琴么?两边的出发点都是不同的,唯一相关的就是都关系到c#这门语言而已。其实某兄批判C#,正如老赵批判JAVA一样,老赵也没堪破这一关阿。
回过头来说说自己的看法。每一门语言的出现,都代表了一个大牛牛对于生活的看法(其实也就是一种对技术的观点),这是这门语言的基本出发点,每一个观点的存在都是有价值的,但是我也不想和稀泥说什么语言没有高低贵贱之分之类的毫无营养价值的话。这里用C,C++,C#,JAVA这四个最有代表性的语言来说明一下。
C的出现是因为Unix,所以C的哲学是简单,贴近底层,为底层编程提供一个更加适合人类阅读的实现(相比汇编而言)。
C++的出现是为了增强C,并且提供面向对象的实现,结果为了兼容C的变成范式把事情搞糟了,但是并不是说C++就不能用来做事了,只不过因为当年的失误造成了对开法人员的素质有个更高的要求而已,Linus不喜欢C++有他的理由,有他的视角,而对于做windows平台下桌面应用开发的C++在很多时候是唯一的选择。
JAVA自从改称平台了以来,一直被IBM等大公司把持。它的哲学是软件工程化,说白了就是让架构师搭好架子丢给一大群软件民工去编码的,有鉴于此,java在很长一段时间内都排斥一些新的编程范式融入java的血统里,因为这样会提高民工的培养成本。正是因为有了规范的范式,严谨的风格,所以阿三的超大规模软件工厂才能够存在。
C#其实现在的状况,起码在国内来说还是一门“工程语言”我所谓的工程语言,就是和Java差不多的用来码代码的砖头语言。当然很多人会本能的驳斥这种说法,但是事实如此,正因为如此,现在才会有用3.5的框架写2.0甚至1.1风格的代码的怪现象,不是大家不愿意学习,而是因为从工程的角度来说,本能的排斥新技术的引入,因为那样会带来不必要的风险,而工程非常讲究的就是风险控制。有很多到大公司应聘的同学抱怨说那个面试官如何如何,这个新技术也不懂,那个也不懂,其实都很正常,长期从事大型项目技术管理的人对工程的技术管理非常的牛,经验非常的丰富,但是也很大程度的限制了他们的视野,当然不能一概而论,因人而异吧,很多管大项目的牛人视野还是很开阔的,我只是说这种现象有其道理,不值得惊奇。
JAVA的红火很大程度上其实正是因为其保守而获得了工程管理人员的亲睐,而C#的激进可能是因为微软想以此来吸引更多的开发者转移到微软平台,然后卖更多的Money :)。
最后想要对firelong说的是,你的看法没错,因为你想要的不是C#而是有GC的C,但是你文章里的观点有问题,C++既然在做应用的时候不如C#和JAVA,是因为什么,是因为没有C#和JAVA那么高的开发效率,而不是执行效率,所以你对C#那些特性会影响性能的看法是错误的,去掉那些特性,剩下的还是C#么,去掉了的那些东西,其实剩下的C#既没有了开发的效率,也没有了执行的效率,反而成了拔毛的凤凰不如鸡,这才是真正的杯具