我是一名C ++开发人员,正在慢慢进入Web开发阶段。我很喜欢LISP,但不喜欢AllegroCL和LISP可用的网络框架。我正在寻找更多的自由和能力,在语言水平上做很酷的黑客。我不认为标签是对自然的犯罪。
哪一个更接近LISP:Python还是Ruby?
我似乎无法从Python和Ruby中进行选择:它们看起来非常相似,但显然Ruby更具功能性和面向对象,这些都是好事,而Python更像是Perl:一种简单的脚本语言。我有正确的印象吗?
PS - 这可能看起来像是一个火焰诱饵,但事实并非如此,我只是试着不要从OCD疯狂地从RoR切换到Python / Django并回来。答案 0 :(得分:31)
Peter Norvig,a famous and great lisper,转换为Python。他撰写了文章Python for Lisp Programmers,您可能会对其详细的功能比较感兴趣。
Python看起来像可执行的伪代码。这很容易上手,而且经常使用你的直觉就可以了。 Python允许您轻松地将您的想法放入代码中。
现在,对于Web开发,Python似乎比Ruby更分散,有大量的Python Web框架可供使用。不过,一般来说,Python是一种非常好用且有用的语言。由于Ruby和Python的利基重叠,我同意Kiv的观点,部分是个人品味问题,你选择的是什么。
答案 1 :(得分:25)
我会选择Ruby。它有各种各样的元编程和鸭子打孔黑客,使它很容易扩展。像块一样的功能一开始可能看起来不多,但如果你正确使用它们,它们会产生一些非常干净的语法。如果搞砸了,打开类可以调试地狱,但如果你是一个负责任的程序员,你可以很容易地做2.days.from_now
(来自Rails的例子)这样的事情(Python也可以这样做,我想,但是更痛苦)
答案 2 :(得分:17)
魔鬼倡导者:谁在乎?
它们都是良好的系统,拥有良好的Web框架和活跃的开发人员社区的生态系统。我猜你正在根据错误的标准制定你的决定。这个问题听起来像是在担心你是否会因为选择一个而遇到实施问题或其他困难而烦恼。 不要。
这与Java / .Net决策类似。在特定情况下可能有令人信服的理由,但建筑师对平台的熟悉程度等软性因素可以更好地预测项目成功。
我承认我使用Python的次数远远超过Ruby,但我不会说除了熟悉之外,我对两者之间有很大的偏好。自1998年以来我一直使用Python,我喜欢Ruby的Smalltalkish-ness,因为我在15年前曾简单地使用过Smalltalk。他们都做的事情略有不同。
我想要Ruby(或Smalltalk)的某些功能,但Python不会那样工作。相反,它有其他功能,语言习语与Ruby或Smalltalk略有不同。 Several other的posters已链接到比较两者的文章。
如果您担心Rails与Django,那表明您正在寻找一个Web应用程序平台。两种语言都有良好的工具支持和活跃的开发人员社区。 Django似乎是Python Web框架混战的赢家,而Rails似乎正处于“跨越鸿沟”并将Ruby带入其中的过程中。两者都是相当成熟的系统,并且已被证明可以很好地适应可观的交通量。
ProTip:宗教战争的存在是一个很好的指标,双方都没有引人注目的争论。
所以,我打算扮演魔鬼的拥护者,并说担心这个选择毫无意义。这些语言相互之间有优点和缺点,但在一般情况下没有什么可以被视为引人注目的。对一个平台或另一个平台的详细优点感到烦恼,就是错误地制定了这个决定。
选择并使用它。您将能够有效地构建系统。
答案 3 :(得分:12)
作为“Rubyist”,我同意Kiv。这两种语言在编程范例方面都给予了很大的回旋余地,但也有好处/缺点。我认为你做出的任何妥协都是关于你自己的编程风格和品味的。
就个人而言,我认为Ruby可以读取伪代码而不是Python。首先,Python具有活动的空白,虽然在许多人的眼中是优雅的,但在编写伪代码时并不倾向于进入等式。此外,Ruby的语法非常灵活。这种灵活性会导致许多可能混淆的怪癖,但也会让代码看起来非常富有表现力和漂亮。
最后,我真的说Ruby对我有更多的感觉。这部分是因为我对它更加满意,所以我可以很快地破解脚本。很多Ruby的语法都是从Perl借来的,我没有看到太多感觉相似的Python代码(虽然我对Python几乎没有经验)。
根据您想要采用的Web编程方法,我认为每种语言中可用的Web框架类型也许也是决定因素。我会说他们两个都试试。你可以在一个下午获得每个人的工作知识,虽然你不会写出令人敬畏的Ruby或Python,但你可以为每个人建立一种感觉,并决定你更喜欢哪一个。
更新:我认为你的问题实际上应该是两个单独的讨论:一个用Ruby,一个用Python。比较不太重要,因为你开始讨论差异的优点,而不是哪种语言对你更有效。如果您对Ruby有疑问,我会非常乐意尽我所能回答。
答案 4 :(得分:8)
Ruby和Python与Lisp传统的不可变数据,程序数据和宏相当遥远。但Ruby几乎是Smalltalk的克隆版(我希望它会像Smalltalk一样增长,因为Perlish cruft已被弃用),Smalltalk就像Lisp一样,是一种将一个想法变为极端的语言。根据你在语言层面上做酷黑客的愿望,我会选择Ruby,因为它继承了Smalltalk的很多元编程思维,并且心态 连接对Lisp的传统。
答案 5 :(得分:5)
Alex Martelli给出good analysis of the subject。它现在有点过时了,但我同意它的基本要点: Python和Ruby是实现同样事情的两种不同方式。当然,你可以在Ruby中做一些你不能用Python做的事情。确保Python的语法(可以说)比Ruby更好。但是当你深入了解它时,没有太多客观,科学的理由偏爱另一个。
你会听到的一个常见的事情是:平台比语言更重要,Python有比Ruby更好的平台(这个论点有两种方式,所以不要投票我,所有你的rubyists)。而且有一些道理。不幸的是,它并不是很相关。如果您不喜欢这两种语言的平台,那么Java和.Net都有实现,所以如果您对平台有疑虑,可以使用它们。
答案 6 :(得分:3)
我还推荐namin发布的Peter Norvig文章。如果您想查看Python中的函数式编程,请查看标准库中的functools模块。
在Python中还有很多可以破解的空间;私有变量是按惯例而不是强制执行的,因此如果您愿意,可以在对象的内部状态中查找。但通常这不是必需的。
Ruby和Python都非常面向对象并支持函数式编程;我不会说任何一个明显优于你的项目;这部分是个人品味的问题。
答案 7 :(得分:3)
我是Pythonista;但是,根据您的要求,特别是“语言级别的酷酷”,我建议您使用Ruby。 Ruby在Perl方面更灵活,你可以做很多黑客攻击; Python的目标是可读性,这是一件非常好的事情,而且语言攻击通常有点不受欢迎。 Ruby的基本类型可以通过原型语言允许的hackish方式进行修改,而Python的基本类型更适合子类化。
顺便说一下,我会添加一个小修正:Ruby和Python都是非常非常面向对象的,并且它们都不打算用于Perl方式的快速和脏脚本。在这两者中,Ruby在语法上与Perl比Python更相似。
答案 8 :(得分:1)
如果您需要Unicode支持,请记住检查它的支持程度。 AFAIK,Python对Unicode的支持优于Ruby,特别是自Python 3.0以来。另一方面,Python 3仍然缺少一些流行的软件包和第三方库,因此可能会起作用。
答案 9 :(得分:0)
我是一名Rubyist,他根据非常相似的标准选择了这种语言。 Python是一门很好的语言,我也喜欢使用它,但我认为Ruby在程序员的自由度方面有点逊色。 Python似乎更多地强加了它的意见(这可能是件好事,但不符合我们的标准)。
Python肯定不是更多Perlish- Ruby本质上是一个Smalltalk / Perl mashup(它的一些不太常用的功能是直接从Perl中提取的),而Python只与它们有很大关系。
答案 10 :(得分:0)
为您的域选择最受欢迎的一个,以便您的工作获得最大的可见性。有些人可能会说web的ruby / rails,其他所有的python。选择一种语言只是因为它像lisp一样真的不适合专业人士。
答案 11 :(得分:0)
如果你喜欢lisp,我认为你会比ruby更好,但c ++让我想起了更多的python。我发布了一篇关于此主题的小帖子:http://hartator.wordpress.com/2011/06/12/ruby-vs-python-2011/