代码之家  ›  专栏  ›  技术社区  ›  mannicken

请为非常喜欢LISP的人提供Ruby vs Python的建议

  •  20
  • mannicken  · 技术社区  · 17 年前

    我是C++开发人员,慢慢进入Web开发。我非常喜欢LISP,但不喜欢LISP可用的AllegroCL和web框架。我正在寻找更多的自由和能力,在语言层面上做很酷的黑客。我不认为标签是对自然的犯罪。

    Python和Ruby哪个更接近LISP?

    我似乎无法从Python和Ruby中进行选择:它们看起来非常相似,但Ruby显然更具功能性和面向对象性,这是好事,而Python更像Perl:一种简单的脚本语言。我的印象对吗?

    PS-这可能看起来像是一个火焰诱饵,但它不是真的,我只是想试着不要因为从RoR切换到Python/Django再切换回来而发疯。

    12 回复  |  直到 15 年前
        1
  •  31
  •   namin    17 年前

    Peter Norvig , a famous and great lisper ,转换为Python。他写了这篇文章 Python for Lisp Programmers

    Python看起来像可执行的伪代码。这很容易学会,经常运用你的直觉就会奏效。Python允许您轻松地将想法转化为代码。

    现在,对于web开发,Python似乎比Ruby更分散,因为有太多的pythonweb框架可用。不过,总的来说,Python是一种非常好用的语言。由于Ruby和Python的细分市场重叠,我同意Kiv的观点,选择哪一个在一定程度上取决于个人品味。

        2
  •  26
  •   jfs    17 年前

    我会和鲁比一起去。它有各种各样的元编程和鸭子出击的技巧,使得它很容易扩展。像块这样的特性一开始可能看起来不太像,但如果您正确使用它们,它们会产生一些非常干净的语法。如果你把开放类搞砸了,它们可能会被调试得一团糟,但如果你是一个负责任的程序员,你可以这样做 2.days.from_now (来自Rails的示例)非常简单(我认为Python也可以做到这一点,但需要付出更多的努力)

    PS:退房 "Why Ruby is an acceptable LISP" .

        3
  •  17
  •   Community Mohan Dere    9 年前

    它们都是很好的系统,并且有一个由良好的web框架和活跃的开发人员社区组成的生态系统。我猜你的决定是基于错误的标准。这个问题听起来像是你在担心选择其中一个是否会遇到实现问题或其他困难。 不要。

    我承认我使用Python的次数比使用Ruby的次数多得多,但我不会说除了熟悉之外,我对这两种语言有什么特别的偏好。大约从1998年起,我就断断续续地使用Python,我喜欢Ruby的小巧玲珑,就像15年前我简单地使用Smalltalk一样。他们做相似的事情略有不同。

    我想要Ruby(或者Smalltalk)的某些特性,但是Python不能这样工作。相反,它还具有其他功能,语言习惯与Ruby或Smalltalk略有不同。 Several 的 other posters 链接到比较两者的文章。

    如果您担心Rails与Django的对比,这表明您正在寻找一个web应用程序平台。这两种语言都有良好的工具支持和活跃的开发人员社区。Django似乎是PythonWeb框架混战的赢家,Rails似乎正在“跨越鸿沟”并带来Ruby。两者都是相当成熟的系统,并已被证明在可观的交通量下运行良好。

    宗教战争的存在很好地表明,双方都没有令人信服的论据。

    所以,我要扮演魔鬼代言人的角色,说担心选择是没有意义的。这两种语言彼此之间有优缺点,但在一般情况下没有什么可以被视为具有说服力的。对一个或另一个平台的详细优点感到焦虑是错误的决策框架。

    选择一个并使用它。您将能够使用任何一种方法有效地构建系统。

        4
  •  12
  •   nakajima    17 年前

    作为一个“红宝石主义者”,我同意基辅的观点。这两种语言在编程范例方面都有很大的回旋余地,但它们都有优点/缺点。我认为,无论采用哪种方式,您做出的妥协都与您自己的编程风格和品味有关。

    就我个人而言,我认为Ruby读起来更像是伪代码,而不是Python。首先,Python有活动空格,虽然在许多人看来它很优雅,但在编写伪代码时,它并不倾向于进入等式。另外,Ruby的语法非常灵活。这种灵活性导致了很多可能会让人困惑的怪癖,但也允许代码表现力强、外观美观。

    最后,我真的想说Ruby对我来说更像Perl。这在一定程度上是因为我对它更熟悉,所以我可以相当快地写出脚本。不过,Ruby的很多语法都是从Perl中借来的,我还没有看到多少感觉类似的Python代码(不过,我对Python的经验也很少)。

    根据您希望采用的web编程方法,我认为每种语言中可用的web框架类型可能也是决定的一个因素。我想两个都试试。您可以在一个下午内了解到它们中的每一个,虽然您不会编写非常棒的Ruby或Python,但您可以为它们建立一种感觉,并决定您更喜欢哪一个。

    更新: 我认为你的问题实际上应该是两个独立的讨论:一个是Ruby,一个是Python。比较就不那么重要了,因为你开始争论差异的优点,而不是哪种语言更适合你。如果你有关于Ruby的问题,我非常乐意尽我所能回答。

        5
  •  8
  •   Norman Ramsey    17 年前

    Ruby和Python都与Lisp的不可变数据、作为数据的程序和宏的传统相去甚远。但是Ruby几乎是Smalltalk的克隆(我希望随着Perlish cruft被弃用,它会变得更像Smalltalk),Smalltalk和Lisp一样,是一种将一个想法推向极端的语言。基于你的愿望去做 我会选择Ruby,因为它继承了Smalltalk的许多元编程思想,以及这种思想 连接到口齿不清的传统。

        6
  •  5
  •   Jason Baker    17 年前

    亚历克斯·马泰利给出了一个 good analysis of the subject . 现在有点过时了,但我同意它的基本要点: Python和Ruby是实现同一事物的两种不同方式 . 当然,在Ruby中可以做一些在Python中做不到的事情。当然Python的语法(可以说)比Ruby好。但是当你认真考虑的时候,没有很多客观的、科学的理由去选择一个而不是另一个。

    你会听到的一个普遍现象是:平台比语言更重要,Python比Ruby有更好的平台(这个论点是双向的,所以不要否决我,所有Ruby主义者)。这是有道理的。不幸的是,这不是很相关。如果您不喜欢这两种语言的平台,Java和.Net中都有这两种语言的实现,因此如果您对平台有顾虑,可以使用它们。

        7
  •  3
  •   Kiv    17 年前

    我还推荐作者的文章 Peter Norvig 那是纳明贴的。如果您想了解Python中的函数式编程,请查看 functools

    Python也有很大的空间可供破解;私有变量是按约定而非强制的,因此如果您愿意,可以随意查看对象的内部状态。不过,这通常是不必要的。

    Ruby和Python都非常面向对象,支持函数式编程;我不会说任何一个都明显优于你的项目;这部分是个人品味的问题。

        8
  •  3
  •   tzot    17 年前

    我是蟒蛇学家;然而,基于您的需求,特别是“语言级别的酷黑客”,我建议您使用Ruby。Ruby在Perl方面更加灵活,您可以进行大量的黑客攻击;Python的目标是 ,这是一件非常好的事情,一般来说,语言黑客是有点不受欢迎的。Ruby的基本类型可以用原型语言通常允许的黑客方式进行修改,而Python的基本类型更适合子类化。

    顺便说一句,我想补充一点小的修正:Ruby和Python都是非常非常面向对象的,它们都不打算像Perl那样用于快速而肮脏的脚本。在这两者中,Ruby在语法上比Python更类似于Perl。

        9
  •  1
  •   Adriano Varoli Piazza    17 年前

        10
  •  0
  •   tzot    17 年前

    我是一个红宝石爱好者,选择这种语言的标准非常相似。Python是一种很好的语言,我也很喜欢使用它,但我认为Ruby在给程序员带来的自由度方面更具Lispy风格。Python似乎把自己的观点强加了一点(这可能是一件好事,但不是根据我们这里的标准)。

    Python当然不比Perlish更完美Ruby本质上是一个Smalltalk/Perl mashup(它的一些不太常用的特性是直接从Perl中提取出来的),而Python与这两个特性只有很遥远的联系。

        11
  •  0
  •   Dustin Getz sunsations    17 年前