http://liwei.csdn.net/forum/topic.aspx?topicid=981
引子
在32位Windows平台下,哪些事情是Delphi完成不了的呢?
不算驱动程序的话,的确几乎没有Delphi开发不了的,真正的高手手中的Delphi无所不能,而且Delphi和其它主流语言都富有强大的生命力,以后肯定还会继续进步。
但目前在有些领域能用Delphi开发不代表适合用Delphi开发,将来也是,Java和CSharp也一样。
一句题外话就是,作为程序员还是尽量用理性和公平的眼光看当今流行的工具和语言,不要被它们局限,存在必有存在理由。有时候人很容易受感情因素影响。
这个世界本来就很奇怪。所谓的“适合”与“不适合”的标准都很难定。有的时候,“适合”二字真的不是说某个东西干某项任务很出色,而往往是形势所迫,或者是客户的要求。.Net好不好?强不强?可是目前中国大陆的知名ERP仍然全是可执行程序模式,而并非.Net那样的Web构架,甚至于用友用老版PB开发的U8,在某些人眼里几乎就是不能要的老古董,功能上也平平,可是现在却卖的很好。Java出名不出名?我看其名气超过了.Net。可是在实战中,Java的核心技术EJB几乎是“最不实用开发技术”的代名词。我们公司是一个500人的软件企业,主要业务大半都是Java的,是从日本设计公司拿过来设计进行编码。
可是这些设计几乎找不到几个按照Sun公司技术蓝图(也就是EJB+JSP相混合的方式)来做,大多数都是采用了第三方的Struts框架来做。也就是说人们都习惯于对EJB绕道而行了。更可笑的是Sun公司描述其J2EE/EJB框架说,它的核心价值在于“大大简化程序开发,提高程序的性能”,而实际中,EJB是最复杂、不容易调试、一次编写到处Debug、如此狼狈不堪,而且性能也最差(EntityBean)。这不能不说是一大讽刺。名噪一时的Oracle8i,当时出了足足16个版本、无数的补丁,才使这个东西能基本稳定的运行,其早期版本在某些环境下装都装不上。但现在的市场,有时候,越是猪头产品就有着越大的光环,而且,这些猪头产品无论其品质如何的低劣,仍然购者趋之若鹜,而那些真正好的东西,却无人问津。对于这样的产品,你说它“适合”还是“不适合”?
不过,现在Borland的白痴总裁终于辞职了。就从前一阵子Borland搞的什么“SDO”、什么合并软件咨询公司等等,一看就和中国大陆某些垃圾软件公司不搞实业,专门在概念上做文章玩弄文字游戏是一路货色。但不知此白痴一辞职,是换来一个务实的人呢,还是换来一个更白痴的人呢?并且那帮利欲熏心的市场人员能否顺利的全部被辞退也未可知。
可怜Delphi这么好的一个工具,有着这么深厚的根基的积累,却被一再的被一帮白痴干扰,没能连续顺利的持续发展演进。Borland走的冤枉路太多了。那个什么C++BuilderX真是一大败笔,纯浪费公司的资源。
从实践的感受来看,目前.Net搞的东西未必是企业界真正需要的东西。从我的感觉来看,基于浏览器的软件无论如何在功能和方便性方面要比客户端程序差,并且也不易于开发,唯一的好处就是免于部署。然而免于部署究竟对企业有多大意义呢?一个企业谁在那儿三天两头的部署程序呢?如果我做一个小程序,让它在ERP程序启动时自动到部署服务器共享文件夹里面比较可执行文件版本号,如果之后则拷贝一下程序,这不也能达到自动部署吗?
在ERP实际运用领域的状况也证实了这一点。中国大陆大多数企业的ERP并不是Web的。以日本企业为例,他们倒是采用了很多基于Web的系统,然而,他们采用Web系统的因素相当大的程度是观念上的原因,并非出于易用性的考虑,以至于Web的优点在很多场合根本就没怎么体现。
win32下,delphi的确几乎无所不能,甚至超出了常人所需要的--如ISAPI开发,很多人可能还没用它开发过ISAPI吧。。。
但是,我觉得目前delphi吃不开的主要原因是:
delphi没有提供一个可以实现高可靠、大规模的应用系统的框架
--当然,也许李维这样的高手是可以用delphi构建一个高可靠、大规模的应用系统
--但是,高手之所以是高手,就是因为少,而且低手成为高手的可能也是很低的
至少没那么常见--我还没见到过、听说过--除了以前网站列过的美国什么航空公司还是什么航空系统?等等--用delphi构建的大系统
而java虽然感觉运行慢、配置复杂、开发繁琐,但是毕竟很多大的企业应用还是都是采用了它(只是不知道最后的成功率有多少),而且很多看起来不该用java、b/s的系统,用户都是硬性指明要求用java、b/s。
中国大陆的后期的ERP好像有非常多是用Delphi做的。之所以大型系统少见用Delphi开发,是因为那些个国际性的大公司一般比较遵从自己原有的习惯,大多数的大系统是用Cobol做的。至于说“java虽然感觉运行慢、配置复杂、开发繁琐,但是毕竟很多大的企业应用还是都是采用了它”,这还是我所说的,“因为‘毕竟’很多人采用了它,所以采用它”。我不是说了吗,现在的市场很奇怪,有时候什么烂,就专门流行什么。到现在为止,我还没发现一个因为大规模采用Java的EJB,特别是EntityBean从而非常成功的系统。那些真正相对成功的Java系统无一例外的都走了“旁门”,都避开了EJB这个J2EE的核心而用纯Web配之以轻量级的Tomcat,这样一来,在J2EE中真正纳入实用的那部分子集,也不过是Delphi同样具有的Web功能,所谓的“高可靠、大规模的应用系统的框架”真正用的上的又有那些呢。
给人一种感觉,那就是在J2EE这个橱窗里,那些琳琅满目的物件大部分其实只是些个摆设,其真实用途除了“排场”没有其它,有点像皇帝出行的仪仗队,而一群人整天喊Java平台功能强大,其情形也颇像是安徒生《皇帝的新衣》中一群人为皇帝的新衣叫好的。敢于站出来批评J2EE的人并不多,而大群的人却对这件“皇帝的新装”大大赞美。可是,人们所说的J2EE的若干“优点”,有几个是从切身开发实践的感受而来呢?我所看到的事实是,Java程序员们时刻在承受着J2EE的缺陷,却还在不停的说它“非常好”。相比之下,.Net提供的东西却实的多,每一件工具都是非常强悍的。与其说“因为采用Java技术的企业非常繁多,所以证实了Java是个杰出的技术”,不如说“其实这些企业都上当了”。
当然,我的中心意思并非说J2EE一无是处,而是说它的实际功效和它的光环有巨大的反差。
我倒不一定对谁有多大意见,我这个人最喜欢攻击那些外表风光、内在愚蠢的人。
Borland现在的CEO据说是interimCEO,正式人选未定。为了让Borland迅速的变成垃圾公司,董事会一定要选择一个和Fuller同样猪头的人来才能担此重任。
不如你当,可惜你不是Borland的人。
不是我说句狂话,要真让我当的话,倒是有可能比Full强些。毕竟Borland公司的CEO一定要一个技术出身的人才能真正把握。企业最重要的是要真正认识到自身的价值所在。如果找不到自我了,那么任凭这个企业以前有多少资本,它也一样是一堆废物,很快消亡。遗憾的是,除了Borland的创始人以外,历届Borland总裁们任职期间,把公司的财务报表当成唯一最关注的东西。殊不知企业的真正的价值是它创造的有意义的产品,而盈利只是其经营状况的积累体现。而现在的商业场的很多人们只知挖空心思的追求后者,却把最根本点给忘了,结果是“越想盈利,越赢不了利”。好比学生要提高学习成绩一样,而企业的财务报表就像一张成绩单,Borland的总裁总是在挖空心思的提高自己的应付考试的能力,却忽略了真正提高自己的学业,他们觉得真正专注于学业收效太慢,不如考试前玩些“花活儿”临阵磨枪,不快也光。
其实IBM公司是猪头软件界超过Oracle的的第一大猪头软件公司,而其几大产品都是首屈一指的猪头产品。所谓“猪头”,是指软件产品功能不咋地、内在质量也不咋地、又大又蠢、耗费系统资源巨大、价钱昂贵。据我观察,LotusDominoDesigner当属全球猪头软件产品之冠,其语言之烂、开发环境之垃圾、内在实现之蠢、耗费硬件资源之高昂、价格之贵,堪称超出所有其他猪头软件。几年前,我在书店里看到一本特大号的黄皮书,厚度有两本朗文词典加起来那么厚,一看书皮,“LotusScript开发人员指南”。Lotus Domino的核心语言LotusScript不过实现了部分VB的语法,其应用层内容左不过是Domino/Notes里面的那些对象,竟然写出了这样一个巨大的“开发指南”。我不知道IBM公司何以能印出比Java技术年鉴还厚的“LotusScript开发人员指南”来。
IBM公司到底是在支持产品,还是要拿书当砖头把人砸死呢?旁边还有几本Domino/Notes的大厚本资料,它们组成一系列,累计厚度可达一尺,蔚为壮观,颇有打肿脸充胖子之意。我实在不是妒忌“LotusScript开发人员指南”的厚度超过了《Delphi开发指南》的厚度,我只是不知道这玩意儿到底有没有那么精深。诸君可能认为,也许LotusScript及其开发环境确实博大精深呢。可是真正用过Lotus DominoDesigner的人都知道,这东西基本类似于Office97里面的VBA开发环境,但功能恐怕还要差很多,代码编辑环境不支持代码提示、也不支持可视开发,只实现了VB的一部分语法,其代码实现方法也粗俗蠢笨,据说要实现一个表单标题搜索功能,恐怕还得用for语句逐个匹配每个表单标题。IBM公司有个特点:但凡宣传一种产品,一定要说“全世界各个IBM中心研发人员共xx万都持续的研发xx产品”。我第一次听到Domino产品的“全球Lotus研发人员数量”的时候,真是足足敬畏了了很长时间--人家的“研发人员数量”好像比咱的用户数量都多!当时R5有个宣传画面很有趣,那就是美国宇宙空间站的人在飞船里面操作电脑,画面是LotusNotes。
而在绚丽的表面后面的事实,却应了那句笑话:“长得丑不是你的错,但是非得涂脂抹粉跑到大街上到处吓人,那就是你的问题了”。
当然第二大猪头软件公司倒也轮不上Oracle。因为Sun公司凭借其垃圾EJB框架设计,无可非议的勇夺猪头软件设计厂商第二把交椅,无人能撼动其地位。LotusScript的拙劣的语言和开发环境,早已成为程序员界的笑料,而EJB的特殊之处在于,它败絮其中,却金玉其外,仍然持续享受着无数程序员的顶礼膜拜,头顶着巨大的光环,继续骗取着Java程序员们的天真。所以Sun公司是“带着桂冠的猪头”,说它和大猪头IBM并列第一也无不可。
当初还是EJB 1.0的时候,当我了解到EJBObject之间相互调用还得通过RMI时,我简直不敢相信我的耳朵--世界顶级软件公司竟然做出如此低劣且幼稚可笑的框架设计来,让人怀疑那个J2EE的总设计师到底编没编过企业级的软件。这样一个通过远程协议来进行容器内Object调用的中间件平台,它要能转得起来才怪呢。我当时深以为这其实是我自己浅薄,可后来的事实告诉我,我低估自己了。后来据各方面的情况来看,事实比我想象的还要差,基于EJB1.0构架的大型系统几乎一个成功的都没有。经过了漫长的发展,在EJB3.0的Specification中,我终于发现了这东西略有点合理了,可这所谓最新的EJB3.0所倡导的coarse GrainedEJB的指导思想,却发现和Delphi开发MTS/COM+对象的风格越来越相似,也就是将中间层对象的颗粒扩大化,倡导以业务逻辑功能模块为颗粒构建StatelessSession Bean,说白了这不就是相当于Delphi的RemoteDataModule、TransactionDataModule吗?只不过EJB中数据库记录是以对象的形式存在,而在RemoteDataModule中的数据是数据集。EJB中用OR-Mapping封装数据对开发人员友好一些,但却不如Delphi来的简捷,其性能很难赶上Delphi的MTS/COM+对象。EJB转了这么一大圈,才回归了Delphi原先早就有的东西。无奈的是,那些J2EE厂商花费那么大的心血去实现容器平台,真有点像用一个精致的箱子盛放一堆垃圾。
Cluster特性确实是Java平台擅长的特性。但是,我所看到的Java开发的“大型系统”,之所以称之为“大型”,都是指机器大,而并非数据量大。现在的普通企业很少说一个月就添加几百M数据的。以2000人的电子装配企业的ERP为例,这样企业的月业务数据量也不过几十M。我真不知道更“大”的系统能怎么样。曾几何时,90年代的大型商用计算机,也不过是每秒10亿次浮点运算,内存256M。那些跨国大企业用这样的机器不是好好的吗?现在的一个普通的P42.8G +1GRAM,只要几千元,可是却比以前的大型机还快几倍,要运行业务系统就更不成问题了。而Java的一大著名功效就是把大型计算机的能力折损成PC机,然后拿它当PC机用。当然,比大企业有更大数据量的,是证券公司的系统,后端是每天都更新的海量数据,前端是高访问量的网站。遗憾的是,能得到这样的客户已经不是简单的技术实力的问题了。取得这样的客户得靠“背景”,甚至介入政治。
现在说一下第三大猪头软件公司Oracle。Oracle数据库的拥护者们天生有一种气概,那就是言必称“Oracle坚若磐石,经过了xxx多的使用,从来没出过一次问题”。其实什么事情一旦神化、绝对化了就不对了。记得好几年前,我参加了一个印度人举办的高级Oracle培训,那个印度人如是说:“我们无数的Oracle系统,到目前为止,还没发生过一次Oracle出故障的事情..”结果到自由练习Oracle命令的时候,培训教室里的10个培训用的OracleServer死了3个,原因是有某些人执行了稍大一些的查询。该Oracle是相对稳定的8.17。
本来世界第4大猪头软件公司将有望被Borland公司夺得的,可是其猪头领袖DaleFuller近日辞职了,这使Borland公司取得这一地位的趋势受到严重影响,要不然DaleFuller的猪头计划很有希望把Borland变成第四大猪头--
弄几个毫无用处的产品,以消耗公司过剩的资金,包括C++BuilderX、C#Builder;
然后打击、压制那些比较务实的产品,包括Delphi、C++Builder、JBuilder;
然后把公司内的技术骨干都排挤出去:Blake Stone、Chuck等;
然后收购几家团队工具厂商和模型工具厂商,炒作“ALM”概念,而其实开发人员并没有开发新产品;
最后收购一家“咨询公司”,终于要“将Borland公司由开发工具厂商转型成为世界领先的咨询公司”
呵呵,yangdong大哥对Fuller先生意见很大啊。反正他现在已经辞职了,大家嘴下留情吧,毕竟他刚开始也做过些贡献。
不知现在Borland老大是谁?
我倒不一定对谁有多大意见,我这个人最喜欢攻击那些外表风光、内在愚蠢的人。
Borland现在的CEO据说是interimCEO,正式人选未定。为了让Borland迅速的变成垃圾公司,董事会一定要选择一个和Fuller同样猪头的人来才能担此重任。那个Fuller长得就像猪头,脸本来就长,还把大背头向上卷,有段时间还把自己的照片贴在Borland的网站上,乍一看有点像是老年痴呆患者。尽管这帮蠢物没怎么好好发展Delphi,好在目前Delphi程序界仍然资源丰富,各种插件、控件很多,Delphi程序员们虽无名分,但还有实惠。
我这个人有时说话确实非常刻薄、非常尖锐,特别是评论某种产品的时候。但若要反省一下自己,却发觉这些刻薄的话乃是事实。好在有维哥这样的厚道人在,所以我们在技术圈内还感觉有些意思,能找到一份理解。
notes的架构是很对的:数据、界面、实现代码都位于服务端
只是它的界面实现太难受(我是主张界面实用为主的,但是也无法忍受它的界面,也许为了跨平台的缘故?很多*nix的控制台程序界面都是又怪又难看难用的)
还有它的实现代码的语言就是如yangdong所说的一种basic脚本——难受
ibm的as/400也是一个很奇怪的东西,明明很怪畸(据说是美国中部的开发人员作的,与流行*nix的东部人根本不同道),但是偏偏自吹很稳定、高效。。。。。。。。
看过它的rpg(也许是这3个字母的另外顺序的组合)语言,简直是穿孔时代的产物,每一行第几个字符是什么字母,代表不同的意义。。。
不过比较奇怪的是,它似乎是卖得很好的——很长一段时间里
目前Vista的行为已经有点激起民愤的意思了,原因就是,“干什么事情都需要确认”。目前,微软已经有点跃跃欲试,欲跻身于猪头软件公司行列的趋势了。我在深度论坛上曾创造性的阐述了当今IT界4大猪头软件公司的理论。可是,今天的微软也大有向此靠拢的意向。如果说,微软真的成为了2007年猪头软件公司的前三甲的话,那么帮助微软夺得此桂冠的产品一定是WindowsVista。Vista以体积大、速度慢、没有实质性的功能、干什么都需要多次确认著称,完全符合了猪头软件的标准。其中,“干什么都需要多次确认”是猪头软件界的一大创举,这是老一辈猪头软件,例如LotusNotes和J2EE所不能及的。这一点我在Win2003中关机必须输入关机原因这一点上,已经看出了苗头。微软已经觉得自己精力过剩,必须没事儿找点事儿了。
转眼看来,现在的VS2005相对于Java阵营来说,已经显出明显的技术上的优势了。到现在Java工具里面也找不到一个基于xhtml的可视化Web设计环境来。VS2005的可视化Web设计和数据库模型设计能力,配合以局部类为基础的组件化开发模式,简直是把JSP/EJB模式的机制发挥到了极致:aspx文件不就相当于jsp吗?而后台的动态库,不就是ejb吗?在vs2005中,编辑aspx文件就像编辑一个word文档一样容易,aspx和后台C#的配合是何其的自然,更不要说最新的.Net3的情形了;而在Java的任何的工具中,编写jsp仍然没有完全的可视化,可想而知,差距多么的大。Java的走向开源,正是Sun公司抵挡不住.Net攻势的实际体现。
猪头软件公司有个共同的特点就是:不服微软。我认为,不服微软这不算错。但是得有不服的资本和理由才行。目前的Oracle数据库,相对于SQLServer来说,实在是找不出太明显的优势来,除了能安装在unix上之外。曾几何时,Oracle8i推出的时候,Oracle牛气的不得了,要炼生铁(rawiron),扬言说Oracle要脱离操作系统运行,现在Oracle公司也终于认识到,自己的数据库比狗屎强点有限,所以只好公布数据库免费,公司纯靠服务盈利。当初Java驰名的时候,Sun公司一提微软,嘴角都差点撇到脖子根上了。不过Sun现在算是终于找到了自我,知道自己吃几两干饭了,直接把Java核心代码公开,投入免费开源世界,这就对了嘛,明明是只老母鸡,就不要非得充大尾巴鹰了。IBM也一样,明明就知道在应用软件方面根本不是微软的对手,所以干脆避其锋芒,专注于Java,这倒也明智。慨哉悠哉!我如今也明智,左持VS2005,右手Delphi,共同修持,虽不至于发横财,但也能饭碗无忧了。
说到猪头软件公司,从以往我的经验看来,一般都出自微软的对手,由于不服微软,所以必想惊世骇俗一番,百般装酷,到最后终究内力不够变成了猪头。不过,风水轮流转,现在微软本身可能是感觉太过寂寞,太找不到对手了,除了自恋之外已经没有其他的选择,再加上微软一贯在任何领域都不甘落后,所以,在猪头软件公司这一重要领域的排名中,微软也决心搏一把。
微软的猪头特色在于自恋。君不见,VS2005在安装过程中,滚动条一个劲地滚,却不知道安装工具在干什么。当然,这并不代表你可以完全不用操心安装的过程,人们在安装vs2005sp1却经常被中途产生异常卡住,既无法卸载,也无法启动,又采取不了任何补救的措施,故而对微软敬畏有加。我已经看出来了,由于走上了自恋的不归路,微软决心把一切都神秘化,把一切细节都裹起来,使外人看不到端倪,蒙在鼓里,谓之曰:“友好”。所以最新的.Net环境下,安装一个共享库都要来个公钥私钥认证,得敲一大串命令行。故弄玄虚是国际型软件公司的优良品质,微软是这一品质的领先的实践者。当然,微软要走向全球首屈一指的自恋型猪头公司光把一切过程神秘化、裹起来是不够的。为了让人们印象更深刻的认识到“什么是微软”,微软决定要从目录的名称上做起,就得不同一般、非同凡响。所以,但凡微软的产品的安装路径名称,一定要超级长,一定要好几个单词,用好几个空格隔开。这样的话,初学命令行的人,由于不知道加双引号,所以无论如何也進不去这样的路径,故而会对微软敬畏有加,极大的提升了微软的神秘度。当然这一点还是不够。微软又发毒誓:要让每个人都找不到你的文件位于硬盘的什么地方。
君不见:
C:\Documents and Settings\Administrator\My Documents\Visual Studio2005\Projects
该目录名称设计的多么的巧妙,很好的考虑到了能够充分考验一个人的耐性!如果在命令行,纵然你能把目录名称背下来,把这一连串敲下来,也能让你的大脑皮层内分泌成分有所变化,故而会对微软敬畏有加。
可喜的是,猪头新秀CodeGear也深得微软这方面的熏陶,君不见:
C:\Documents and Settings\All Users\Documents\RADStudio\Demos\DelphiWin32\VCLWin32
该目录的设计很好的体现了“要让每个人都找不文件在硬盘的什么地方”的原则,结果,当我发现Delphi2007的Demo程序原来是在这里的时候,我立即对CodeGear公司敬畏有加了。
==============================================
曾几何时,神秘化早在Win98推出的时候就有所体现。当时微软不说是新版本Windows,而说“麦菲斯”,引入了全新的“ActiveDeskTop”又说“麦菲斯”的研发带动了一个城市规模的产业。现在终于明白了:ActiveDeskTop不就是把IE铺在桌面上吗?而那个Win98则证明是垃圾软件的一种。后来,微软又提出了WindowsDNA,ActiveDirectory等玄虚概念,不过结果都是一样的:那就是,尘埃落定,万事皆空。