Why .NET Sucks?

写此文纯粹为了回复.NET不死,为什么企业招聘都要java? 一文。从01年以来,.NET从最初的2000beta2一路凯歌猛进到了2008,Framework从1.0一下子跃进到了3.5,从3.5以来 wpf,wcf,wwf,Linq,ASP.NET MVC,我们的感觉是.NET很好很强大,什么都有。但是.NET的程序员怎么就越来越不值钱了呢?很简单的对比,在我原来所在的一个公司里,有java的项目也有.NET的项目,做Java的程序员待遇普遍比做.NET的高出一大截。就程序员本质来说其实并没有多大的区别,那么问题就只能在.NET本身上头来找,所以就有了本文:Why .NET Sucks?

第一,一种技术是否值钱,首先取决与市场价值,当然对于C#或者Java这类应用领域非常一致的商用语言来说,其实越难学的也就是工资越高的。越难学的工资越高这句话绝对是话糙理不糙。难学说明了人力成本中的培训成本会比较高,所以这类技术人员的工资确实就要高一些。那么.NET的超级工具,让我们开发起来超级方便的超级工具:VS.NET其实就是制约我们工资提升的最大障碍,老板会理直气壮的告诉你,会用VS.NET拖拖拉拉就能开发的程序员量产起来快得很,就这点工资你不老实干就开掉你换一个,你后头还有好几个找不到工作的.NET程序员供我选呢。

其二,.NET提供给我们的发展空间太狭窄了(或许是我眼光太狭窄),罗列一下之前我提到过的:wpf,wcf,wwf,Linq,ASP.NET MVC,微软把什么都做了,留给我们的除了傻乎乎的拿起linq,wcf,wwf去吭叱吭叱的码格子堆代码,还剩下些什么呢?架构设计?那是少数人的事情毕竟也轮不到程序员。做业务分析?那也是少数派报告。不可能一个项目从头开始全部手写代码吧?这样是不是活回去了?java程序员从Struts到Spring到Hibernate可谓武装到了牙齿。整套下来还不要钱,觉得Hibernate不合适还可以换ibatis,apache下头一大队候补的佳丽,可谓是后宫佳丽3千,试问.NET又能够靠什么让六宫粉黛无颜色呢?前有JAVA的堵截,后头还有ROR,Python,PHP,一大群追兵,从标榜自己开发起来不是一般得快的ROR(不知道沉得是否也快),到标榜自己跑起来飞快的Python(豆瓣的神话造就了Python的急速传说),还有标榜自己光膀子不怕穿鞋,完全免费的PHP。再换句话说,我们就坚定不移的跟着微软走吧,那么除了拿着VS.NET做网站,我们还剩下了些什么事情做呢,那就怪不得人家招JAVA的人多了,用JAVA做工作流中间件的可以卖钱,你用.NET试试,人家直接跟你说我们用WWF了,还用花钱用你的?做个ORM,MVC框架能卖钱?到处都是免费的,微软自带的,绝对没有任何一个开发企业会为了ORM还是MVC什么的花一分钱,要用都用开源的,所谓微软这种大包大揽的行为极大的打击了开源团队的积极性,MonoRails还没说要收钱呢,微软就忙不迭的搞了个自己的MVC框架出来。看着Java下第三方厂商的中间件热火朝天的时候,还真不知道我们应该在.NET下做点什么能卖钱的。

 

其三是我个人多年来在使用.NET的时候的积怨,其实我到现在为止都挺厌恶微软给.NET设计的API,太恶心,尤其是Drawing下边的哪些API流露出浓重的MFC的味道。而且异常处理的机制也异常的混乱,既然有了异常处理的机制就用异常来解决问题嘛,结果有的通过返回bool来提示错误,有的通过错误标示的参数来返回错误,异常也没有声明的机制,结果很多时候在使用一些类的时候根本不知道有哪些异常需要处理,很多新手就很笼统的给个Exception了事,那么这个异常处理的机制还有什么用呢?习惯了JAVA的声明式异常之后会很迷惑于这种模糊的方式。

 

还有一个很搞笑的地方就是异常的抛出:throw ex,throw,throw new XXException("error",ex);一个会中断异常的堆栈,一个不会另一个也不会,这不是多此一举么,简直就是茴香豆的回有四种写法。直接让throw ex不会中断异常堆栈就行了何必还要多此一举呢?

