Ruby还是Python?[关闭]


24

这个问题是非常主观和开放的。甚至听起来我应该自己研究并做出自己的决定。但是我想把它放在那里,并从别人那里得到一些想法。

长话短说-我对老鼠赛跑感到精疲力尽,今年参加了自费休假。这主要是为了摆脱公司的磨练和四处旅行,但是我也想尝试新技术并做一些自学项目,以跟上编程的速度,而且-我只是喜欢与他人打交道。编程,没有压力!

事情是这样的:我是一生的C / C ++ / Java程序员。自从我在整个编程生涯中一直使用这种语言家族以来,我有点bracket不休。因此,我想学习与该组在语法上没有紧密联系的语言。我基本上想寻找的是一种相对通用的语言,易于学习,具有一些不同于C ++ / Java的新概念,并且拥有一个良好的社区。第二个考虑因素是它具有良好的Web开发框架。第三,要考虑的是它并不完全是学术性的(请阅读:使用它在现实世界中有很多工作)。

我将其范围缩小到了Ruby或Python。我对Ruby的印象是它非常面向Web,它的唯一真正应用是作为服务器端脚本语言来做Web东西(主要是Ruby on Rails)。我对Python几乎没有任何印象,只是它似乎具有热情的支持者,并且似乎是一种相当通用的语言。

TL; DR并尽可能简洁地说:对于C ++ / Java的人来说,学习哪种新的编程观点会更好?哪个更开放,更通用并适用于更广泛的应用程序?目前,我倾向于Ruby,但在某种程度上来说,我担心它似乎只不过是服务器端网络语言而已。


“对于Python,我不太确定”?什么啊 这有什么关系?
S.Lott

您可以在StackOverflow上找到有关Ruby vs Python的更多信息。令我惊讶的是,伦纳特本人尚未发表评论。regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/...
招聘

@ S.Lott:抱歉,目前还不清楚。只是意味着我对Python尚未有非常详细的印象。除了用途广泛且拥有强大的粉丝群。
鲍比桌,

9
Perl,当然。
Bruce Alderman

这属于“哪种技术更好?” 问题类别,根据常见问题解答被认为是题外话。
克里斯·

Answers:


35

不要让Ruby成为常见的说法主要是因为Rails(Web应用程序框架)欺骗了您。它是一种通用的编程语言,您可以将其用于可以使用任何其他语言的任何东西。

玩转Ruby,看看您是否爱上它。你要么愿意,要么不会。有点像《感恩之死》的音乐;您要么爱它,要么受不了它。

露比会伸张你的大脑。从许多方面来看,它离C ++ / Java都远。我来自C和C#的背景,我发现Ruby的动态性和元编程能力令人陶醉。

话虽这么说,Python是一种绝对出色的语言,但它会让您大吃一惊。

为什么不同时学习呢?我经常使用这两种方法:Ruby用于Rails编程,而Python用于Google AppEngine。


2
+1为死者参考;;)
cschol

1
谢谢。我将首先使用Ruby,看看我是否会爱上它。:)
Bobby Tables

8
我参加聚会有点晚了,但是trypython.orgtryruby.org是尝试这些语言的好网站。
米歇尔·提里(Michelle Tilley)

17

诚然,我几乎没有使用过Ruby,但这是我对Python的印象:

  • 当我编写用于编写函数的伪代码时,我发现我实际上写的 Python,有时要真正编写代码,几乎不需要重写。您甚至可以一起跳过伪代码,而直接在Python中表达您的想法
  • 当我需要执行看似常见的任务时,Python往往在其标准库中内置了必要的功能(从高层次上来说)。例如,在我想打开文件并逐行扫描时,答案很简单,例如“对于myFile中的行:dostuff(lines)”。我相信他们将这种方法称为“包括电池”方法,它与我使用的其他一些日常操作更加随意的语言不同

这两件事对我很重要。


我认为这些正是我偏爱Ruby的原因。Ruby面向对象更多,关键字更少。例如,在Ruby“ [1,3,5] .length()”和“ [1..10] .each()...”与Python“ len([1,3,5])”和“ for i in range(1,11)“
LennyProgrammers 2011年

6
@Lenny-Ruby实际上有更多关键字:krijnhoetmer.nl/stuff/ruby/keywordszetcode.com/tutorials/pythontutorial/keywords-对于Python 2.6,这是Ruby 38的31个关键字。而且,“更多OO”似乎是在这里相当主观地使用它,因为在两种语言中都适用“一切都是对象”(甚至更确切地说在Python 3.x中,因为所有子类都来自object)。另外,len(obj)是调用的快捷方式obj.__len__(),并且for i in range还抽象了操作生成器对象的操作详细信息。我认为/等效但不同/更准确。
韦恩·沃纳

