或许,我早该写下这篇post,因为我早想写下它,却总是不知道从何说起,同时也是有些怯生生的觉得似乎自己没有足够的技术底蕴去写下这样一篇引发”宗教战争”的post……因为或许ms与open source本身就是水火不容的!
我,一个在ms develop platfrom上面摸爬滚打10多年的”程序员”(或许我还不够格)。在几个月之前忽然转投了linux的怀抱,开始尝试诸多我曾经没有听过,用过的开源产品,开源语言。我这样做并不是心血来潮,也不是要特立独行,而是为了让自己能够换个角度,换个窗口来重新观察一下我已经熟悉了的Internet这个大世界。
从初中开始,我一直使用ms的平台来进行程序开发,当然大多数都是些自己搞着玩的小东西。从ms dos 6.21平台上面使用QBasic开始,直到window 3.2下面使用vb 4.0开发gui应用程序,再到vb6.0 + win32 api的开发方式,最后进入大学,开始一个铁杆.net developer……深深的感觉到ms的平台越做越漂亮,开发平台越来越好用,集成开发环境越来越方便,似乎所有开发工作都必须使用win 2000/2003,vs.net才能进行了(请注意,我的意思并不是那种依赖于把控件拖来拖去的开发方式),所有的编程习惯,开发习惯都自然而然的融入了ms预先设计好的条款之中。无可厚非的是,确实,ms是user interactive design方面的专家,非常体贴用户/开发者,这么做没有错,而且是值得业界广泛学习的。
直到因为工作需要,我的任务从开发asp.net pure html page变为大量使用ajax技术为G宝盘构建rich interaction的UI时,渐渐的远离了纯ms的技术,让我足够有时间重新思考关于技术的好多问题。使用vs.net编写客户端的javascript并不比使用editplus好,js与服务器端使用基于json协议的通信,并不关心server使用何种web平台,甚至在生成json的用途中,无论asp,或是php,python等语言都比asp.net来的方便,因为asp.net天生就是被设计来支持”类似WinForm开发方式”的,基于server control的开发让asp.net只能以一种ms预先设定好的工作来很好的工作,要不就是以一种蹩脚的方式,不被vs.net IDE支持的方式来在页面中,或是Page_Load()中写入你想要输出的代码,ms对于asp.net的这种确实可以极大的提高生产力,可是确实不是一种让asp.net能够被所有开发者灵活应用的设计方法。在使用ajax开发的过程中,广泛的接触了.net之外的世界,比如ajaxian.com,ajaxpatterns.org这些技术站点,当然也就潜移默化的受到了开源思想的影响,大量的使用prototype.js,rico.js,script.aulo.us等开源框架,让我深深感觉到了open source的魅力,这是一种与我以前对开源平台完全不同的看法,相反,开源平台比ms的平台更加稳定,成熟,并且免除了很多不必要的学习负担。当然其实这并不是最大的魅力所在,开源比ms最大的好处是ms的是一个产品,产品肯定是存在商业目的的,于是由于有技术之外的因素介入,可能一种平台上面很多东西就不是那么单纯的了,可能并不需要升级,可是我们必须进行升级,.net 1.0->1.1->2.0->3.0其实就是最好的例证。可能有人反驳我说的不对,认为.net的进化是历史的必然,进步的必要,但是如果一个理智的ms开发人员好好思考就会发现这是一种比较纯粹的商业行为,这里不再多讨论。
使用过ajax这种技术之后,我开始不由自主地开始关注open source的世界,发现其实很多ms平台上面被ms包装过一下来推销给我们的概念,其实在open source community里面早就存在过,ajax就是个很好的例子,直到现在altas还没有正式发布,而很多web2.0站点已经是full ajax powered了。而且altas并不如想象中如此完美,问题在于:介于ms多年来的desktop application develop experience来说,ms想把altas封装成一个能够开发web上面的desktop app like的应用,可是似乎忽略了浏览器的能力,javascript构建的应用所能达到的复杂程度,结果altas变成了一个很有desktop app风格的开发框架,可是却臃肿不堪,速度奇慢无比,而且与asp.net bind很紧(当然这个又是商业原因)的丑孩子……再说一个例子,微软推出的Avlon,当然现在叫WPF,其实早在2001年,moziilla就有一个类似的RIA Platform-Mozilla,基于XUL与javascript,配合XPCOM丝毫不比现在的flex差,只不过一个平台的兴衰,似乎技术不能起到主导作用。或许将来也是WPF的天下,因为我们的客户用的都是Vista。
在转向Linux以后,发现这个咚咚果然不是一般用户,乃至开发者可以驾驭的。通常来讲,以我的Ubuntu drapper为例,如果不使用apt来获得软件,而使用网上的tarball包来进行软件安装,保证要费一番工夫,因为总是有几个动态链接库或者其他的什么东西需要你再去寻觅一番,看来open source的东西确实需要好好包装一下,或是说需要一个够好的linux distrabution。在linux下使用vim进行python脚本开发,感觉也非常不错。与window是完全两种不同的思维方式,再次回到ms的开发平台上面时,你会发现原来ms确实培养了我们很多的习惯,而这种习惯一般都不是好习惯。
所以说,技术也需要博览,技术不仅仅是对某种理念的愚忠,换个窗口看世界对广大的开发者只有好处!
Technorati : ajax, develop, linux, mozilla, opensource, webdev, xul