-------------------------------------------------------原文------------------------------------------------------------------------------------

还有一个很搞笑的地方是,你在捕获到一个异常的时候还不能直接把它抛出去,还要new一个异常,把捕获到的异常作为InnerException包裹一次后才能抛出去,不然在调试的时候就跟踪不到真正出现错误的地方而是在直接抛出的那个地方中断了。

-----------------------------------------------------------------------------------------------------------------------------------------------

都到了3.5了都还没有提供对DynamicProxy的支持,结果现在.NET下的AOP看起来都还是那么怪异,实现起来也麻烦。

 

其实发了很多牢骚,说.NET Sucks也不过是气话,我们无法否认.NET是一个伟大的开发平台,无法否认微软是一个伟大的公司,不过.NEt再伟大,得到利益的始终是微软而不是广大的开发人员而已。

 

 

posted on 2008-09-08 23:17 亚历山大同志 阅读(5616) 评论(39)  编辑 收藏 网摘 所属分类: 随笔

评论

#1楼  2008-09-08 23:38 Cat Chen      

先回一句──你对.NET理解非常有限,使用错误的观点不足以支撑你的论点。   回复  引用  查看    

#2楼  2008-09-08 23:40 5207      

有道理,微软的。NET确实是个高生产力的东西,但是正是生产工具先进了,人的作用就简单了,现在50%的程序员是和工厂里的普工一样,而且现在软件公司对技术部门划的很简单就是生产,业务都是从市场部门或者咨询部门过来,研发部门没有业务深度的人员,也就难有业务精度的东西出来。

相比技术,其实任何一个软件产品其业务是才是灵魂,业务是技术不可能替代的。就如同C这个语言,难道几十年前的东西如今无生命力?C#都四个+了,呵呵,还是不及C语言,关键还是如何用好吧,毕竟本质没有变化!   回复  引用  查看    

#3楼  2008-09-08 23:41 Cat Chen      

你捕捉了Exception之后,不能直接throw出去,是因为你不知道几种throw写法的差别。你知道throw ex;和throw;的区别吗?throw ex;就是你所说的情况,把捕捉到的ex重新抛出,会破坏掉ex调用堆栈。但是throw;不会,这种写法让ex在保持调用堆栈的情况下继续冒泡。

是你不懂,而非.NET不行。是你能不能拿高薪,而非.NET能不能让你拿高薪。   回复  引用  查看    

#4楼  2008-09-08 23:43 Cat Chen      

另外,从你说话的态度看来,好像你觉得ASP.NET MVC是个收费的框架,既然有免费的就不会有人选择收费的。你连它是免费的都不知道,就不要去无理攻击它了。   回复  引用  查看    

#5楼  2008-09-08 23:45 Kai.Ma      

比较同意Cat Chen的观点。   回复  引用  查看    

#6楼 [楼主] 2008-09-08 23:47 亚历山大同志      

@Cat Chen
没说过ASP.NET MVC是收费的。
throw这个例子确实考虑欠周,但是缺乏对异常的声明和.NET api中对异常处理的混乱来说是确实存在的问题   回复  引用  查看    

#7楼  2008-09-08 23:55 Clingingboy      

只怪.net阵营还不够强大,学.net和学java的路不同,不得不承认java的程序员普遍比.net的素质高些一层,这是微软推广的战略所决定的,讨论这个问题的应该都不是初学者.我们还是从自身找问题吧.提高自己才是正道.   回复  引用  查看    

#8楼  2008-09-08 23:57 Clingingboy      

其实java开源给你太多的选择有时候反而不好   回复  引用  查看    

#9楼 [楼主] 2008-09-09 00:01 亚历山大同志      

@Cat Chen
看待问题的角度不一样也没有必要起争执,我的主题是.NET为什么让程序员越来越不值钱。我关注的是程序员个人价值的体现而不是一个技术是否优秀,没有充分的理由认为java就比.NET优秀多少,但是java这个到处是后妈的娃儿确实让程序员得到了比.NET这个有个强势的妈咪的娃儿,这已经充分证明了我的观点。某些技术细节的问题并不影响我的观点。同时感谢你帮我指出本文一个技术细节上的欠妥之处。   回复  引用  查看    

