统一的开发体验

目前来说网络应用是演变速度最快的应用之一。程序员们都习惯了用各种语言和工具混合拼凑自己的作品。比如一个人承担整个项目,开始做应用原型决定使用最快的方法完成草稿,于是选用IIS、.NET、C#、MVC、MSSQL完成主要草图,人性化的IDE加上完善的框架和Razor渲染引擎,这个过程在没有任何阻碍的情况下完成。然后由于环境的限制,下一步选用Apache、PHP、MySQL重构项目,虽说是重构,其实就是将把语言翻译下,整体思想不变,前端部分是scss、blueprint、 jquery、php等一些琐碎的东西,ajax接口部分可能要测试下大小写兼容,其他就没什么好修改了。当然这只是一个开始,部署项目、配置服务器,SEO优化,各种测试,这些都需要用到各种不同的知识,最后不要忘了前端设计知识更涉及各种更抽象的知识。

生物都善于适应痛苦,而习惯快乐。程序员当然不例外,难道没有任何人觉得开发一个项目要用到十几种语言是完全合乎情理的吗?恩,如果您能自始至终都只用一种语言开发,那么Silverlight或许是你首先想到的,服务端又用到WCF,于是你发现html只做容器,你都不用写js或者css了,呈现级别完全用silverlight完成。正常会马上怀疑这么做学习代价真的减少了吗?学习新的框架和特性会让人们得不偿失吧。那么如果一个学生一开始就只学习C#和.NET呢?这点在Ruby上映射的很好,一致的体验让编程人员快感大增。但Ruby目前并没有想要排除html、css、js之类的前端语言,你也许会说用框架的形式不是能用helper搞定各种前端问题吗?恩,但这个隐含的前提是你确实很懂html、css、js。然后有人会说反正这个在学会Ruby后都非常容易掌握吧。这就是人们习惯了痛苦后的一种常见说法。一致性一直是编程范式的核心思想之一,容忍瑕疵真的是众望所归吗?

我个人觉得能胜任统一性的可能是一种脚本语言,效率或许不是我最关心的,我关心的是未来有多少人会因为这个一致性而加入开发者行列。Ruby、Python、Node、Lua是我脑海里依次浮现的,排名“分”先后。那么实际上我们要做什么呢?最简单的莫过于开发全新的浏览器或者扩展现有的浏览器。比如现在以Python为例,前端部分不再单纯支持html、css、js,而是扩展支持Pyhton的布局和交互语言,不是像haml那么干,而是真正的用标准框架实现布局和交互描述。后台Python已经提供了Django这样的的服务器,于是之后问题就不大了。即使创造一个新的脚本语言应对这个问题,对现代人来说也不是什么难事。最近我都会时不时的会构思下我理想中的脚本语言。

文章还没完,事实上还有另外一件值得注意的事。既然目前免费功能又强大的浏览器都那么难以提高市场占有率,这么做意义何在?确实,我觉得这么做大概只能自娱自乐。前文只是要引进接下来的统一系统的想法。从硬件角度讲,如果人们只有一套IO设备情又会况如何呢?某个贫苦的学生只有显示器、键鼠,再附送几个usb接口,这样的电脑连接上高速网络另一端的中央服务器,这些硬件都是服务商亏本低价出售的,他只需要每月向服务商交出服务费。云是现代人给这个情况的形容,这是最理想状态云服务。IO不局限于上述硬件,移动无线设备当然更合适,科幻点讲可以直接链接你的大脑(人脑可是最廉价的超级电脑)。只要核心处理都集中于开发手中,事情将变成另外一种状态。虽然会引进新的麻烦。但世界切切实实正向这个状态前进着。

目前人们执着于浏览器的开发和市场占有率,就是对客户端的执着,大多是人还没有意识到集体供暖将会带来的机遇。每次世界级别的重构都会让很多没提前意识到这点的大公司消亡,不知道这次会不会是微软之类的公司。