Ruby优于Python之处(面向hackers)

 

Ruby优于 Python 之处(面向 hackers

Posted: June 7, 2011 by  Jinpu Hu  in  Architecture
 Tags:  Python ruby Language

0

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

我说说我的看法:

哲学不一样

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

对象系统更彻底

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

元编程支持更猛

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

匿名blocks 发飙

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

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

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

更快和更注重实效的积累

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

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

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值