关于python的几点看法[转]
因为近来在学习python,所以转则文章,技术方面的朋友不妨关注一下。
初探在下一代 Windows 中编写和部署应用程序
http://www.microsoft.com/china/MSDN/library/windev/longhorn/DevelopAppLonghorn.mspx
看了这篇文章以后,对XAML有了具体的初步认识了,最重要的是搞清楚了XAML的思路和方向。看完这篇文章之后,我有了如下的想法:
首先,以Microsoft公司的实力和Windows操作系统的占有率来说,Longhorn迟早会被普及,而XAML的开发方式迟早也会普及的。记得当初WindowsXP刚出来的时候,因为资源占用率和新的激活制度招致一片骂声,但是慢慢的,现在也都接受了下来。由此可以推断,Longhorn以其更加丰富的桌面功能和诱人的外观,会在将来成为主流。
但是Longhorn什么时候才会全面普及,这是很值得琢磨的问题。WindowsXP是2001年推出的,在随后的几年,Microsoft采用了一些商业手段来迫使用户升级,例如企图取消Windows98的技术支持,不再提供WindowsNT技术支持,不再销售 WindowsNT/Windows98,将Windows2000保持在一个比较高的售价的同时,对WindowsXP推出优惠价格,让 WindowsXP的售价低于Windows2000等等手段。但是直到现在,Windows2000仍然占据了非常高的份额,据我个人的观察是比 WindowsXP略高。按照这种情况来推断,Longhorn要普及,恐怕难度更大,非常多的用户现在仍然是Windows2000的死忠派, WindowsXP推广了四年还未能超过Windows2000,那么Longhorn究竟要几年才能超过WindowsXP呢?我估计四年以上是起码的。
XAML应用程序不同以往,它只能跑在Longhorn上面,甚至比Java和dotnet要求更严格,后者仅仅下载安装一个运行环境就可以了,但是前者要求你必须更新操作系统。XAML在IE浏览器中运行虽然肯定是下一代RIA的主流,但是不可忽视的问题是,只要Longhorn没有彻底淘汰 Windows2000/XP,软件开发商和网站开发商就不敢大面积采用XAML。而根据我的观察,现在企业中,Windows98仍有少部分市场份额。因此Longhorn必须要等待到彻底的,毫不残留的淘汰Windows98,Windows2000,WindowsXP之后,才会全面普及,而在此之前,不得不经历一个漫长的过渡期。
就好像现在,假设你开发桌面应用程序,你敢只针对WindowsXP开发吗?而彻底不支持98和2000吗?我想,没有哪个软件开发商敢这样做。除非 Windows2000几乎被彻底淘汰了,你才敢这样做,但是WindowsXP已经推出四年了,还没有Windows2000占用率高,哪全面淘汰究竟要几年呢?再看看现在dotnet winforms应用,推出也已经五年时间了,但是到现在仍然没有普及开来,根本的原因就是Windows2000/WindowsXP没有预装 dotnet framework。仅仅是需要打包安装一个运行环境就使得winforms五年都推广不了,更何况要求你升级操作系统呢?
我个人的估计是,假设2006年Longhorn如期上市,那么将需要7-9年时间来彻底淘汰Windows2000/WindowsXP。 Longhorm上面XAML应用的初步普及也至少需要4-5年时间以后才会有软件开发商大量去做(想向dotnet是2000年开始宣传和推广的,到 2004年开始普及,今年和明年才会全面普及)。因此,基于XAML应用我个人的想法是在2010年以后才会成为主流!上面的估计中还没有包括MacOS 和Linux在桌面会否有什么表现,但是估计仍然不会成为主流,因此就不过多考虑了。
因为从现在到2010年,还有漫长的5年时间,我们不可能坐等XAML的普及,即使我们知道XAML肯定会普及,但是那也是五年以后的事情了。这五年时间我们仍然需要干自己的事情,赚自己的钱。所以审视一下这五年中会成为主流,或者说可用性极好的技术,还是很有必要的:
先说说服务器端吧:
从可预见的未来来看,服务器和客户端TCP通讯的主流方式一定是HTTP协议(即时通讯软件走UDP端口,不在讨论范围)。在基于HTTP协议之上,又分为两类:一类是SOAP协议,异构系统支持良好,但是性能很差,目前Microsoft很喜欢用这种方式;一类是轻量级二进制协议,例如Flash的 AMF协议,Resin的Hessian协议。值得一提的是,不管哪种方式,他们都支持异构的系统,所以完全可用在客户端采用dotnet,在服务器端采用Java或者Python。因此,XAML的流行不会对服务器端技术产生致命的影响(肯定会提高dotnet的服务器的市场份额)。所以我们可用抛开客户端影响,单独来看服务器端技术:
1、Java
Java是当前服务器端技术当之无愧的王者,在未来五年内,也不会有任何动摇(受到dotnet和python的影响,市场份额会下降一些)。Java特别有利的一点是,现在有太多的现存系统基于Java,这些系统都不会轻易迁移到其他平台上。另外还有一个决定因素是除了Microsoft之外的几乎全部 IT大公司都在Java方面的投资巨大,放弃Java对他们来说也意味着沉重的打击,甚至毁灭性的打击。这些公司可以列很长很长,IBM,HP, Oracle,SAP,Sun,BEA,Macromedia等等。
2、dotnet
由于Microsoft的影响力,dotnet会成为为仅次于Java的第二大服务器端技术,但是Microsoft有一个隐忧,就是Linux操作系统在服务器端的高速成长。虽然现在Linux在整个服务器端市场的出货量只有13%左右,但是成长率惊人,根据我看到的资料显示,到2008年,将占据 25%以上的市场份额。考虑到很多公司是自己安装Linux,因此不会被硬件服务器厂商统计进来,因此Linux的服务器端的市场份额应该比25%高一些。并且现在主要的服务器厂商都对Linux有非常巨大的投入和支持,这些公司包括IBM,HP,Dell(只有Sun不支持),因此Linux在未来会对Windows在服务器端的市场构成最严重的威胁。
不要忘记dotnet只能在Windows平台上面跑,虽然有mono,但是你不可能移植MTS,COM+,SQL Server etc。所以只要Linux在服务器市场对Windows构成持续的威胁,dotnet就不可能超过Java,Java的地位还是稳稳的老大。从某种程度上来说,Java的命运是和Linux联系在一起的,只要Linux在服务器端不输于Windows,Java就稳稳压制dotnet。
BTW:从未来来看,Linux和Windows会在低端和中端服务器市场成为主要竞争对手,由于各自都有其不可替代性,所以双方都不可能彻底消灭对方,最大的可能性是Linux和Windows平分市场,或者Windows市场份额略高一点。
3、Python
我个人认为Python会成长为第三大服务器端技术,Python成长于开源,但是又有商业公司来商业运作,并且背后还有大公司的支持,在欧洲普及的非常好。当然最重要的原因是我觉得Python在技术上非常先进,并且技术发展方向上比较统一,不会出现Java那种吵架的事情。
4、PHP
PHP这东西是不错,Yahoo也在用,IBM现在也对他感兴趣,但是我还是要说PHP没有太广阔的前途,原因很简单,PHP没有服务端中间件,例如 Java有App Server,dotnet有IIS/MTS,Python有Zope,但是PHP他就是一个脚本,没有自己的中间件就是致命问题。Yahoo用PHP有其特定的原因,主要是从原先自己的技术迁移到PHP很方便,而IBM支持PHP,显然醉翁之意不在酒,IBM意不在推广PHP,而在于争取到那些使用 PHP的商业大客户们,向他们卖服务。
BTW:感觉欧洲用Python/PHP的很多,似乎开源在欧洲非常深入人心。
从服务器端技术来说,Java还是我们最需要下功夫去学习和掌握的,此外,我会比较倾向于钻研和应用Python,而不是dotnet。原因也很简单,跟随Micorsoft的技术会很辛苦,Microsoft产生的新概念多,他总是会猛的推出n多种技术,然后让他们在市场上自己生存,最后根据市场反馈,无情的抛弃某些东西,大力推进有市场前景的东西,这样的例子太多了,举不胜举了。我的感觉就是这种方式会让Microsft经过市场尝试在技术竞争中筛选最优秀的技术,但是对于Microsoft技术的跟随者来说,未免有点太不公平,整天吭哧吭哧被Microsoft拿来当免费的试验品来用。我特别不理解的是MSDN宇宙版,Microsoft总是把无穷无尽的文档灌给你,让你永远学不完,但实际上我真的不需要那么多概念,我只需要能够很好的完成我工作的技术,并且这个技术可以持续的完善就好了。而不是今天给我这样一个东西,明天灌给我无穷的文档,后天当我用顺手以后,又告诉我这东西作废了,你给我重新学习新东西,然后又是无穷的文档,总之很恼火。
所以就是:重点学习Java,有时间去学习Python,保持对dotnet的关注即可。
客户端:
前面说了那么多XAML的东西,都是和这有关,七年以后肯定是XAML的天下,但是五到七年之内还不是:
1、Java
Java在客户端真的是扶不起的阿斗,这都怪Sun。Sun造就了Java的成功,又一手毁了Java在客户端的市场。那些个Swing和SWT的死忠团也不要和我争什么,我也懒得和你们争,你们觉得好就好吧,道不同不相与谋,你觉得好你就用你的,我觉得不好我就用别的。用不着缠着我非逼我说Java做客户端好,没必要,况且就算你逼我承认又怎样?我就是玉皇大帝金口玉言了?得到我的承认,Java就有前途了?我好像还没有那么大本领吧?就是IBM, Sun也没有那么大本领,所以好不好也不是我说了算,用不着逼我。
2、dotnet winforms
由于Windows2000/WindowsXP不带dotnet CLR,所以winforms一直没有能够普及得很好,等Longhorn一出来,又变成了XAML了,winforms又被淘汰了,所以 winforms的地位特别尴尬,但是在这5-7年中,你想开发既能够在Windows2000/WindowsXP,又能够在Longhorn上面跑的桌面程序,winforms好像又是Microsoft技术中最好的选择。所以只好一直尴尬下去。
3、VC,VB
dotnet出来以后就开始尴尬了,说用吧,好像很落伍了,都dotnet时代了,说不用吧,又没有好的替代品,现阶段开发桌面程序,还真得不得不用,而且还挺好用的。所以VC6SP5,VB6的死忠团也比较多。
4、Delphi
dotnet出来以后Borland就开始跟风了,这一跟风,连老本都跟没有了。未来的XAML时代,我也不知道Borland怎样找自己的定位,但不管怎么说,从历史来看,本地代码的应用程序永远有它一席之地!就算XAML又如何如何做得漂亮了,关键的地方,和特定资源处理相关的部分,还是本地代码的程序管用。你看VB出来多少年了,用VB开发的都是一些上层的项目级别的应用软件,一旦涉及产品领域,还是VC和Delphi管用。所以现在大家还是不得不用Delphi7阿。
BTW:XAML应用致力于快速开发项目级别的应用,特别是可以跑在IE浏览器里面的,因此是RIA的首选。但是毕竟也有很多不适合用RIA的场所,特别是例如我要备份某些文件,你用XAML?那性能就不用提了。所以Delphi如果好好发展VCL,封装Windows32 API,我觉得也是一条路,未必比现在跟随dotnet差。
5、Flash RIA
其实我觉得Flash不适合做RIA的,但是Flash普及率太高,XAML又离普及太遥远,而Flash现在就可以用了,所以是当前RIA的首选。不过我对Macromedia公司比较失望,如果Macromedia能够公布Flash实现细节,作为一个公开的标准向ISO提交,同时免费开源Flex,我敢说,Flash RIA会迅速普及的。等5-7年XAML的时代,由于Flash的市场占有率,XAML就未必能拼得过Flash。可惜的是Macromedia公司目光过于短浅,只知道赚眼前的小钱。
6、Python
这5-7年内,RIA应用和RCP应用不会统一,XAML才具备将RIA和RCP统一的实力。从这5-7年来看,Flash是RIA的首选,而RCP的首选,我要推荐Python。原因前面已经提过,简单总结一下:
1)wxWidgets是一个比MFC优雅的库,TortoiseCVS用wxWidges而不用MFC,就是因为wxWidgets好用,而不是为了可以移植。
2)Python的面向对象脚本语言编程适合快速界面开发
3)Python在服务器端和客户端都非常有前途,可以形成一个统一的解决方案,这一点明显比Java有优势
4)Python桌面应用程序可以完全编译为本地代码,脱离Python运行环境,这一点比dotnet winforms都有优势
5)Python可以不受限制的任意调用Windows32 API,所以凡是VC6可以做的事情,Python就可以做
试想一下,现在我们开发桌面应用程序有什么要求?
一、不要附带一个JRE或者CLR的累赘
二、可以快速开发
三、性能要有保证
四、方便的远程方法调用支持
此外如果能够跨平台就最好了
Java前三点都不符合;dotnet winforms不符合一;VC6不符合二和四,VB6不符合三和四;Delphi7符合前四点;Flash RIA不符合三;Python全部都符合!并且请记住Python是一个完全开源免费的方案!
客户端技术在这5-7年中,在RIA领域我会学习一下Flash,在RCP领域我会重点学习Python,此外会观望一下XAML。