#10楼  2008-09-09 00:25 Kevin-moon      

高薪 取决与你的能力,而不是一门语言,
MS把编程变成简单,我觉得很好,这样提高开发速度.但是如果你只停留在运用上的话,可能最后就只剩下抱怨MS了.对于工具,先运用然后了解,最后掌握其思想.
对于初级的NET程序员来说,的确存在楼主说的问题,但也就只限制在这个级别上而已   回复  引用  查看    

#11楼  2008-09-09 00:30 Cat Chen      

@亚历山大同志
.NET不是让程序员不值钱,是让食物链底层的程序员不值钱,但是任何处于食物链底层的生物都不值钱!

Microsoft为什么赚钱?它不用.NET?为什么它用.NET写的VS2008能够卖那么贵?为什么它的VS2008团队能够领那样的工资,而一般的vendor不行?因为它处于食物链的顶端,这才是问题的本质。

所谓的食物链,就是谁需要花自己的钱来使用别人的工作成果。做.NET控件、组件、平台的公司,虽然给Microsoft吃,但同时也吃更小的vendor,所以一样赚不少的钱,这个你写文章时就没考虑进去吧?你考虑的就是消费别人做好的控件的那种底层生物,这有什么好说的,没办法顺着食物链往上爬,就肯定被别人吃,这跟语言和框架没有关系。

Java只是回避了食物链这么底层的一个分支,不估计这么小的vendor,希望vendor都是有一定体积的,这些vendor不是面向个人终端做零售产品的,而是面向企业的,要吃也要吃其它的企业,当然不能直接比较。   回复  引用  查看    

#12楼  2008-09-09 00:48 Anders Cui      

虽然.NET不是薪酬低的直接原因
却不能回避平均工资比Java低的事实   回复  引用  查看    

#13楼  2008-09-09 01:52 曲滨*銘龘鶽      

你说.net差劲就差劲被;还拽什么英文啊?能用中文的用英文我愤一个再说;

重博主的观点来看,应该是对初级程序员的;
第一点部分正确,最后那个不对了,对于初级程序员;java 的也很多,可能比.net还多,而且也是说开就开;

第二点:也是有一定道理的,不过不是初级程序员该考虑的;
第三点:我以前用VC的还感觉java 的异常方式很诡异那;这条带有的个人感情色彩太多了点,不适合给小朋友看。


---- 博主的思维看来已经进入,看山不是山、看水不是水 的境界了(这个境界容易拿东西去比较,找到共同点然后寻找自己似曾相识的东西,追求一同百通的思想,用ms的东西去和sun比较,或拿sun的东西去和ms比较);

不过和 看山仍是山,看水仍是水 还差些许
(这个境界就会发现,不是什么都可以一通百通的,可通的东西很多,不可通的东西更多、这里不是单单只开发语言)

----微软的战略是以易用便宜为原则的,程序员相对挣钱少是通病 VB 当年就没 Delphi 赚得多(据我个人经验),不过VB占有率很高

----这个不光体现在开发语言上,数据库 sqlserver 管理员,多半也没oracle 管理员赚的多,跟微软走了解不了这一点,必然会吃亏的

----对不同的事物要使用不同的方法,用微软的产品非要寻求和sun一样打法视乎就有些不适合了,本身就是不正确的;   回复  引用  查看    

#14楼  2008-09-09 02:52 斯克迪亚      

为什么要眼红JAVA那种重复造轮子的蝇头小利呢?
微软慷慨而公平地给了每个程序员一双翅膀,而其中的很多人却还在地上拼命地和别人赛跑挣食。   回复  引用  查看    

#15楼  2008-09-09 07:48 有物先天下 混成不知名      

差不多的两个人,用同样的时间精力分别学习.NET和Java。
当学.NET的人可以去工作的时候,这时候他是个新手,他比同样属于新手的Java程序员工资是要少。
但另外那个学Java的人还根本不能工作,如果学.NET的这个人早工作的同时继续学习,等学Java的那个人开始工作,学.NET的这个人已经不是新手了,工资至少不会比那个学Java的程序员少。

