您的位置:首页 > 编程语言 > Ruby

perl,ruby,python 个人看法(内部讨论)

2015-08-26 11:22 218 查看

那天时间有点晚了,说的多,大家可能也没有听完整

现在书也到了,大家有时间可以看看

下面是动态语言我的个人评价

仅供参考,写的有点乱,大家见谅

perl,ruby,python三者运行效率都差不多,只是各有侧重而已,毕竟要效率就用c了

功能也差不多,不存在谁能做谁不能做的问题

从纯粹语法设计的角度,比如代码书写规范,数据结构的设计,算法控制和设计的一致性ruby是最好的,书写ruby的代码我感觉思路很清晰,语法简洁而又优雅。perl比较接近shell(包括powershell),因此相对差一点,混乱一点。python在两者之间(比如python里面就有冗余的数据结构,一些数据结构很少用到,ruby设计的刚刚好,perl又太少了,所以加了一些变通方法。三者从代码的数量来看,ruby和perl较少,python较多,主要是不能嵌套导入库,而且缩进的语法,使得python的代码不可能比其他两个短,纯粹玩语法,看谁写得短,无疑是perl,不开strict和warnings,几行就搞定python10几行的功能,当然可读性就是问题)。

从库的多少而言,perl是最好的,cpan(官方的库)比python和ruby的库加起来还多(15w多),而且分布较广,从网络到系统管理,到科研到金融的都有。python的库分布也比较广(6w多),可以看做小一号的perl,库主要在科研(高校推广的好)和网络方面(但是python有个问题,它的2和3两个版本是不兼容的,因此有些库只有2,没有3,所以库方面打了个折扣)。ruby的库最少(4w多),但质量都不错,但是这些高质量的库基本上都集中在网络方面,所以ruby的webapp最强,ruby on rails是网站开发的杀手级框架。(日常使用如果是与文本相关的perl最强——perl的文本处理正则表达式已经成为的工业标准,ruby次之,python第三,如果需要用到数值计算之类的,python(numpy)和perl(pdl)都不错,ruby在数值计算领域几乎没有啊,悲剧啊。但是到了科学计算干嘛要用他们呢,有的是商业软件。所以python的科研这一部分主要就应用在大数据处理,因为python可以写网络也能处理数据,因此就直接合用了。ruby的话科研部分没有,因此只能用它来获取,抓取数据,分析数据让其他语言来负责,有本书《ruby与r数据处理之旅》就是这个思路,ruby网络编程强,就让ruby来从网络抓取数据,然后处理工作用r语言来解决,另外有本书叫《clojure数据处理手册》,思路也一致,用clojure来抓网络数据,后面用mathematica和r语言来处理,它还专门写了一个包,用来粘合这几种语言。)

从面向对象而言,ruby最好,python次之,perl最差,但三者都支持面向对象编程。因为perl刚出来的时候,那还没有面向对象编程的概念,所以perl的面向对象是通过加载包实现的,不是原生支持的。python的面向对象和面向过程是参杂的,只有ruby是纯粹的面向对象的。

