在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
SleekEngine 随着计算机硬件的快速发展,10年前因为速度问题而被诟病的Java现在成了计算机流言语言中的老大,但是它却仍被认为复杂笨重,近几年来动态语言却有后来赶上的趋势,掌握一门动态语言成了程序员需要考虑的事宜。 近期接触了几种流行的动态语言Python, Ruby, Groovy,它们相比静态语言Java/C++来说,大为简单,灵活,省时,那么选择何种语言? 浅尝三种语言后,写下此文,作为在JavaEye留的第一爪。 从TIOBE网站的语言排名可以看出,比较2000与2008年,Java 从30%跌到20%左右, C++从18%跌到11%, 静态语言从72%占有率降到了60%; 动态语言由27%升到40%,其中Python从1%到5%, Ruby由 < 1%到2.5%。PHP由5%长到11%。(以上数据为大约估算) 从企业界角度看,语言的流行性与以个几点有关: 1) 成熟的库(library) 2) 流行框架 3) 流行程序 4) 企业界的倾向 5)对硬件的利用
Python: 1)三者中最成熟,通用,工具库多,资源丰富,文档等支持强大,几乎能做任何事:网络,图形界面,桌面程序,服务器,图形处理,算法等。 2)相比之下性能好,运行速度快,负载力强。 3)简单易学,文法简洁,其使用空白缩进代替花括号或END使代码看起来很干净,易读易懂因此易维护。 4)基于尽量使用一种方法完成一件事,越简单越好的哲学。这种哲学适合大型项目,因为让其他人看着易懂,好维护,不至于过多灵活繁杂的语法使自己玩的爽了,别人看得傻了。这与RUBY的用许多种方法完成一件事的哲学正相反。GROOVY感觉在两者之间。 5)得到业界承认 a) 大多数Linux,或者流行Linux中绝大多数都默认安装Python,这意味着不管你是哪国人在哪里,想用哪台Linux机子,想用Python就可以用,省时顺手;要用Ruby Groovy还得安装。 缺点: 简要:Python适合大中小型企业各类开发,几乎无所不在,无所不能,想跟紧大型企业或者需要成熟的库,Python可能较合适。 ---------------------- Ruby 1) 语法是更纯正的面向对象语言,许多功能让从Java/C++世界过来的人耳目一新;因为它借鉴了包括Python, Smalltalk, Lisp等在内的一些其它优秀语言的优点。一切都是Object,如避免Python的类似len("name"),而采用 "name”.length, 还有提供类内部参数数据的保护等;提供的更多语法,使程序更易懂简练, 比如它有Block closure,它用' < ' 来表示类继承,用?来表示返回是否的函数。 2) 灵活的魔幻语法,如模块的混入,块,开放式的类定义,加上已有的动态性使其变得极其灵活;各种繁多的著名设计模式在它手中好象都失去了意义,Java做梦都想达到的灵活性在RUBY手中轻而易举,Spring AOP相比也失去了光泽,设计大师们的法则与多年经验也好象都不再适用。 3) 相比Python提供了End作为程序块的截止符,这是Rubist们自认为的一大进步,也是与Python的一个重要区别。 4) 杀手级框架,Ruby on Rails,及还有些其它杀手级框架正在一一跃出。 5)有跑在JVM的JRuby和微软的IronRuby 6)名字与图标很好 Ruby 红宝石是瞄准Perl (珍珠)的继承者而来的,名字与图标都优雅端庄赏心阅目。 缺点 2)性能相对不强 原有的Ruby速度慢,稳定性相对差些,据说是原有的GC写的不强。不过随着新的更好的RUBY编译器的出现与硬件的快速发展与价格降低,此性能问题应该能够在不远的未来解决。据Java Eye的Robbin讲,即使有此性能问题,扩充硬件或设置系统也多可解决问题。 3)对线程支持不强,Ruby 2.0据说要加强 4)好象尚未支持多核,不过未来可能解决,道理同2) 5)对End的意见 不少人认为Ruby的End过多,显得不好看。代码在写很多层时尤其如此,这样使查找相应的起始位置增加难度。有人建议其创始人Mats提供End的替代字符,他有此意,但是好象没有他看的上的,如果谁不喜欢End的,找个自认为不错的字符发给总部吧,要趁早,否则以后越来越难改。 简要:Ruby是令人兴奋的,学习Ruby可以加深程序员对面向对象,及计算机语言的理解,从这一点上说,Python更只象个工具,Ruby灵活却又很有深度,值得一学。Ruby的主要缺点是其性能性,但是看Java的历史可知,当时Java的速度被评为比C++差得太远,可是几年后性能随着硬件的发展而大大加强,所以Ruby的性能应该在未来不会是大问题。 看过Python 和ruby后,本应就此罢手了,但是对这两语言感觉仍有遗憾之处,于是看到了以前看Ruby时瞧不上的Groovy, 却发现这是个不可小看的语言,不仅如此,而且Groovy可能会成为未来耀眼的新星。
1)初看Groovy, 它好象是Ruby 与java的结合体,也添加了少量Python的东西。Ruby中引以为傲的一切是对象,Groovy也可以作到,如 3.times { ...}, 块传递,动态改变类,增加类函数等。它借鉴了大量Ruby 的语法,但是保留了C/C++/Java程序员熟悉的花括号,没有用Ruby无所不在的"End”。而且对Ruby的一些生僻的字符进行了改进,使得更加友好易懂,如块中的 | x | 换成了 → x 2)被Thoughtwork(就是写重构那本书的Martin Fowler所在公司)经理称为 “Java 2.0” ,可以“无缝”结合Java 代码,你可以在Groovy文件中写Java代码,用Java库。Groovy象是个轻量级的动态版Java,而且加大扩展了许多易用的句法,以前曾想过的一些"Java 要是这么写多好啊" 竟然在Groovy中实现了: 如去掉了多余的分号,三引号使得多行的文本变量整洁好看,砍掉了没多大用的getter setter等。 3 )可以使用所有Java的库,因为Groovy"就是Java”。相比Ruby爱好者在一个一个辛苦编写各种库的时候,Groovy已经是站在Java 的车头上向前冲了。 6)业界的支持 7)名字起的也不错 缺点: 1)它虽然借鉴了大量Ruby的语法,但是有少部分没有完全实现,如开放的类,它只是在一定范围内对类开放修改。 2)Groovy就是Java, 目前只有JVM的实现,只能跑在有JVM的机子上。做桌面程序有着Java相同的弱点,不适合做小巧的Window程序 Groovy是个有前途的语言,照现在的势头发展,仅管它现在排名在39名,未来几年内闯入20名,再过些年闯入前十名或更前都不是不可能的事。 三种语言各有特点,选择哪种语言与您的工作环境,项目特点或个人爱好有着关系。随着动态语言的向前发展,他们的简单灵活与强大能帮助我们节省时间与资源,学一种有潜力的语言能让程序员们站得更稳,立于领先之地,如果有天动态语言发达了,设计模式们很多都用不上了,这不是多年的经验淘汰了吗?程序员们不要忽视了他们了啊。 以上内容为参看一些文章与自己初步使用的感受的一些感想,与网友们分享,有错误之处,请指正。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论