Ruby 跟 Python 本质上不同

标签: ruby python 本质 | 发表时间:2011-06-19 06:35 | 作者:(author unknown) Elims
出处:http://simple-is-better.com/

# 08 年的老文,但仍值得重读

对岸高手孟岩最近写了一篇「 Ruby 1.9不会杀死Python 」,里面提到Ruby 1.9一出,仿佛Ruby已经迈向完全体,所有的缺点都已经消失了。仿佛已经要一统武林

有人认为,这下子不得了了,Ruby要称霸动态语言了。你想想,Ruby已经几乎拥有了所有梦幻般的语言特性,神奇的动态能力,强大的支持库,内置的跟Perl可以比肩的正则表达式,Smalltalk级别的纯而又纯的面向对象特征,简洁明快的风格,跨语言整合也非常容易,唯一的缺点就是速度慢。现在连这个缺点都被弥补了,Ruby还能挡得住吗?其他的动态语言都该歇菜了。

然后他又提到一个很有趣的分类,Ruby是魔幻语言,Python是简约语言。Robbin老大也出来讲了 Ruby为什么会受程序员的欢迎?。一整篇看下来,实在是很过瘾。

简约语言

简约语言是什么呢?大致上是C、PHP、Python和Lua,C# ,Java。他的大概意含可以由Python 的中心思想EIBTI 可以略知一二

Explicit is better than implicit.

看不懂的话,用更白话的方式来解释,The Zen of Python 里面有提到

There should be one-- and preferably only one --obvious way to do it.

也就是,Python 有意的限制语言的表示方式,使得不好的coding 习惯都不能Compile 过,有意的强制使用者养成良好的习惯。

这虽然极端了点,但也不超乎其他简约语言的中心思想。简约语言不关心语言的表述方式,他们在乎的是「解决问题」。以工程来看,简约语言在大专案里面的协同工作上面较为吃香。

魔幻语言

我很喜欢这个词。魔幻语言的代表有C++、Perl、Javascript和Ruby。中心思想可以由Perl 的TMTOWTDI 来表示

There's More Than One Way To Do It.

魔幻语言的拥护者思考的东西,这位孟岩老大也描写的很传神

他们写的代码是一种谜语般的艺术,出谜语和猜谜语的人们都能从中获得巨大的精神满足

但是,请不要轻易的把Ruby归于「华而不实」这一派。Robbin老大也在 这里 讲到

C++的魔幻语法会导致代码的可读性变差,而Ruby的魔幻语法会导致代码的可读性大大提高。

不论是matz本人,还是整个Ruby社区,Rails社区诸多开源项目的作者,抑或整个Ruby和Rails开发者社区,在一个编程哲学问题上是高度统一的,这就是:

强调程序员的快乐编程,追求人性化编程,在代码的可读性上面有偏执的追求,拒绝难以阅读的代码和难用的API。也就是所谓的coding for fun!

Ruby 奇妙的手法,以及DSL 的技巧,都是为了达到跟Python 同样的Promise Land ,那就是「code 可读性」。只是两者作法不同而已。

两者的不同

两者最大的不同是在「 开发者的审美观以及开发风格 」上。不是语言的不同,是使用者个性上的不同。

回到开头的话题,Ruby是一个典型的魔幻语言,而Python则是简约派的代表。两个语言的支持人群在审美观念和开发风格方面差距非常大。初学Ruby和Python的人,都会感受到一种欣喜和兴奋,但是原因却不太一样。Ruby的学习者会惊喜于很多新的表达方式,比如:attr_accessor ​​之类的魔幻特性,而Python学习者则会惊喜于实现具体功能的简洁性。可以说从一开始他们追求的就是不同的东西。随着学习的深入,Python开发者当然也会发现Python中的不少深入的特性,不过却并不倾向于滥用它们。长次以往,Python人群对任何语言的魔幻面都会产生一种厌恶感。我认识的一个Django开发者,就明确表示,就算RoR比Django开发效率高一点,也绝不使用Ruby,因为Ruby这个语言充满了“不必要的小聪明”。

高手果然是高手,好露骨的讲法。Python 人对于「语言的魔幻面」,或是你要称为「奇技淫巧」有种本质上的厌恶感,很多Ruby 人引以为傲的东西,都会被视为「恶魔」。尽管Python 也可以玩出些好玩的把戏,但是他们的中心思想让他们「选择不去作」。

而Ruby 正如上面所说得,Ruby 人会被鼓励使用「语言的魔幻面」,并且从中获得相当的精神上的乐趣。但是跟「华而不实」最大的不同,是在于Ruby 是利用语言的炫技,达到超乎想像的开发效率跟可读性。最后,伟大的杰作诞生了,Ruby on Rails 用本身的「魔幻面」,反而达成了比PHP 这种Web 专用的简约语言的更高的可读性。

