设为首页 收藏本站
查看: 603|回复: 0

[经验分享] Ruby优于Python之处(面向hackers)

[复制链接]

尚未签到

发表于 2017-4-30 09:10:06 | 显示全部楼层 |阅读模式
  <!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->
Ruby优于Python之处(面向hackers

Posted:June7,2011byJinpuHuinArchitecture
Tags:Python,ruby,Language

0

粗略的看,rubypython非常的相似,都拥有不错的社区,大量的类库,都是动态语言。但如果要在之间做一个取舍?你会怎么看呢?

我说说我的看法:

哲学不一样

Python强调的是代码风格的统一,一件事情只有一种做法,从而似乎更加利于团队合作;而Ruby走了另一个极端,由于语言设计的非常优美,做一件事情可以有更多的选择,所谓条条大路通罗马。如果你问一个hacker,他一定会告诉你,他不喜欢被限制。至于团队协作的问题,那就看你的团队都是什么人组成的,如果都是一帮hacker,那自然会有一些协议,大家在这个协议的基础上工作,不同的模块间按照协议通讯便ok了。但如果你的团队比较保守,那就选择Python吧。如果我build一个新的团队,我就一定选择hacker。可以推荐大家去看一下黑客与画家。:)

对象系统更彻底

比如一个数组对象的长度,在Python里只能len(array),或者array.__len__()。而在Ruby里,一切皆对象,你可以array.size或者array.length。细节决定成败。

元编程支持更猛

你可以在任何时候,动态的修改任何Rubyclass,这得利于Ruby实现OO时构建的eigenclassRuby对象系统实在值得好好研究,可以参见我以前的一篇博客)。而这在Python里做起来是很困难的,甚至是不可能的。Python对于导入的class或者模块,只能以过程式的方式,进行XXX.new_method赋值,而Ruby可以和import前的写法一致,是声明式的。虽然Openclass容易引入不可控的bug,但他也可以hacker更多的空间,更多对已有代码的控制,用得恰当可以使代码更加简短,更加可读。比如:10.years.ago,这让hacker写起来很愉快!这更加适合做DSL

匿名blocks发飙

Python可以用lamba来实现,但可恶的是代码必须是oneline的,这典型没有考虑block的威力。而Ruby的每个方法都可以接受一个匿名block。那匿名block有什么威力?JavascriptNinja一定明白。对于非JavascriptNinja,简言之,可以直接使用block传递给一个方法,方法可以利用block产生域的变量,如果还无法想到好处,最直接的就是去学好Javascript

任何表达式,方法,函数都有一个返回值

如果你熟悉FunctionalProgramming,你就知道,任何元素都应该有一个返回值(比如if表达式也会以最后的结果作为返回值),结果往往由一系列的函数调用决定,一个函数的输入往往是另一个函数的输出。这点Python是做不到的。

更快和更注重实效的积累

rails3.1就快出来了,里面拥抱了jQuery,拥抱了sasscoffeesrcript,还内置支持了httpstream。这些在djangoPythonwebframework里没有得到及时的反应。而且rails生态系统里,rails的进化是社区推动的,一个新特性必然是更加合理的解决了目前web开发的问题,而非理论或个人英雄主义。取之于民,用之于民。

以上是我对这两门语言的一些简短的想法,将来有新的想法再加入。不想引来Pythoners的口水,如果你觉得我的观点有问题,不用赞同便是。



  原文:http://jinpu.wordpress.com/2011/06/07/what-are-the-advantages-of-ruby-over-python/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371052-1-1.html 上篇帖子: python下建立opencv开发环境 下篇帖子: Python函数参数默认值的陷阱
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表