从面向函数式编程而言,perl是最好的,ruby次之,python最差。perl是完全支持高阶函数(函数作为函数的参数,函数作为函数的返回值,递归函数),闭包(匿名函数,相当于mma里面的&,#1),函数嵌套(函数中再定义函数,相当于mma中module里面再定义module)等等。ruby不支持函数嵌套,一个迭代器的闭包只能有一个(当然也够用了),python的匿名函数只支持单行,所以表现力有限(如果多行的话,就变成另外的语法了,python是靠空格缩进来表示语法,ruby是end,perl是{ })。所以说三者里面ruby是最均衡的,除了面向对象,其他都是最强,走的是平均分路线。

从语言的社区氛围(这个很重要,这种氛围直接决定了相关教程风格,相关问题的解决思路):perl和ruby都提倡一件事情多种方法解决,因此思路比较灵活,图书也比较多,perl的教程是写的最好的,而且各个方面的都有,初级、中级、高级,系统管理,函数式编程,网络编程等等,ruby走的是少而精的路线,尤其是元编程这本书,堪称所有动态语言的高级典范。python的书都差不多,所以python教程主要的风格是将语法语言的少,专业领域的应用较多,比如用python进行数据分析。所以说perl和ruby的程序可以写的很魔幻,如同看mma的代码,经常感觉到:还可以这么写,或者这么写还能更好。也可以写的很规整,所以还专门有本书《perl最佳实践》(缺货,没买,我这里有pdf)专门教你怎么写规范的代码,不要写的太魔幻。我看了这本书的代码没有觉得任何不好读,不好维护的感觉,我个人之后才认为,代码写的好考的是规范(包括注释,排版等等),语言本身的东西不是重点,虽然有一点加分项。

从流行程度,或者说现在的流行程度而言,python第一,ruby和perl都要差一些。毕竟python在校园的推广是不错的,而且后面有google支持。ruby和perl都是开源社区支持,后面的也有很多公司用,比如ruby就是推特,github,perl就是亚马逊,imbd等等,但都没有google猛。但是从整体编程的占有率而言,c,c++,java,c#,vb。net几乎占了一大半,动态语言整体都没有静态流行。(这种事情很多大牛做过分析,貌似有本书上说是:开发效率和执行效率不能兼得。动态语言注重的是开发效率,静态语言注重的是执行效率,而商业软件大部分都需要执行效率,尤其是单机软件。网络程序好一点,因为网络程序的瓶颈在网络io部分,所以动态语言本身的性能缺陷体现不明显。因此动态语言一般不作为开发语言,更多的是作为粘合语言,脚本语言来使用,打的是短平快。我们的设计过程只要不涉及到有限元之类的东西,要的就是快捷,效率以及创新,程序执行速度慢点都无所谓)

从学习上手的角度而言,python是先易后难,为什么?因为大家都把前面的学完后就开始写代码了,因此高级部分都不怎么管,毕竟python提倡的是一件事就用一种方法解决,所以后面的高级部分,用的也少,系统讲的也少。ruby我个人认为最容易,但是我修正一下我的前提,那就是如果你对面向对象的东东很熟悉,那么你会发现ruby设计的太好了,比java(公认的面向对象)精简,但比java更好用,思路更清晰一致。如果你对面向对象不是很熟悉,那就麻烦一点。从这个角度而言(不熟悉面向对象),python要更好上手一点。因此ruby的学习曲线比较平缓,不会像python一样到后面突然遇见瓶颈或者各种坑。perl因为和shell编程相对接近,而且开发时间很早(1987年就出了,和python,ruby不同,它主要是解决实际问题,所以一开始就是大氛围开始用,而ruby,python都是差不多沉浸了7,8年才开始流行),那个面向对象之类的东西还没有流行,一些高级语法都还没有,为了照顾兼容性等很多东西(perl有四个版本,perl1-4,但是都兼容),因此,它的历史包袱和很重,很多新特性都是后面加上去的,因此玩法也特别多。所以说perl的学习曲线是先难后易,开始一股脑会给你抛很多东西,但是你都弄明白后,后面就是畅游了。

我另外买了一些基础方面的书,比如模式设计,函数式编程语言(haskell),类lisp语言(clojure)大家感兴趣都可以看看,能不能成为生产力不一定,但是开拓思路的好处是绝对有的,尤其是这两种语言,在工业领域用的不多,毕竟库少,历史短或者方言多。但是在国外的学术圈里面都是推崇备至,开拓思路很有帮助,比如lisp在工业里面用的少,但是它的思想几乎影响了所有编程语言。还有一些将编译原理、操作系统的有趣的书,大家有兴趣可以看看。

其实大家怎么选,选好后怎么弄我都仔细思考过,所以大家选就是,可以选一,也可以多选,都没有问题

最后的决定由大家集体决策!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息