本质上的不同?还是人的不同?

人的tone 不同,才是真正的问题所在。或许双子座的我,永远不会欣赏Python :p

奇想

不知道为什么,写这篇文章的时候,总是把魔幻语言想成魔法师,简约语言想成战士。所以脑中一直围绕着Ruby 是魔法技能点数10 的魔法师,前面还有一个血防加到满的战士在前面罩着(Java),然后组队一

# 来源:LIGHTY ROR


在微博上关注: 新浪, 腾讯   投稿

最新招聘

更多>>

相关 [ruby python 本质] 推荐:

Ruby 跟 Python 本质上不同

- Elims - python.cn(jobs, news)
# 08 年的老文,但仍值得重读. 对岸高手孟岩最近写了一篇「 Ruby 1.9不会杀死Python 」,里面提到Ruby 1.9一出,仿佛Ruby已经迈向完全体,所有的缺点都已经消失了. 有人认为,这下子不得了了,Ruby要称霸动态语言了. 你想想,Ruby已经几乎拥有了所有梦幻般的语言特性,神奇的动态能力,强大的支持库,内置的跟Perl可以比肩的正则表达式,Smalltalk级别的纯而又纯的面向对象特征,简洁明快的风格,跨语言整合也非常容易,唯一的缺点就是速度慢.

我的PHP,Python和Ruby之路

- heely - robbin的自言自语
因为看到一篇讨论PHP,Python和Ruby的编程语言讨论贴,就说说我的PHP,Python和Ruby之路吧:. 我2000-2001年用PHP用了两年,那还是第一次互联网泡沫时期,到2001年后期,Servlet/JSP流行,然后我就发现:你说用PHP写的东西,都会被人鄙视. 当时我们其实也用Java了,只不过用Java写后端的消息队列.

PHP, Perl, Python, Ruby 語法對照表

- Hming - Tsung's Blog
一個簡單又實用的頁面, 此頁將 PHP, Perl, Python, Ruby 的語法 做成 對照表.. 詳細可見: Scripting Languages: PHP, Perl, Python, Ruby - Hyperpolyglot.

每个程序员都应该学习使用Python或Ruby

- Kings - 开源中国社区最新新闻
本文是从 Why every programmer should learn Python or Ruby 这篇文章翻译而来. 如 果你是个学生,你应该会C,C++和Java. 还会一些VB,或C#/.NET. 多少你还可能开发过一些Web网页,你知道一些HTML,CSS和 JavaScript知识.

【外刊IT评论网】每个程序员都应该学习使用Python或Ruby

- 悟怡 - 外刊IT评论网
本文是从 Why every programmer should learn Python or Ruby 这篇文章翻译而来. 如果你是个学生,你应该会C,C++和Java. 还会一些VB,或C#/.NET. 多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaScript知识. 总体上说,我们很难发现会有学生显露出掌握超出这几种语言范围外的语言的才能.

了解Ruby Gems

- Jacky - Reborn
所谓RubyGem,就是一个个软件包,通常被简称为“gem”. 通常一个Gem里包含一个Ruby应用程序或者一个Ruby程序库. 而RubyGems软件本身允许用户在自己的系统中轻松地下载、安装、操作Gems. 以下两个网址无论如何都应该放到自己的收藏夹里:. 最著名的Gem之一,当然是Rails——当我们安装Rails的时候,使用的命令行是:.

开始Ruby

- TheLover_Z - 博客园-首页原创精华区
我的上一篇为什么要学动态语言和大家分享了一些心得,如果有人因此想试试动态语言,哪怕是一点点,我也很高兴,毕竟自己写的东西还有点意义. 俗话说,万事开头难,但是开始用动态语言一点也不难,还是以ruby为例. 1.首先来看看这个网站, http://tryruby.org/. 顾名思义,这个网站的目的就是让大家试试Ruby,我觉得做的比较好的就是它有一步步的教程,只要照着它的提示一步步往下,就能领略Ruby的魅力.

Ruby On Rails 4 hello world,Ruby On Rails上手

- - CSDN博客Web前端推荐文章
有机会再试一试Rails了,只是原来接触的是2,现在已然变成了4,似乎现在的安装比原来会快些. 似乎这就是当前的最新版本. 似乎这就是诸如Django、Rails这类对于轻量级网站的数据库要求. 其他可以看情况安装,如openSUSE. 可以直接用rails生成. 这样的话打开  http://localhost:3000 就可以看到,Rails的欢迎界面Welcome aboard,有点类似于Django-CMS的小马哥~~.