随笔 - 34  文章 - 0 评论 - 1130 trackbacks - 0

最近一阵子大家都在讨论C#,从性能到细枝末节;从无名小卒到所谓大牛;言辞也有从委婉到针锋相对,可谓热闹异场。所以,围观了这么久,我也来凑凑热闹。

 

首先,立个最主要的观点,批判某些人。不管你有多牛,说别人水平菜和无知总是不对的。做人总是要低调的。大家在这上面说话,一要表达自己观点;二恐怕是要与人交流:请更牛的指点瑕疵;请同水平的人讨论批评;给低水平的人一些学习意见和指导,这也是最重要的。如果一看别人说错了,就用尖锐的措辞将人批判的一塌糊涂,以此获取的优越感,还真不知道有多大意义。扬长避短只在竞争时,平时还是虚心低调,多做些好事,多给新人指点迷津,别误导人吧。

 

其次,我认为不管你有多大牛(真牛?加牛?),大家出来说话,总的对自己说的话负责任吧。也许你说的是实话,但不见得就是负责任。说道C#的性能,首先要有的参考对象,这样子才有比对的意义。指甲刀跟铡刀各有长短优劣,如果拿二者相比,显然很荒唐。C#与C/C++就是类似的对位。

 

第三,有句话说“存在即真理”,C#能有今天也有其存在的根本理由。它有它的职责,就像每个人在公司的职位一样,无法取代。最近公司后台程序在升级换代,因业务本身的独特性,最好是应用程序。项目时间只有区区几个月,需求每天都在变化。此时Java做应用程序程序丑陋,C/C++需要维护太多非业务的东西,前台语言根本指望不上,Delphi逐渐的没落,除了C#,别的选择还真没有,这就是存在的真理。

 

所以在批判一个东西前,最好先说明它的前世今生,让大家对它知根知底,无需争吵,自然会有结论。而不是今天抓住“泛型,标签”,明天嘲讽对“接口,委托,事件”的无知。说实话,我觉得C#里面所有的概念都很好用,就看你用在什么地方,怎么用了。

 

不过话又说回来,就算不比较,C#的程序性能确实不太令人满意,有这样的结果有很多原因,我总结了一下,大致有以下几点,还望大家指点:

  1,个人技术水平问题:刚入门的菜鸟与五年的老油条,显然不是一个层次,做出的东西自然差距很大;

      2,个人态度问题:对于一门语言,首先要接纳它,然后积极钻研,充分发掘它的潜力。举个例子,以前我用C#做个图形图像软件,当同时绘制10万个左右的图形时,程序慢的要命,用了缓存也没什么改观,后来学习了享元模式,经过一番探索后,软件性能与商业软件并不差多少;

      3,平台问题:运行在虚拟机上的代码总没有直接运行在机器上的代码效率高,这是毋庸置疑的。但同时也应该明白,他们的差别可以说是微乎其微。C#程序运行在虚拟机上固然效率打折扣,但这个虚拟机能使用CPU最新的指令;C/C++固然是机器代码,但因各种原因在支持最新CPU指令上总是慢了很多。此消彼长,结果就差的不是很多。

以上3点,如果你能解决了1,2那么第3也就不存在了。

 

所以希望争论派继续争论,想踏实学习回去继续踏实学习。如果有什么问题或好的点子,就找我一起需找解决办法和分享。

 

后记:

     最近在公司维护一个项目,重拾Delphi,结果发现Delphi的优点太多了,都数不过来,然后一边感慨C#为什么没有那些特性,一边抓脑袋熟悉各种语法:)

posted on 2010-07-10 16:49 倪大虾 阅读(...) 评论(...) 编辑 收藏