让中国收入低于3000的人全部失业,中国的平均工资自然就会高很多。但这绝不是好事。

对于Java来说不过是让那些和底层的.NET程序员学习了差不多时间的人不能工作,自然平均工资就高起来了。   回复  引用  查看    

#16楼  2008-09-09 08:47 kwklover      

不对博主的观点发表意见,只想列一些历史
1,ASP与PHP
ASP:MS的东西,1996年发布ASP1.0,现在已经退出主流Web开发平台领域了,MS也不再继续更新了
PHP:1995年发布PHP1.0,目前在互联网应用上绝对的主流,而且还有持续的生命力。

2,JAVA对.Net
JAVA:1995年开始出现,至今已经成为了继C/C++之后的第二大基础软件开发平台。
.Net:2000年开始出现,至今未必超越Java。

................   回复  引用  查看    

#17楼  2008-09-09 08:57 横刀天笑      

@有物先天下 混成不知名

这提法新颖,呵呵
  回复  引用  查看    

#18楼  2008-09-09 09:14 kiler      

平均工资比Java低的事实这对大部分开发人员来说才是最沉痛的打击,.net好有什么用,大家能吃饱饭才是最重要的。   回复  引用  查看    

#19楼  2008-09-09 09:22 fuxy      

没有任何意义的争论,存在就有理由,没被淘汰就有优势,工资不高,是由很多因素决定的,而不是开发语言。   回复  引用  查看    

#20楼  2008-09-09 09:56 Cat Chen      

@有物先天下 混成不知名
我统一这种说法,Java只是把低收入群体直接砍掉。   回复  引用  查看    

#21楼  2008-09-09 09:59 Mainz      

Java的企业应用的确比.net多多了,这是事实。

.net要绑定windows平台,而且升级很快。微软不厚道,企业不用。

这是市场大环境,偶们改变不了,唯一能改变的是我们自己了。   回复  引用  查看    

#22楼  2008-09-09 10:31 一叶一菩提,一花一世界      

我觉得楼主的观点并不准确,我在金融行业的软件部门工作,就我自己的亲身感受,造成现在这种情况的原因是,java赶上了好时代,它出现时间早,很多大公司的平台搭建都是后台unix系的操作系统,用java来开发应用程序,你说说这样的结构怎么换成.net,其实用.net开发比用java不知道有多大的便利,但是老大们是不可能把他们的服务器换成windows的,只有他们原来有一些系统是asp的,才会移植到.net平台。这么其实就是跨平台的问题,如果.net能够很好的跨平台,相信会有更大的应用空间,不过貌似听起来很悬,其实我觉得在unix下开发也是痛苦,不是一般的痛苦,也不知道为什么要把事情做得这么累   回复  引用  查看    

#23楼  2008-09-09 10:43 路缘      

半年前我就意识到了这一点。虽然有些晚了,但这是成长的代价。
我已经半年不搞.net了,弄了半年的C、C++,让我对未来越来越有信心。
博主和其他人说的都有道理,只是各自的出发点不同,所以难以形成一致看法。
我半年前说搞web待遇低,但并没有说搞web没有前途。只是自己愿意一辈子做技术,所以越往技术的底层深层发展,自己越有兴趣,提高也越明显,成就感也越明显。我理解博主的看法,也认同Cat Chen等人的观点,这让我想起了一位前辈对我说的话,你是选研发还是应用开发。
而我个人的理解是
应用开发=业务能力 + 计算机技术
研发=专业能力 + 计算机技术。
做应用开发,有时候换了工作,业务也换了,很难积累自己的优势资本,而做研发,如搞数字图像,换了公司,专业知识和计算机技术一般不会改变,自己的优势也就越来越明显。

还是回到本文的讨论,不可否认,开发语言只是个工具,但同样不可否认,开发语言在很大程度上决定了其行业领域,而不同的行业领域之间,平均待遇的差距不可避免,做网站和做通信,平均待遇的差距应该是很明显的,而做网站一般就java/php/ASP.NET,做通信一般C/C++.   回复  引用  查看    

#24楼  2008-09-09 11:18 michael_fei      