comments(7)
发言少,评论少,这说明什么?说明sns要做大做好需要积累,国外的那些著名的sns网站也不是一夜之间就拥有几百万用户的,同样的道理,douban成立三四个月内能做到现在实在不容易了。随着时间的推移,在书籍评论方面显然将越来越丰富。
对于每本书都可以添加为“看过、想看、正在看”,看过的话可以进行评价和评论,其实就是你说的收藏为自己喜欢的概念。
1、豆瓣在技术方面不错。我说过,他参考和使用了:43thingS,UUzone,分享目标,TAG,圈子,小组...
2、功能也不错。发展得也不错。楼上说“实在不易”,看得出呵护之情溢然纸上。:)
3、请注意这里“但由于当时没有收到注册回复邮件,无法以注册用户身份试用。”,这可能说明其服务器响应不及时,或者其故意设置这样的机制。而不是即时发送注册邮件验证,我则希望他即时发送邮件,因为我当时正在试用。
4、“越看越没有信心,圈子里的发言我从来不看,无聊啊,而且发言还那么少。”我这里不是指豆瓣,我指我在其他地方的试用经验。
5、“还有评论也太少了”,这是豆瓣最大的问题所在。如果豆瓣要定位于一家书评网站,那么评论就应占大中之大,书评的质与量是书评网站的生命。
6、我在豆瓣中看到其说“以书会友”,我为什么与你交友,那可能是因为你的某则书评中的观点与我产生了共鸣或与我相左,我想与你交流。
7、说到底,书评才是重中之重。交友是其次。交友只不是输助功能而已,加强会员之间的关联。
8、所以我疑惑:“以书的名义做“卖书”还是“交友”?搞不懂了。”
9、压力挺大,所以说创业不易。
外:看官们有意见请留下。不然一人的呼号显得那样苍白。
:)
豆瓣的注册确认信没有延迟(没有理由这样做)。90%的注册信是在你点“注册”之后20秒之内从豆瓣发出的。但是接受方的快慢我们无能为力。你用的应该是hotmail, 恰好豆瓣的用户反映问题最多的一家。而且hotmail收信回复是“Queued mail for delivery“, 和别家都不一样。
豆瓣的书价比较是通过自己的搜索引擎实现的。界面越简单的网站,背后往往越复杂,这个你一定知道。
书评不够多的确是因为上线时间短。另外豆瓣不鼓励转载,也没有编辑写手,希望大家看到的都是和你一样普通读者真实的声音,这种宁缺毋滥的原则对启动内容的数量的确不利,但我们相信给用户带来的是更好的体验。像飞呀飞说的,这是时间能解决的问题。
评论和交友在豆瓣是同等重要的。一般来说,读书越多的用户对“谁在和我看同一本书”这样的功能越是重视。
最后,创业的确TMD不易。我不知道你说的”他提一点”的他是谁,我自己只说过flickr曾经是豆瓣的老师。不过谁模仿谁是仁者见仁,智者见智的事情。晚上我睡不着觉的时候琢磨的是豆瓣对看书看电影的人有多少用,不是豆瓣到底是web 1.9几。豆瓣会不断有新的东西出来,多数是因为不断听取用户的意见。要是总是担心一不小心做得和谁一样了,这年头就没时间琢磨更有用的事了。
谢谢你加入豆瓣。
一,豆瓣一直比较低调,相比之下豆瓣自己发出的声音比土豆自己发出的声音要少,反而倒是订阅的圈子中有不和人回应和评论豆瓣,这说明其品质不错。赞一下。
二,“最后他提一点”,是笔误,是“最后提一点”,后面的观点当然是我个人的臆想。:)“我自己只说过flickr曾经是豆瓣的老师”,我说对了一点嘛。
三、我说“还有评论也太少了”,是期望,没有指责的意思。就像阿北说:“这种宁缺毋滥的原则对启动内容的数量的确不利,但我们相信给用户带来的是更好的体验。像飞呀飞说的,这是时间能解决的问题。”
外:相比土豆,我更喜欢豆瓣。
其他的就不多说了,祝大家和我自己都发财。^_^
希望豆瓣一路走好!