忍不住了,也加入大论战中来,仅说一下我的感受
前言:
作为一个准菜鸟,我一直是在博客园观摩,学习的。很少发表文章。
撑死记录一下自己的想记录的东西。
可是,最近看到,关于C#的问题,争论的实在是离谱。
其实,贬 C# 主力firelong,我还是挺佩服他的文章的,从文章中,能够看出来,他的知识很广,也有较深的研究。
但是相比之下,总感觉,firelong有点“性能狂热分子”的特性。
这种热性,就是死钻牛角尖,而不估计周围的大环境。
例证:
举个例子来说,现在的互联网中,flash为主的网页游戏,网站很常见了吧?或者大规模应用flash 的网站也很常见了。
而我们访问起来,体验很好。而这样的大规模使用flash搭建的网站,在5年前的国内,是很少见的,为什么呢?抛开技术门槛外,一个很重要的原因,就是环境,互联网的环境,人们的机器配置,还有更加重要的带宽,在当时的带宽下,一个非常炫的flash网站,是需要大量的时间来加载的,所以这个时候,使用flash建全站,不仅没有增加用户体验,而却适得其反。
而现在呢带宽,配置都上来了,flash网站也找到了自己的春天。
再举例:博客园中,大部分都是科班毕业的吧,大家基本都学过C语言,甚至有些人是C专家。
C语言的性能是很高的,毋庸置疑吧?同样的算法和运行环境下C的性能绝对比C#高,谁都没法辩驳吧?但是就是这么高性能的语言,在386的年代(怀念,那个时候都是玩DOS的),还是需要在核心复杂算法的地方,掺杂汇编语言来突破性能的瓶颈……
而现在,java写的应用程序,PHP的桌面程序(不太常见),.net,vc,c++,python……太多了,人们有感觉明显的差距么?我想好像除了程序员之外,普通用户不会去介意(不是没注意到,而是不介意)那启动的时候多了500毫秒的软件的。
原因是什么——人们的硬件水平提高了,原来的性能瓶颈不在是瓶颈了。
终于回到C#了,前面的举例,已经说明,在大的环境下,些许性能的损耗,换区开发的效率,是允许的,可以接受的。因为现在的时代,是一个高效的时代,信息的时代。产品除了性能外,更多的是讲究新颖,实用,创新,创意。时间性为互联网第一准则,占住先机,才最可能把握主流客户。
同样来说,用C高手来写的动态网页(也是可能的,不过太耗时了),来开发了一个sns网站,和用C#高手用asp.net开发的sns网站,我们假设网站的需求,功能都一样,那么各需要多少时间?人员工资的消耗各是多少? 用C来写的 网站,他的性能高,那么能够节省多少的资源呢?比C#开发的,能多节省 1条2G的内存?呵呵,大概也就是这样吧。但是他所开发用掉的时间,人员工资的消耗,后期维护的成本……不说了,想想就蛋疼……
一定有人说,你为什么用C的短处,和C#的长处来对比呢?
同样,性能方面,为什么非要用C#的短处和C来对比呢?C#在框架下,他的优点就是便捷,高效,同样注定在大型的、底层的开发中,不能胜任。不过要是开发个人实用工具类的桌面产品,或者互联网站点等,我觉得C# DotNet也不乏为一个好的选择。
后记:
说实话对于firelong来说,我觉得,如果你要对比两个事物,就要把他们放在同样的环境下,综合考虑,全面考虑,你让C和C#同时都做网站开发,然后都做桌面开发,都做手机开发,所有他们能够对比的领域,都对比过,拿出数据来,让人们明白在何种环境下,选择何种语言,这样,对于准备学习这门语言的学生和初学者,都能给个提醒,让他们明白自己的努力方向和将来的从业前景,这是一个真正评论家存在的意义,而不是不停的去抨击一门语言,这样的炒作,在程序界是行不通的。
与其再这里不停的喷一个自己看不惯的语言,那不如不用这门语言,也不要说什么这是哀其不幸,怒其不争之类的话,这些事情,让微软的工程师去考虑吧,你操心是没用的,这个框架是非开源的。
如果你再努力点,可以学学python,自己尝试着写一门语言出来。这样,在人们都尝试了你的语言后,会更加给你一个公正的评价。