五千年(敝帚自珍)

主题:【文摘】SWT……内幕? -- upson

共:💬44 🌺50
全看分页树展 · 主题 跟帖
家园 嗯,两种我算都知道点皮毛吧

一直都用来做些辅助的小东西。

动态语言相对于静态语言来说,他的优势在于精简和语法上的一些灵活的特殊结构。某位如果有幸维护俺写过的某段so 长的代码的人就会看到俺在注释里面高呼叫,为啥不是python,因为用python做也就几句话完了。但是这也带来一个副作用,就是不够规范,不容易象java那样大规模的协同开发。举个例子,在java 里面,架构搭建好以后,一个大牛和菜鸟写出来的代码不会有太多本质的差别。这就是java语言可以大规模工业化的先天优势(这点c#,c++都有比较大的差距)。

而当初我学习ruby quiz的时候,则发现一个问题,可以有几十种实现,代码风格也千奇古怪的,从所谓一句话的golf风格到死硬的java风格都有,这样易读性和可维护性会是个大问题,特别是大项目和考虑到普遍新手的情况下,也就是说动态语言开发效率的提高,在某些情况下,是以牺牲某些后期的成本为代价的。而现行ide工具的发展,已经可以部分弥补静态语言在编写效率上不足,而动态语言这块,一直缺少优秀的ide支持,打了不少折扣。这一块python相对还好一些,因为语法够简单,又以缩进的方式强制规范了代码。btw, 以我的经验,对于团队开发,代码规范化远远比代码技巧更重要。

python和ruby则是动态语言里面的两个极端。

python足够简单,基本上翻一翻书上手就会,他也不是纯oo的东西,从入门的角度考虑,更容易为人接受,这也是python生命力所在,另外从发展历史看,python相对来说更加成熟,很多问题都已经有了相当成熟的解决方案。python很适合用来编制一些小工具和辅助软件,这样即充分发挥了脚本语言开发效率的优势,又不会产生太多的维护问题。而对于企业级别的应用,python目前在某些方面也有比较成熟的平台可以去推动,比如zope,但是整体来说,因为专业程度比较高,不会是太主流的。而最近受ror刺激,随后虽然也出了些东西,但是缺少天才程序员的推动,没什么大的反响。一句话吧,就是通用的框架级别的东西不够份量,吸引不到太多的眼球,注定只能在某些特殊领域才能发光。

而相对来说ruby就复杂很多,实际我认为从语法上看,ruby的复杂程度要超过java和c#。 ruby的作者本身开发ruby的原因就是因为python太简单,不够pure oo, 所以从头实现了一个相当复杂的脚本语言。ruby充分吸收了python的语法动态方面的特点,又加入一些很好玩的特性,比如 closure这样的东西和某些oo方面的高级特性。但是真正把ruby推到目前这种火热状态下的原因是ror。长期以来java阵营一直缺少一个高效易用的total 方式的企业应用框架,而ms的。net虽然是一个相对易学和相对高效率的开发平台,但是因为封闭性,一直为广大精英阶层和unix阵营所不耻。 ror的成功在于从框架级别去封装应用的复杂性,再充分利用ruby语言动态简洁的特性,就象一颗原子弹空投进入企业应用市场(这块可占了整个软件市场的80%),降低了企业应用开发的门槛,把所有的大傻都振了一边,然后这才有人反应过来,原来非ms的解决方案,也可以做的这么简单高效。这种震撼的2面,一边是吸引了大量的人投入ruby的学习过程,另外一边是java阵营本身开始进行反思,agile迅速成为主流。

但是就我看来,因为ruby语言本身的复杂程度和学习曲线,考虑到可以预计的很长一段时间,软件业仍然无法解决人力资源短缺的问题,这2个因素直接决定了除ror这样良好封装的框架为核心的企业应用以外,短期内ruby很难有更多的机会成为主流的开发语言。我曾经跟某人说过,如果java学不好,就更不用说ruby了,因为更复杂。除非有更多专业性质的成熟框架出现,全面的降低应用开发的门槛。企业市场,相信很长时间内,aigle后的java和。net还会主流很长一段时间。当然借助ror的热风,如果能够吸引到足够多的java 精英转投ruby,未来ruby提早成为主流也为可知。对于精英来说,复杂总是更有趣的东西,所以这个角度看, ruby会更好一点。

ror并不是ruby的成功,而是一种解决问题的思路的成功, 我在某个项目按ror的一些思路和结合java5本身一些特性封装完成的一个框架,在开发效率和易用性方面同样不输给ror(前提是准对当前项目而言)。而java阵营也存在大量的类似开源方案。未来,竞争还会更加复杂。换句话说,如果python社区抢在ror之前推出一个同样级别的应用开发框架, 现在amazon上最热卖的肯定是python。

另外,在没有得到好的商业支持,实现ide级别的refactor ,代码profile等功能之前,动态语言很难大规模进行开发,尤其是大中型项目,很长一段时间内,动态语言还不会成为主流,只会在特点场合适用。动态语言的真正大规模应用,我可能更看好的是一种变通,即groovy(我更喜欢这种c like风格的脚本语言), jruby这样能整合传统静态语言和动态语言的方式出现,也就是依赖vm的脚本语言。ms也在做同样的努力, jython的原作者早已经完成了。net版本的python,另外还有若干个可以跑在vm上有趣语言。

还可以发现的一个趋势是传统静态语言的大量动态化特性的引入,或者未来,这个分界会越来越模糊。

我已经脱离开发一线一年多了,这一年可能有大量的新东西出来,以前有个上海人写过一个judo的脚本语言,号称第一种4g 的脚本语言,刚出来也很吸引眼球,归根于商业和应用上缺乏操作,现在已经很少人知道这东西了。所以趋势,还是很难说。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河