2005年是计算机领域许多技术/ 产品的整五整十周年纪念。少年人期待过生日,青年人在生日狂欢,中年人享受生日,老年人害怕生日。期待的,尚幼稚;狂欢的,戒自大;享受的,宜思危;害怕的,离死也就不远了。2005年即将结束,无论悲喜,总是该回顾一番,年年过年年难过,个中滋味自在人心。
和去年一样,不免要把CSDN.NET网站年度大调查的数据拉来,做个说话的佐证。7月份的这次调查收到近一万份有效问卷,可以说反映了中国软件行业、特别是开发界的真实状况。在去年的文章中,我写道,2005会是动荡和整合的一年;无论是软件还是硬件,抑或是互联网本身,都即将进入新一轮的进化。现在,让我们来看看这一年来的进化与整合吧。
语言与开发工具篇
James Gosling在一次直播访谈节目中,嘲笑C#是完全抄袭Java。作为Java语言的发明人和一位学者,James Gosling表现了他可爱直白的一面。但主持人应该告诉他一句中国俗话:教会徒弟,饿死师傅;10月底11月初,随.NET Framework2.0推出的C# 2.0,已不再是蹒跚学步的小小子。泛型、迭代器、静态类可空类型、匿名方法、不完全类型等新特性刚开始令C#程序员兴奋,而Anders Hejlsberg已经在Channel9上侃侃而谈C#3.0了。Anders 一脸志得意满,背后是整个微软帝国巨大的资源在支撑。语言层面的迅速变化,反映了微软投入之大,也显示出.NET阵营对变化的迫切需求。
争论语言之间的优劣,是愚人所为;现在去妄断孰胜孰败,也为时过早。就在C#与Java势成水火之际,Ruby在Java阵营来了个漂亮的空降——整个Java社群都在谈论Ruby On Rails。这对Java应该是好事,10年的发展,让它不可避免地背负上了历史包袱;激烈的批评,蕴含了开发者多少爱恨。借这个时机能否练就一些删繁就简、返璞归真的功夫,就看Java的造化了。
Ruby靠Ruby On Rails咸鱼翻生,说明一个道理:语言本身已无足轻重,要紧的是应用框架和运行平台。改名作Delphi Language的Object Pascal,实在也是输在这上头。. N E T 开发工具市场的大输家是Borland,大赢家是微软,Borland在一个由对手制订规则的拳台上,被打得遍体鳞伤。87:12,这个让人联想到“完胜”或者“完败”的比分,就是.NET开发人员中,使用VS.NET 和Delphi.NET的比例。Borland再不振作,明年今日,恐怕就是“人面不知何处去”的境况了。回想数年前Delphi风光无限,怎不令人神伤?《IT大败局》中描写的那个“胡吃海塞的法国佬”,尚能饭否?
弱冠之年的C++,在.NET平台上旧貌换新颜,变成了C++/CLI。年初StanLippman在接受本刊技术主编孟岩采访时,被提及C++社群对C++/CLI的批评。他坚持认为在.NET 平台上的移植会为C++带来新生。从本次调查的结果来看,在.NET平台上,C++/CLI占有相当位置,虽不及C#和VB.NET,但也弥足骄傲。
Java开发工具市场,所有商业机构都成了输家。去年仅占不到19% 的Eclipse JDT,今年获得了31%的好成绩;JBuilder占有率从52%急速下降至34%;NetBeans也算是给SUN挣回几分薄面,以13%的得分位居老三。Eclipse的胜利,不能完全归结为它采用了开源的开发模式。如果没有IBM等大厂商的支持,未见得能有这么快的发展。JBuilder 2006的后一个版本Pleton将基于Eclipse集成框架。也就是说,明年Eclipse一统Java开发工具天下已成定局。
如果开发工具厂商/机构坐到一起玩《大富翁》,Borland估计要当选“年度悲情人物”。对于战士,最可悲的莫过于发现自己不再属于战场,在微软和开源的夹击下,昔年Borland叱咤风云之地,已然成为别人的沙场。Borland在开发工具市场的失败事非偶然:在.NET平台,完全依附.NET Framework,被人家牵着鼻子走;在Java 平台,遭遇受IBM 支持的Eclipse,优势渐失。
Java与.NET本是不共戴天的对手,所以,SUN与微软签订合作协议的消息一传出,顿时引起议论纷纷。开放Solaris10,推出GlassFish项目??Sun在2005年可谓铆足了劲往“开放”上面靠。越开放,越有竞争力,这是开源给业界带来的新理念,Sun遵循这个理念做事,虽有无奈的成分在内,亦属明智之举。可笑的是国内某些IM服务商,还将为自己客户端开发扩展版本的程序员告上法庭,逆天下大势而为,其败可料。
斗胆对2006年开发工具市场做个预测:微软继续在.NET领域称霸,Eclipse横扫Java领域,其他厂商/机构逐渐放弃开发工具主战场,转战咨询、中间件、CRM/ERP、商业智能解决方案等领域。开发工具对团队开发和软件生命周期管理的支持将进一步加强,与应用框架/平台的集成会更加紧密。
数据库篇
在我的开发经历中,最早的一个项目,是做一套地区级社会保险信息系统。记得当时只花了不到两个月,即完成所有的录入/管理/打印模块。FoxPro给我留下了深刻的印象。一位旅游业的朋友告诉我,香港的一些公司,靠FoxPro做的旅游管理二次开发平台,活得很滋润。
FoxPro 并未成为过去时,在京津经济区/珠三角/长三角地区,大量的小型企业(特别是制造商或加工商),仍然将MIS系统建立于FoxPro这样的轻量级数据库方案之上。以数字来衡量,采用FoxPro的企业,至少占总数的10%以上。
另一个轻量级数据库常胜将军是Access。大量小企业、政府机构、小型网站使用Access作为数据库解决方案。单以.NET平台而论,数字指标要达到30%甚至更高。
选用何种数据库,基本上有两个衡量标准:一是应用规模,二是运行平台。对于较大的应用,Oracle与Java、MS SQLServer 与.NET/Windows、MySQL 与PHP,都是自然而然的搭配。仅从数据库本身的角度去比较意义不大。所以,还是来关注一下本年度两个数据库明星产品:MySQL 5.0和MS SQL Server 2005吧。
MySQL 5.0是十年来最重要的版本。说是最重要的版本,其新特性还真让人觉得有点儿寒碜:支持存储过程、视图、触发器、游标、分布式事务??相比起来,MS SQL Server 2005就来势汹汹了,与操作系统、开发工具的进一步整合,将进一步巩固SQL Server 2005在Windows上的优势地位;而在运算性能、商业智能和数据挖掘方面的提升,则使它成为真正的“大型企业级”数据库平台。
Oracle今年在数据库产品上没有太大动作,倒是导演了一桩大并购案:58亿美元收购Siebel,一跃成为CRM市场头牌。这当然说明CRM市场值得大干、快上,但也意味着Oracle遭遇发展困局——增长、增长、增长,如果原有业务无法满足增长速度要求,并购成为不二之选。实际上Oracle也注意到中小企业市场,明显标志就是收购芬兰厂商Innobase,和推出免费的Express数据库套件。尾大难掉头是多数航空母舰级厂商的通病,Oracle显然还没把到中小企业市场的脉。
明年的数据库领域,革命性产品出现可能性较小,各家应该会埋头把市场做实。Oracle重点大概会放在中间件和整体解决方案上;微软将试图利用SQLServer与.NET平台的集成优势,仰攻原来由Oracle占据的大型商业数据库市场。基本上这会是一场正面遭遇战,Oracle胜在原有的资源和优势,微软还是采取平台捆绑战略。预计明年市场份额不会出现急剧变化。
倒是在中小型数据库应用市场,形势耐人寻味。Windows PC 端个人数据库是微软禁脔,无可置疑;工作组级和小企业级内部数据库应用,MySQL与微软产品有一争。焦点还是在整体解决方案上——MySQL缺乏整体解决方案,只能靠成本优势去竞争。成本这件事,见仁见智,但直接与桌面办公软件集成的整体方案, 却是实打实看得见的。MySQL擅长的还是小型网站应用,虽然LAMP(Linux+Apache+MySQL+PHP)有点拉郎配的感觉,但在Apache上做PHP站点应用,MySQL的确是兼顾成本和产出的上选。
网络篇
1995年,Internet Explorer第一个版本随Windows 95推出。其时距WWW发明不过5 年,距TCP/IP协议进入ARPANET刚好15年。到IE 3.0的时候,原来不可一世的NetScape 已是一败涂地。如今Google风头正劲,微软似乎又陷入被动,尴尬一如当年面临Netscape高歌猛进时。
Firefox浏览器面世后,占有率迅速攀升,至10%左右遭遇瓶颈。这本是意料中事,因为Firefox犯了一个错误,这个错误也让Unix系统无法占领PC 客户端,那就是:geek/hacker思想。在我的电脑上,Firefox频频出错,有人告诉我可以修改某个配置文件,因为Firefox默认不是按照最稳定的选项来设置。如果你不指望只是想上网打拖拉机的妈妈去编译BSD内核,最好也别指望普通人懂得改配置文件。
如果Firefox只是想做一个好浏览器,那它会败得更彻底。照Mozilla一贯的表现来看,到后面不会有它什么事儿。真正的决战将发生在Google和微软之间。在布局上,Google走Web OS路线,微软走OS Web路线。此话怎讲? Google正在努力使Web成为一个计算平台,规避与微软在操作系统层面的正面冲突,而微软则希望将Web更深地绑到操作系统上,大家都在扬长避短。Firefox不幸成为两片面包中间的牛肉饼,难逃被压扁的命运。
这场决战胜负未卜,Google和微软都在比速度,看谁的计算平台更早出来、更快占领PC桌面。明年Vista面世,将是微软的一张大牌。如果届时Google没有好牌可打,至少微软会赢第一局。
Web本身作为一个运行平台先天不足,正因如此,扩展Web运算能力成为厂商争夺的焦点。但是别忘了,Web也是历史产物,且终将消灭。Web 2.0是一个过渡,未来的网络计算平台,会基于P2P架构。只有两类网站有存活意义,一类是社区网站,另一类是服务网站。
移动篇
移动终端越来越向智能化方向发展,逐渐成为最重要的计算平台之一。移动终端之争,向来有两股势力:一股势力从通讯设备向计算设备靠拢,另一股则反之。前者的代表是Nokia、Siemens、Motorola等传统移动通讯设备厂商,后者的代表是Palm和微软。Sony是个异数,在合并Ericsson手机业务后,从PDA市场直接切入移动通讯市场,并通过一系列高端商务手机,把两者直接融合起来。
尽管有许多忠实“胖友(Palm用户)”捧场,Palm的尝试最终还是失败了。自从开始试图把移动通讯元素加入PDA,Palm一直在为后来者提供反面教材。类似Treo这样的经典机型不过昙花一现,市场证明Palm根本不懂智能移动终端是怎么回事。
今年推出的Windows Mobile 5.0平台,标志着微软在智能移动设备上的步子跨得更大更快。Windows Mobile的主要优势并不在于用户比较接受Windows界面(移动设备和PC机完全是两码事),而是较低的应用程序开发门槛。与.NETFramework相差无几的.NET Framework精简版、对DirectX的支持??让任何一个C#程序员,稍加学习就可以立刻开始为Windows Mobile智能移动设备开发应用,这种诱惑是巨大的。
Symbian 阵营中势力强大的两个巨头:诺基亚、索尼爱立信,在一张床上做着各自的梦。Motorola则独自在基于Linux系统的智能移动终端疆土上开拓。
移动市场和其他市场一样,是少数寡头垄断的市场。不同的是,运营商在其中起到的作用相当大。如果政策上没有太大变动,2006年会是中国的3G元年。据说有的运营商,已经为此作了足够充分的准备,只等国家一声令下。3G普及会需要一些时间,但不会很久。君不见,彩屏手机“东风夜放花千树”,一夜之间红遍大江南北。3G上马后,将出现一大批服务商和应用,基于WAP的服务会走下坡路。
人才与开发管理篇
软件行业是一个智慧集中型行业,人才极度珍贵。“程序员走光”、死活招不到合适人选的情况,许多企业中并不鲜见。程序员真的走光了吗?从调查数据和我自己的经验来看,不是程序员数量少,而是他们中的相当部分基础薄弱、经验欠缺,不足以直接进入第一线开发岗位。21岁到25岁的,占总数的55%,即有超过一半的程序员,入行时间在三年以下。在普遍缺乏良好培训机制和职业生涯规划的职业生存环境中,他们很难在三年内迅速成长为骨干开发人员。