有道理,微软的。NET确实是个高生产力的东西,但是正是生产工具先进了,人的作用就简单了,现在50%的程序员是和工厂里的普工一样。
我的主题是.NET为什么让程序员越来越不值钱。

---------------------------------------------------------

不赞成这样的观点。
使用提高生产力的工具,为什么会使得使用工具的人越来越不值钱了?
想一想,同样的一份同情,以前需要10天完成,现在只需要5天,剩下的5天你就应该去做你更有意义的事情、更有价值的东西,而不是白白地浪费。
使用人工计算一工厂的考勤与使用软件计算一工厂的考勤,哪个生产力高?是不是同样说明人越来越不值钱了???
  回复  引用  查看    

#25楼  2008-09-09 11:59 A.Z      

--引用--------------------------------------------------
michael_fei: 有道理,微软的。NET确实是个高生产力的东西,但是正是生产工具先进了,人的作用就简单了,现在50%的程序员是和工厂里的普工一样。
我的主题是.NET为什么让程序员越来越不值钱。

---------------------------------------------------------

不赞成这样的观点。
使用提高生产力的工具,为什么会使得使用工具的人越来越不值钱了?
想一想,同样的一份同情,以前需要10天完成,现在只需要5天,剩下的5天你就应该去做你更有意义的事情、更有价值的东西,而不是白白地浪费。
使用人工计算一工厂的考勤与使用软件计算一工厂的考勤,哪个生产力高?是不是同样说明人越来越不值钱了???

--------------------------------------------------------



同意,JAVA的薪水高很大程度是项目决定的,JAVA的大型项目数量远远超出.NET,行业的需求决定了项目的数量,凡是那些地主,土豪,都毫不犹豫地偏向JAVA平台,JAVA不再是一种语言,而是一个平台,更透彻的说是一个品牌。


当.net推出时,很多语言都打上了.net标记,c++/vb.net/j#, m$为了推广平台不留余力的支持多语言,最后才发现这个平台并没有想象中的哪样得到品牌地位,得到知名度,应为很多领域不是这个平台可以去涉及的,m$才发现.net的平台仅作为一个操作系统的附加值是不够的,而需要贯彻到整个产品线。这个时候已经晚了。



IBM一日不倒,.NET就永远只能屈居其下,等着分残根剩饭,作为卖血廉价输出国,日本市场,欧美市场永远是包工头淘金的热点,敢问.NET在这些地域打拼多年,是否达到了预期的目标?



再次回到lz的内容,java,php,ROR,无非就是HTML文本输出技术+服务器变量控制,sina的页面可以用asp,也可以用asp.net更可以用种种语言,这些不是关键的问题。反转,容器,远程对象这些JAVA的特征没有给JAVA带来多少光辉,而真正给JAVA带来价值的是你看不到的数以万计的服务,应用提供商。
  回复  引用  查看    

#26楼  2008-09-09 12:17 I坐标      



很诧异又看到这样的帖子横空出世。

首先你提到的技术是否值钱与市场价值的关系毫无说服力,因为我只看到了一句话,然后就扯到了两种技术的学习的难度,接着就两种技术的学习难度来比较其价值。但是我很郁闷,Java真的很难学吗?其实Java并不难学,Java难就难在一个学习者面临太多的选择而导致他失去了短期的目标。一个Java初学者当他掌握了语言技能后,他就会开始进入实际的技术演练。这时就可能会遇到不同的平台,例如WebLogic,Tomcat,JBoss等等,这些平台说说相同也不相同,说不相同也相同,它们之间存在着千丝万缕的关系但是却又因为各自的理念不同而对JEE的实现也不同。设置这个初学者还会遇上轻量级的平台,例如Hibernate,Spring,JDO等等,所谓乱花渐欲迷人眼,一个初学者往往看了这个用这个,看了那个用那个,于是才让一个初学者觉得无处着手。其实一个Java学习者只要跟着项目走,很快就会上手并成为熟手,然后进入良性循环的学习轨道。
相反,.NET的入手是最困难的。因为.NET一开始就是使用编辑器将开发者引入了一个似乎做什么事都“拖拖拉拉”的环境。这就造成了.NET的初级开发人员不会去考虑模式,分层,抽象等等概念。而当他们醒悟过来时,又不得不去学习这类的东西,从而导致了.NET开发人员开始信心满满,中期却犹豫不前。