我有一种感觉,Lenny表示您在典型的语句中使用较少的关键字,例如'for i in range(1,11)有3个关键字(for,in,range)。当然,有时候更多的单词会更好。
安德鲁M

5
范围不是关键字,而是函数
Kugel

9

如果您要整整一年放假,那么我建议您花一两个星期学习一次,然后自己决定自己最喜欢哪个。我对两者都有经验,我认为它们都很有能力,因此您只需要确定自己喜欢哪一个即可。


+1,两者似乎都很容易。另一方面,Clojure ...很有趣,但也更难。
Job

7

IMO,您应该使用Python。原因是它用途更广,几乎可以用于所有内容。正如您所注意到的,由于Ruby的Web框架,它在Web开发中使用更多。与Python不同,Ruby不适合用于GUI桌面应用程序,数字,统计或图像处理程序的开发。


1
您能指出是什么使Ruby“不适用于gui桌面应用程序,数字,统计或图像处理程序的开发”吗?当我在2001/2002年用Ruby编程时,我很高兴做所有这些事情。
LennyProgrammers

7
@ Lenny222。在Ruby中,没有numpy,scipy,sympy,PIL,matplotlib之类的库。无论它们是什么数字库,它们都远远落后于Python。与用于gui应用程序开发的文档和库类似。
Marcin

1
您说Python更通用,然后指出原因。我会告诉你,缺少一个好的库在Ruby中做一些事情并不容易,但这并不意味着Ruby本身在某种程度上没有通用性。
Twisol 2011年

@Twisol正是这样的原因:Python非常简单(且一致)是为什么它如此通用以及为什么有这么多有用的库(IMO)的原因。
Nadir Sampaoli 2013年

6

Ruby的历史要比rails久了很多,所以让我把它发布到世界各地Ruby != web,尽管它做得很好。它可以并且可以做很多与系统相关的事情。似乎整个Rails框架吞没了Ruby世界的其余部分。是的,我是Ruby的粉丝。

另一方面,Python有很多用途,它已与Linux上的几乎所有内容集成在一起。这告诉我,将其合并到较大的程序中(与Ruby,Java等相比)可能相当容易。有大量用Python编写的Ubuntu Linux基础结构,这告诉我Python在系统编程中具有应用程序。我听说它的Web框架真的很棒,我还没玩过。

也就是说,Ruby和Python都是功能相同的语言,您会发现它们使您的生活变得更加轻松。Ruby在其社区中拥有更多的网络负责人,但这并不是整个社区的全部。我也在许多基础设施项目中使用过它。


5

这是“ 理想编程语言学习顺序”类似问题的特例。您所需要的不是“一种完美的语言”,您需要多种语言范例和多种学习经验来打开您的思维。

我知道您说过将范围缩小到Ruby和Python,但我建议您从Racket(一种流行的Scheme)开始。它是为学习而构建的,它将很好地将您的大脑伸向函数式编程,交互式编程和动态键入。没有工作(几乎为零),一个很小的,零散的社区,也没有主要的Web框架,这就是为什么您不会陷入困境的原因;炒一会儿然后继续前进。

其次,您想学习Ruby或Python从事可能的工作。我建议你两者都学。尽管有差异,但学习两者中的第二个要比第一个容易得多。至于可能的工作,我的直觉是由于Rails,还有更多的Ruby工作,但是我知道在这一领域也有一些Zope的工作。至少要投资其中之一,但也要签出另一笔至少足够长的时间来建造一些小东西。

老实说,您可能会在其中任何一个工作的第一周学到的东西比您自己学到的要多。他们都有庞大的生态系统,其中包含许多工具,文化和习语。

tl; dr:和Scheme。


1
+1我所看到的只是“一种完美的语言”和“方案”。:)
Dietbuddha 2011年

1

我也来自Java / C ++背景,并且在过去的4个月中一直在使用Django框架进行Python编程,这的确很棒。每当我有问题时,都可以在现有职位上找到解释。由于我还没有使用过Ruby,所以我不能担保它,但是一定有时间,我一定会尝试的。

我个人喜欢如何使用Python真正快速地完成工作,因为它内置了许多有用的功能。


1

ID对Ruby进行投票。我来自.Net和C#背景,首先尝试使用Python,但是Ruby吸引了我=)
我在其中编写了很多系统内容,并且有一些Rails开发人员。它在系统编程中具有Python的功能,并且在网络上很棒。对我来说,感觉更优美。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.