成为VIP会员查看完整内容
VIP会员码认证
首页
主题
发现
会员
服务
注册
·
登录
0
编程语言大对决!Ruby和Python谁更可读?
2022 年 7 月 25 日
新智元
新智元报道
编辑:
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
登录查看更多
点赞并收藏
0
暂时没有读者
0
权益说明
本文档仅做收录索引使用,若发现您的权益受到侵害,请立即联系客服(微信: zhuanzhi02,邮箱:bd@zhuanzhi.ai),我们会尽快为您处理
相关内容
Ruby
关注
198
Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言。
【干货书】Python3编程高级指南,494页pdf
专知会员服务
90+阅读 · 2022年5月18日
【干货书】《Pydon'ts:编写优雅的Python代码》,263页pdf
专知会员服务
91+阅读 · 2021年11月2日
【干货书】Python科学编程,451页pdf
专知会员服务
127+阅读 · 2021年6月27日
【2020新书】Ruby 3 编程: 从小白到专家,598页pdf
专知会员服务
30+阅读 · 2020年12月17日
【干货书】Python 编程,480页pdf
专知会员服务
238+阅读 · 2020年8月14日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【干货书】用Python构建聊天机器人,205页pdf,使用自然语言处理和机器学习
专知会员服务
218+阅读 · 2020年6月14日
算法与数据结构Python,369页pdf
专知会员服务
163+阅读 · 2020年3月4日
新书《给数据科学家的Python技能秘籍》,87页pdf,简单上手实用!
专知会员服务
108+阅读 · 2019年12月26日
从 Kotlin 开发者角度看 Java 缺失的特性
InfoQ
0+阅读 · 2022年6月25日
手把手教你写出令人窒息的烂代码
夕小瑶的卖萌屋
0+阅读 · 2022年4月30日
“C 不再是一种编程语言!”
CSDN
0+阅读 · 2022年4月4日
“C不再是一种编程语言”
AI前线
1+阅读 · 2022年4月2日
PHP 正在干掉 Python
CSDN
1+阅读 · 2022年1月25日
C++ 最难学?最易/难学习的编程语言 TOP 5 来了!
CSDN
0+阅读 · 2021年12月30日
Python的十大特性
AI前线
0+阅读 · 2021年12月24日
Python 的十大特性
InfoQ
0+阅读 · 2021年12月21日
2021 年 Python 的好与坏
InfoQ
2+阅读 · 2021年11月16日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
面向异构数据库的查询语言设计及其基础理论研究
国家自然科学基金
1+阅读 · 2015年12月31日
蒲黄生行熟止的物质基础及质量评价
国家自然科学基金
0+阅读 · 2014年12月31日
面向动态语言程序的缺陷理解研究
国家自然科学基金
0+阅读 · 2014年12月31日
基于中子反射技术研究HMX炸药晶体和氟橡胶粘结剂的界面结构
国家自然科学基金
0+阅读 · 2013年12月31日
声学相干完美吸收体
国家自然科学基金
0+阅读 · 2012年12月31日
低维二氧化铈/石墨烯异质纳米结构的合成与特性研究
国家自然科学基金
0+阅读 · 2012年12月31日
针对Android系统的Java/C++多语言接口建模与分析
国家自然科学基金
0+阅读 · 2012年12月31日
外源添加物质对百子莲胚性愈伤组织超低温保存逆境应答的调控机理
国家自然科学基金
0+阅读 · 2011年12月31日
掺杂PST与BZNT异质多层复合薄膜的介电调谐性能研究
国家自然科学基金
0+阅读 · 2009年12月31日
缺中子核99,101Pd的带终结特性研究
国家自然科学基金
0+阅读 · 2008年12月31日
PEER: A Comprehensive and Multi-Task Benchmark for Protein Sequence Understanding
Arxiv
0+阅读 · 2022年9月19日
Joint Language Semantic and Structure Embedding for Knowledge Graph Completion
Arxiv
0+阅读 · 2022年9月19日
PyTorch Geometric Signed Directed: A Software Package on Graph Neural Networks for Signed and Directed Graphs
Arxiv
0+阅读 · 2022年9月18日
Estimation of Optical Aberrations in 3D Microscopic Bioimages
Arxiv
0+阅读 · 2022年9月16日
Federated Coordinate Descent for Privacy-Preserving Multiparty Linear Regression
Arxiv
0+阅读 · 2022年9月16日
Visual Recognition with Deep Nearest Centroids
Arxiv
0+阅读 · 2022年9月15日
From Books to Knowledge Graphs
Arxiv
0+阅读 · 2022年9月15日
The Complexity Classes of Hamming Distance Recoverable Robust Problems
Arxiv
0+阅读 · 2022年9月14日
Multi-view Contrastive Graph Clustering
Arxiv
13+阅读 · 2021年10月22日
Variational Knowledge Graph Reasoning
Arxiv
15+阅读 · 2018年4月5日
VIP会员
自助开通(推荐)
客服开通
详情
相关主题
Ruby
Python
代码
编程语言
编程
调试
相关VIP内容
【干货书】Python3编程高级指南,494页pdf
专知会员服务
90+阅读 · 2022年5月18日
【干货书】《Pydon'ts:编写优雅的Python代码》,263页pdf
专知会员服务
91+阅读 · 2021年11月2日
【干货书】Python科学编程,451页pdf
专知会员服务
127+阅读 · 2021年6月27日
【2020新书】Ruby 3 编程: 从小白到专家,598页pdf
专知会员服务
30+阅读 · 2020年12月17日
【干货书】Python 编程,480页pdf
专知会员服务
238+阅读 · 2020年8月14日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【干货书】用Python构建聊天机器人,205页pdf,使用自然语言处理和机器学习
专知会员服务
218+阅读 · 2020年6月14日
算法与数据结构Python,369页pdf
专知会员服务
163+阅读 · 2020年3月4日
新书《给数据科学家的Python技能秘籍》,87页pdf,简单上手实用!
专知会员服务
108+阅读 · 2019年12月26日
热门VIP内容
开通专知VIP会员 享更多权益服务
《时间序列预测方法综述》美陆军智能战场环境感知2024最新74页报告
《21 世纪的信息战:在现代海战中实现可靠指挥与控制》2024最新报告
战场教训:乌克兰如何重新定义对抗性环境下的现代战争
《美国陆军工程兵团:时间序列工具箱用户指南》2024最新69页报告
相关资讯
从 Kotlin 开发者角度看 Java 缺失的特性
InfoQ
0+阅读 · 2022年6月25日
手把手教你写出令人窒息的烂代码
夕小瑶的卖萌屋
0+阅读 · 2022年4月30日
“C 不再是一种编程语言!”
CSDN
0+阅读 · 2022年4月4日
“C不再是一种编程语言”
AI前线
1+阅读 · 2022年4月2日
PHP 正在干掉 Python
CSDN
1+阅读 · 2022年1月25日
C++ 最难学?最易/难学习的编程语言 TOP 5 来了!
CSDN
0+阅读 · 2021年12月30日
Python的十大特性
AI前线
0+阅读 · 2021年12月24日
Python 的十大特性
InfoQ
0+阅读 · 2021年12月21日
2021 年 Python 的好与坏
InfoQ
2+阅读 · 2021年11月16日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
相关基金
面向异构数据库的查询语言设计及其基础理论研究
国家自然科学基金
1+阅读 · 2015年12月31日
蒲黄生行熟止的物质基础及质量评价
国家自然科学基金
0+阅读 · 2014年12月31日
面向动态语言程序的缺陷理解研究
国家自然科学基金
0+阅读 · 2014年12月31日
基于中子反射技术研究HMX炸药晶体和氟橡胶粘结剂的界面结构
国家自然科学基金
0+阅读 · 2013年12月31日
声学相干完美吸收体
国家自然科学基金
0+阅读 · 2012年12月31日
低维二氧化铈/石墨烯异质纳米结构的合成与特性研究
国家自然科学基金
0+阅读 · 2012年12月31日
针对Android系统的Java/C++多语言接口建模与分析
国家自然科学基金
0+阅读 · 2012年12月31日
外源添加物质对百子莲胚性愈伤组织超低温保存逆境应答的调控机理
国家自然科学基金
0+阅读 · 2011年12月31日
掺杂PST与BZNT异质多层复合薄膜的介电调谐性能研究
国家自然科学基金
0+阅读 · 2009年12月31日
缺中子核99,101Pd的带终结特性研究
国家自然科学基金
0+阅读 · 2008年12月31日
相关论文
PEER: A Comprehensive and Multi-Task Benchmark for Protein Sequence Understanding
Arxiv
0+阅读 · 2022年9月19日
Joint Language Semantic and Structure Embedding for Knowledge Graph Completion
Arxiv
0+阅读 · 2022年9月19日
PyTorch Geometric Signed Directed: A Software Package on Graph Neural Networks for Signed and Directed Graphs
Arxiv
0+阅读 · 2022年9月18日
Estimation of Optical Aberrations in 3D Microscopic Bioimages
Arxiv
0+阅读 · 2022年9月16日
Federated Coordinate Descent for Privacy-Preserving Multiparty Linear Regression
Arxiv
0+阅读 · 2022年9月16日
Visual Recognition with Deep Nearest Centroids
Arxiv
0+阅读 · 2022年9月15日
From Books to Knowledge Graphs
Arxiv
0+阅读 · 2022年9月15日
The Complexity Classes of Hamming Distance Recoverable Robust Problems
Arxiv
0+阅读 · 2022年9月14日
Multi-view Contrastive Graph Clustering
Arxiv
13+阅读 · 2021年10月22日
Variational Knowledge Graph Reasoning
Arxiv
15+阅读 · 2018年4月5日
大家都在搜
palantir
洛克菲勒
大规模语言模型
CMU博士论文
技术报告
自主可控
王强
SMT
EMC
GANLab 将GA
Top
提示
微信扫码
咨询专知VIP会员与技术项目合作
(加微信请备注: "专知")
微信扫码咨询专知VIP会员
Top