其次,你真的确认WF(即你说的WWF)是一个即开就食的罐头?

其三,不知道怎么说了。你已经先入为主了,一个人的观念别人是管不了的。

其四,抛出异常本身就是一个错误,只有在毫无办法的情况才将异常抛出,否则请及时处理异常,因为无论任何技术,处理异常都是一个浪费性能的操作,更何况是冒泡。   回复  引用  查看    

#27楼  2008-09-09 14:33 Ivony...      

片面的观点。

关于异常的理解上面很多人说过我就不说了。

什么没有throws导致混乱更是无稽之谈。作为一个方法本来就没必要知道自己所调用的方法会抛出什么异常,你只要干好你自己份内的事情就好了,一个ShowItems方法需要throws SqlException才是真的乱七八糟。

而且,所有方法的智能提示里面就说明了自己会抛出什么异常。



关于throws这种语法的讨论在C#诞生之初就已经充分讨论了。C#刻意避免了这种无趣的语法设计同时避免了相似关键字问题,为什么C#不用final而是sealed来标识一个类是不可被继承的?



再来说说培养成本,难道你真的决定商品的价格的因素就是商品的成本?那你家里一定摆满了黄金马桶或者是镶钻的吸尘器。

商品的价值是由它的价格来决定的,不是说因为Java的学习成本高,开发成本高,所以就一定要卖得贵拿得多的。显然这种状态的持续只会使得Java的产品在市场竞争中越来越失去竞争力,Java程序员的需求量持续下降直到消亡。这无论对Java还是Java程序员来说都不是一件好事。别忘了Java的成本优势才是使其大行其道代替C++的原因,如果现在这个成本优势丢失了。无论.NET程序员工资如何少,但是将来的需求量是看涨的。   回复  引用  查看    

#28楼  2008-09-09 15:06 YITIAN Studio      

首先感谢楼主为了回答我一个问题开了一个找骂的帖子。
我始终认为,程序员家族对别人的不容忍和对自己的自以为是到了令人发指的程度。而且会越演越烈。
不过看了这么多评论,.NET还是比较悲观的啊。。。就像我们班一个研究算法的大牛问我,“.NET有前途么”我说“.NET有前途没有我不知道,但是我有前途。”
楼主为了我的帖子挨骂啦。十分抱歉。   回复  引用  查看    

#29楼  2008-09-09 16:35 飘遥      

呵呵……   回复  引用  查看    

#30楼 [楼主] 2008-09-09 18:26 亚历山大同志      

@YITIAN Studio
习惯了,自古文人相轻,程序员再怎么也算个坐办公室的白领嘛,空调吹多了燥火,火气大是正常的,都认为自己的看法是正确的,包括我自己,我不是也首先对微软的娃儿说三道四的,如果没有被骂的准备和容忍能力,干脆就不要发到首页来了,要么干脆就不要发,啥都不说就绝对不会被骂。
我想说的是,微软没什么不能被说的,微软不是全能,不是上帝,不是上帝那么就会有错,有什么不能说的,.NET的API就是绝对真理?那不是必然,有的部分很丑陋我不喜欢,也许有的人喜欢。相对应的,JAVA亦然,python也是,我也觉得python某些语法很丑的。做技术没有包容性,永远只能成为微软的一个跟屁虫而已,也许应用开发只需要这样子就够了,所以做应用开发为主的.NET程序员,就不那么值钱了。   回复  引用  查看    

#31楼  2008-09-09 18:43 John Rambo      

(1) .net 并不简单,而是只需要简单了解就能做事。
  回复  引用  查看    

#32楼  2008-09-10 00:27 问天      

.net普遍工资低的情况是因为宣称自己会.net的人多……
.net占据了金字塔的底层……但是,这不意味着.net这条路就不能爬到顶上去……

今天新闻说"伦敦证卷交易所使用的基于微软.Net框架的股票交易平台,在周一发生8年以来最严重的系统故障,迫使世界第三大股票交易所暂停交易约7个小时。"。

猜想,能够做这个交易平台的.net程序员收入铁定不低……

