是的,这篇翻译是下篇,上篇是在:
http://www.blogwind.com/Wuvist/6984.shtml
我在2005年2月13日翻译的。如果你没有看过上篇,也没有看过原文(http://www.joelonsoftware.com/articles/APIWar.html),请先看上篇。而且建议去看原文,因为,我在翻译的时候去掉了一些附带说明与链接。
原文作者:Joel Spolsky
Sunday, June 13, 2004
一统天下的运行时
.Net降临了。这是一个浩大的工程;一个企图彻底根除所有混乱局面的工程。它自然有内存管理。它不仅有Visual Basic,还有一门新的语言。这语言继承了Visual Basic的精神,但却有着C风格的语法-大括号跟引号。最妙的是这门糅合了VB跟C的新语言叫C#,也就是说你再也不用跟别人说你是一个“Basic”基本程序员了。那些恐怖的拖泥带水的Window函数、钩子、向后兼容的Bug还有无从解释的字符串返回语法都被扫除了;取而代之的是一个崭新只有一种字符串并面向对象的接口。一统天下的运行时。这很美,在技术得赞下微软。.Net是一个超赞的程序开发环境,它可以帮你管理内存,拥有丰富、完整并统一的操作系统接口;而且还有丰富、超级完整还很优雅供基本操作的对象库。
但是,程序员不用.Net做太多开发。
当然,也有用.Net的人。
但,使用一个全新彻底革新的程序开发环境来统一VB跟Windows API开 发并存造成的混乱是愚蠢的。现在,我们不是有一种或者是两种开发语言,而是有三种开发语言(还是四种?)!就跟对两个在吵架的小孩大喊:“你们都别吵 了!”一样愚蠢。在电视里面,这样子大喊也许会有效;但在现实生活中这样搞法的必然结果就是你跟两个小孩三个人一起吵得更加大声。
(顺便说一下,那些有关注神秘但被政治所改变的网志聚合格式世界的朋友,你们可以发现同样的事情也发生了。RSS被分裂成为了几个版本-不准确的规则跟一堆政治性质的斗争。而企图解决这一切的做法竟然是定义一个新的叫ATOM的聚合格式。结果便是不同版本的RSS现在多了一个ATOM来搅局-不准确的规则跟一堆政治性质的斗争。当你企图引入第三方来解决对立的两方时,结果便是三足鼎立。你什么也没有统一而且你也没有解决任何事情。)
所以,.Net现在并没有统一并简化世界,我们现在反倒陷入了更大的混乱。所有的人都在犹豫他们的开发策略,究竟有没有足够能力把现有程序转到.Net上呢?
无论微软的市场信息是多么的统一(“用.Net吧!相信我们!”),它的大部分用户还是在使用C,C++,VB 6.0跟传统的ASP做开发。更不用说其它公司提供的开发工具了。然后,仅剩的使用.Net做开发的公司做的是ASP.Net!ASP.Net需要跑在Windows服务器上,但,它需要一个Windows做客户端。这就是我谈到Web时要强调的重点。
哦,等一下,还有其它的东西!
现在微软有了太多的开发人员搞得它重新发明一次整套Windows API还觉得不够爽,它竟然重新发明了两次!在去年(应该是03年,Wuvist注。)的PDC上,微软宣布了它们的下一代操作系统,代号长角。长角不仅有上述的东西,还有一套全新的用户界面API,代号Avalon。Avalon再次把一起推倒从来以利用现在电脑高速的显卡跟实时三维渲染的优势。所以,如果你现在正在开发Windows界面程序,并且使用了微软现在“官方”宣称的最先进的开发环境:WinForms;那么两年后你得重新开始以支持长角跟Avalon。这解释了为什么WinForms在诞生之时便死翘翘了。但愿你还没有在WinForms上投入太多。Jon Udell从微软那找到了一个题为:“我如何在Windows Forms与Avalon间做选择?”的幻灯片,并且问了这么个问题。这是个好问题,并且没有人可以很好的回答它。
所以,我们有了Windows API,有VB,现在还有了带若干种不同语言供选择的.Net;但,我们不能在这些环境下浸淫太久。因为,微软正在开发Avalon呢!注意到没?Avalon可只能在微软最新的操作系统上跑,但是,它得等很久很久以后才能开跑。对我个人来说,我没有时间很深入的学习.Net,并且,我们也没有把Fog Creek的两个应用程序从传统的ASP跟VB 6.0转到.Net上。因为投入做这么件事情对我们没有回馈。一点都没有。在我关心的范围里,它纯粹是一件“开火并动作”的事情:微软会爱死我们停止给Bug跟踪软件跟CMS开发新的功能,并浪费几个月的时间转移到新的开发环境里。这无法使我的任何一个客户获利,也没法让我多卖一套软件。但这对微软来说很妙,因为微软也有它自己的CMS跟Bug跟踪软件。对微软来说,再也没有比使我为追时髦而浪费时间重新绕着.Net转,并且一两年后在为Avalon浪费一次时间的事情让它感到更的爽了。在我忙着转的时候,它却在给它的软件加新功能,懂了没?