社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

编程语言大对决!Ruby和Python谁更可读?

数据与算法之美 • 2 年前 • 188 次点击  



  新智元报道  

编辑:Joey 桃子
【新智元导读】计算机编程语言Python和Ruby谁更易懂可读,网友们展开了激烈论战。

也许很多人认为,编程只要被计算机读懂就可以了。

但是对于调试人员,或者维护人员来说,也得需要易懂可读。

总之,越是容易理解和阅读的代码当然越好了。

这不,关于编程语言Python和Ruby谁更可读,网友都吵翻了。


很多网友站队Ruby,这是为什么呢?

Ruby大战Python


其实,Ruby和Python几乎没有区别。

如果一个Python程序员打开了一个Ruby代码库,他不需要外部资料也能轻松弄懂它。

反过来Ruby程序员也是如此。

然而,Ruby程序员不太可能像Python程序员浏览Ruby代码库那样轻松地浏览Python代码库。


接下来本文将告诉你原因。

先让我们先用Python来创建一个类「博客文章」。


我想要打印这篇博客文章的标题,在Python中有两种方法可以实现:


第一种是简单的打印属性(attribute)。


第二个是在我们的类中添加一个 __str__ 方法:


这样我们就能更轻松地打印标题了。


那如果我想要改变这篇博客的标题呢?

同样很简单。


让我们看看同样的步骤在Ruby里表现如何。


类运行同样很轻松。


让我们来试着打印这篇博客的标题。


oops!出现了未定义的方法(undefined method)。

在Ruby中,无法像在Python中那样访问实例变量。你需要一个getter。


你也不能直接设置属性——你需要一个setter:


现在我们再试着运行看看。


到现在Python和Ruby的可读性似乎都不错,等等,让我们看看下面的测试。

在Python里,我们可以通过BlogPost.count或post.count访问帖子的数量。


而在Ruby中,我们可以访问post.count,但我们不能像在 Python 中那样访问 BlogPost.count。

由于这是一个类变量,我们需要能够从类本身访问它。


现在我们可以使用BlogPost.count了,但我们不用post.count,因为它可能与常规实例变量混淆。


现在我们只能从BlogPost 类中访问count,那我们可以设置类变量吗?

让我们试试看。


OMG,我们从来没有为这个变量定义过setter。

放到Python里怎么样?


有用了,我们甚至可以在类里完成这一操作。

那么有人就要问了,Ruby的对象更直接吗?

我认为在 Ruby 中更容易看出类和实例属性之间的区别。

Setter 和 getter 允许您清楚地指定哪些属性是可读和可写的。

您可以通过不实现 setter 来保护您的类属性。在Python中,很容易意外写入count属性——这会破坏你的程序。

默认情况下,post.count 和 BlogPost.count 都返回属性的值,但如果它只能从类中访问,则更容易注意到它是类属性。

文章最后的结论说,显然Python和Ruby都比PHP或Java更容易阅读,但Ruby更近了一步,它写出来的代码让你一眼就能看明白。

网友争论


关于Python和Ruby谁更可读,网友们在评论区展开了激烈的讨论。


单独看,我认为Ruby比Python更具可读性,并且容易理解。实际上,Ruby代码并非如此。一旦有人开始进行高级元编程,你就想杀了他然后把他给埋了。

使用Ruby编写的Web应用开发框架Rails在很大程度上可以通过自主设计、良好的文档,以及已经编写问题答案的大量用户群来摆脱这些困境。


网友大赞,这确实反映了我真实的经历。Ruby是一门非常一致的语言,但我认为人们真正迷恋 Ruby 的是元编程,也包括我自己在内,很快你将需要在大脑中掌握大量上下文来理解所有正在发生的「魔力」。

有人就对其进行了反驳。


我精通的Python,直到现在我仍然无法在Ruby中做任何有用的事情。其实,Python比Ruby更具可读性、易懂。

我同意,对于这两种语言的新手来说,Ruby的@和@@可能会使阅读起来有点困难,而且对我来说似乎更冗长,Python获胜。


还有网友直接搬出了Ruby设计者Yukihiro Matsimuto曾说过的话,

我没有让Ruby对于每个人来说都很完美,因为每个人感受不同。没有一种语言可以完美地适合所有人。

对于Guido van Rossum来说,最完美的语言可能是Python。

我希望看到Ruby能够让世界上每个程序员变得高效,享受编程,并且快乐编程。这是Ruby语言的主要目的。


有网友认为这篇文章就是在讽刺。每次比较之后,当他们说Ruby更易读时,我都以为他们是在开玩笑,直到看到了多重继承这部分。


要说,Python和Ruby真正受欢迎程度,那绝对是Python获胜。

就拿GitHub在2021年底发布的年度报告来看,除了霸榜的JavaScript,Python是第二受欢迎的编程语言。

Ruby的受欢迎程度也是近年来连续下降。


从应用广泛程度上来看,Python的应用范围更广。

除了web开发外,Python还被广泛用在服务器后端的高性能服务器实现,各种密集运算,全文检索,各种文本处理,系统管理等等。

那么,Ruby的应用仅限在web开发领域。


再从薪资待遇上来看,

根据在线社区Glassdoor的数据,Ruby开发人员的平均年薪应约为76,540美元,或每月大概6380美元。

Python开发人员的平均年薪为92,000美元,相当于每月近7670美元。

这么来看,Python开发人员薪水要比Ruby的高,每月多出来1000多美元。

不管怎么说,Python和Ruby更像是拼音输入和五笔输入的感觉。Python语言更简单,适合初学者,而Ruby的语法更丰富,要求更高。

那么,你觉得这两种语言哪个更易懂可读?


参考资料:
https://confuzeus.com/posts/python-ruby-readability/
https://news.ycombinator.com/item?id=32158800
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/137946
 
188 次点击