楼主中间一段扯得很有意思:
“前有JAVA的堵截,后头还有ROR,Python,PHP,一大群追兵,从标榜自己开发起来不是一般得快的ROR(不知道沉得是否也快),到标榜自己跑起来飞快的Python(豆瓣的神话造就了Python的急速传说),还有标榜自己光膀子不怕穿鞋,完全免费的PHP。再换句话说,我们就坚定不移的跟着微软走吧,那么除了拿着VS.NET做网站,我们还剩下了些什么事情做呢,那就怪不得人家招JAVA的人多了”

我看不明白上面这段究竟有何逻辑……ROR/Python/PHP的盛行,.net/java是同时被挑战的。实际上,受RoR冲击最大的是java阵营。简单点说连javaeye.com这国内最大的java网站都改版使用RoR好几年。

.Net阵营的问题我觉得是在于技术革新太快了……微软在一直强迫整个社区跟着它走……作为程序员的我们,只能一次又一次去拥抱所谓的“新技术”……每次技术革命都把前一代的命给革掉了……而且,它是走向简易化,越是新的技术越是“容易用”……会堆积木就行了……

微软一直在重复发明轮子……十年前mfc的高手现在能干什么?谁还用mfc?

跟着微软,路很难走……

实际上,很多所谓的“革命”根本没有必要……纯粹是折腾……应市场要求而推出的过渡技术……

AJAX.Net是典型的例子……印象中好像园子里有位朋友花费一番心血要出本AJAX.Net的书,结果临出版前AJAX.Net新版推出,API全变了……那位朋友欲哭无泪,书得重新修订才能出版……

类似AJAX.Net这样的“升级”,在我看来就是纯粹的折腾。毫无意义的折腾。.Net程序员的生命就是这样被浪费掉的。

我十分庆幸自己从未在AJAX.Net上浪费任何时间……而对自己在jQuery上的投入收获颇满意。

在.Net的社区中,我能够感觉到一种急功近利的气息。很多人,特别是微软都在推崇“简单”,总是一遍又一遍的在宣传说过去“繁琐”的日子一去不复返了,现在我们只要“拖控件”或者干脆“全自动”了等等……

作为忍受过“繁琐”苦日子的程序员,新的技术或者能够加快他们的开发效率。但初学者自己受广告蛊惑,去追赶这些高级的“新技术”,只会使自己在技术发展的路途上迷失掉,使自己掉价。

我们应当追求的是建筑艺术本身,而非如何堆砌一个特定牌子的积木,甚至是半成品。

就.Net而言,我依旧守在2.0,3.0 LINQ/WPF甚至3.5等云烟偶仍旧在观望。

我能够自己写ORM,能够改写SubSonic增加透明缓存层,我为什么要使用LINQ?

LINQ比较快?不好意思,使用DLINQ beta版时我最深刻的感受就是VS变得很慢,点一个键需要一秒钟才intelli sense才有相应。这直接、严重降低了我的开发效率。

熟能生巧。什么工具/框架用起来最熟、最快?当然是自己写的。

.Net阵营的另一个严重问题是缺乏资源。

我要做邮件,pop3/ imap / smtp的client / server去哪里找?人家java有java mail。

我要做大网站,连URL re-write都那么费劲,反向代理又怎么搞?!Lighttpd做反向代理就是一行配置的事。

我要写高性能tcp服务器,.Net怎么用iocp?!SSL又得怎么搞?!人家python为什么就能有twisted呢?

我要个简单的模板,除了master page外我还有别的选择么?master page不合我用怎么办?!不要跟我说NVelocity,要不是MonoRails,丫的还bug无数……无论是php/java/python模板系统都无数……要功能的有功能,要速度的有速度,要优雅的有优雅……

我要搞个wiki,我要作个blog,娘的,.Net能用的现成产品怎么就那么少呢?

基本上是要什么没什么……除非微软自己提供。无数N字头的库都是改写自java的……得java有过、流行起来,我们翻译一下才能有。

现在做web 2.0, memcached是标配。 微软又跟风来搞Velocity。十字路口往哪里走呢?

很折腾,让我看多一遍Velocity的文档我都觉得烦。我是多么的渴望微软出的是memcached client,最好还支持UDP的。

==============================

