.NET门槛低?——没文化真可怕

今天又看到某首页博文里出现了“.NET门槛低”的字眼,我真有点想抽这位博主,你这么多年.NET大概白学了!白用了!我建议你赶紧转java阵营吧,.NET不适合你,真的!如果你不改变这个观念,请你以后出去别说自己是.NET程序员!

这位博主的观点很有意思,用.NET就不用懂算法、不用懂数据结构,不用懂很多东西,那我只能说你可能业务系统做多了,还是很初级的业务系统,如果这么多年你连一个.net算法都没写过,一个数据结构都没写过,真的很难想象你是怎么过来的?!就算初级系统,数据结构你总接触过吧。我来给你举几个很实际的例子,排程系统中你能用现有.NET基本类库实现所有功能吗?当然要自己写算法!计算机可没达到有这么高智能的地步,否则我们这种程序员肯定都要失业。运输系统中,路线优化能用基本.NET类库实现所有功能?至少要写个最短路径算法吧,微软可没提供现成的玩意。

博主还犯了个很低级的错误——把编程技能和学历挂钩,他说“做.NET不需要你科班出身”,你跟我说说,用哪种语言需要科班出身?大专生就写不出好程序了?也许你大学里编程学的不错,但我可以很明确的告诉你,这只能说明你课听得不错,但不能说明你自学能力强,呵呵。楼主自认为自己写过手持设备应用,实现过基本数据结构就很了不起了,说句实话,这玩意都是大学基础课里的作业,就算是大专生也是有数据结构这门课的。

批完某人,我来说说.NET门槛低这个观点的由来,这个观点很大程度上来自于java阵营,很多java程序员自命清高,觉得不拖控件简直是门绝学,呵呵,所以没事就拿.NET winForm开发中用的最爽的功能开涮,说我们这帮.Net程序员只会拖控件,行吧,那我问你个问题,你Eclipse写桌面应用不拖控件?就算你动态生成,你用起来舒服吗?明明有方便的东西不用,脑子进水了。我再问你个问题,拖控件能解决一切吗?如果性能出了问题,你拖个控件就能解决?如果内存溢出了,你拖个控件就能解决?写多线程,有控件能直接用?哎,没文化真可怕!

其实.NET和Java从语言本身来讲有太多的相似性,他们都有虚拟机、都有自己的汇编语言、都是高级语言,都存在内存垃圾收集方面的缺陷,你要说他们本身有啥区别,我还真说不上来。在我看来,Java比.NET更有优势的地方在于大量的第三方开源组件和项目,还有架构方面的框架(如Struts, Spring, Hibernate等),这一点.NET非常吃亏,很多东西都得自己来实现,或者通过COM调用。

举个很现实的例子,我们公司有Java项目,有.NET项目,前段时间要做XSS扫描,为了统一用上AntiSamy,我可是硬着头皮改了不少AntiSamy.NET的源代码,最让我胸闷的是AntiSamy官网明确写AntiSamy.NET功能很有限,很多东西无法实现,就连CSS扫描都和java不一样,因为java版本的css扫描用了另外一个java组件,但.net完全没有对应组件。说实话,java版的antiSamy很好用,也很方便,这事是非常能说明问题的一个真实案例,说明.NET程序员在实现一些高级功能时由于第三方组件的缺失,不得不自己去实现大部分功能。所以么,谁说.NET门槛低真的只能说明他没见过世面。

很多时候,做一件事是靠信仰支撑,如果你连信仰都没有,那你还不如放弃这件事。我的信仰很简单,把.NET发扬光大,所以我现在大部分的研究项目都是基于.NET的,因为我一直坚信.NET是门很不错的语言,但它的门槛完全取决于你用它来做什么,而不是它本身门槛低。例如,你用.NET来写人工智能算法,你说这门槛算高吗?

相关推荐