我订阅园子首页RSS好几年,篇篇都看。同时我也订阅javaeye。近一年多来,甚至就光拿.Net相关的技术来比,泡javaeye给我的收获都比园子多。更不要说平台无关的技术心得。   回复  引用  查看    

#33楼  2008-09-10 00:58 Kai.Ma      

@问天
.Net下开源且成熟的东西找找还是蛮多的。:)   回复  引用  查看    

#34楼  2008-09-10 01:08 问天      

@Kai.Ma
我找不到开源并且成熟的pop3/imap client,我要求不高,gb2312/utf 8中文不乱码,能解outlook发的附件就成。

这么些年了,.net东西慢慢是有了,但数量、质量无法跟java / python等相比。   回复  引用  查看    

#35楼  2008-09-10 01:31 Ivony...      

--引用--------------------------------------------------
问天: @Kai.Ma
我找不到开源并且成熟的pop3/imap client,我要求不高,gb2312/utf 8中文不乱码,能解outlook发的附件就成。

这么些年了,.net东西慢慢是有了,但数量、质量无法跟java / python等相比。
--------------------------------------------------------

这个有些偏激了,不说别的,.NET Framework难道不就是一个在数量和质量上都难以有所匹敌的东西?

.NET上的第三方、中间件、开源的产品的确是还不够成熟,当然这与微软的市场策略很有关系,鬼知道你写的这个中间件啥时候就.NET Framework内置了,不过这种状况迟早会有好转的,也不应该是一个抱怨的理由,唯一值得抱怨的是自己为啥这么懒。   回复  引用  查看    

#36楼  2008-09-17 01:02 网际浪人      

@亚历山大同志
我认为只要能快速开发出客户需要的服务或应用,快速的为客户实现价值,.net也没什么问题啊。
至于钱钱没有做java的拿的多,一般情况而言两种原因:一、java本身开发难度大、实现繁琐,社会必要劳动时间花得多,二、客户有一些特定的应用环境,比如系统运行在非windows系统上。欧美客户很多有这种需求,国内的倒不是很在乎。
如果长远一点看问题,随着微软系统的进一步普及,技术的进一步发展,从客户的角度出发,而非我们开发者的角度出发,一门能快速帮你完成系统,快速使用上系统的语言,难道不是好语言吗?
另一方面,干了几年的老程序员,如果兴趣还只是停留在写代码给自己带来更多的乐趣上,我觉得你真是对代码具有充分的热情。还是多关注一些代码以外的东西,比如客户专业领域业务知识、更适合客户的开发方式、开发框架、项目管理经验,毕竟中国当前这个环境下,纯写代码的程序员估计只能吃青春饭了。当你成为更高层次的设计人员、或架构人员、或项目经理时,估计比以前同为程序员时,做java的那位仁兄工资高吧。
最后一句话:什么样的开发语言对于一名老程序员同志而言,不是最重要的。不用在乎现在也许比做java的少那么一点点钱。提升自己代码内外的综合水平才是第一位的。
  回复  引用  查看    

#37楼  2008-10-23 13:52 子逸      

任何语言领域都 高手, 初学者,
也有不懂装懂的 小屁孩
有本事的人是不会 抱怨语言的
  回复  引用  查看    

#38楼  2008-10-26 16:20 ddr888      

总觉得态度放低些好。
看到那些批评lz学识水平的“高手们”的回复就觉得恶心。讨厌学院派。
觉得lz文章只是表达自己思想。

无意挑起事端,路见不平一声吼!   回复  引用  查看    

#39楼  2008-11-01 23:54 上不了岸的鱼{ttzhang}      

个人认为,楼主的观点有些片面。
不过.NET平台也只是才开始几年而已,就算是C/C++也是走过多少年才被大家接受,至于鹿死谁手,现在也不好说,大家只能骑驴看唱本——走着瞧啦!   回复  引用  查看    

导航

公告

鉴于很多TX投诉黑色背景杀伤眼球,遂换个容易阅读的

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

与我联系

搜索

 

常用链接

留言簿(30)

我参加的小组

我的标签

随笔分类(84)

随笔档案(83)

相册

朋友的Blog

同事的Blog

最新随笔

积分与排名

最新评论

阅读排行榜

评论排行榜