我是一名C++开发人员,慢慢进入Web开发.我很喜欢LISP,但不喜欢AllegroCL和LISP可用的网络框架.我正在寻找更多的自由和能力,在语言水平上做很酷的黑客.我不认为标签是对自然的犯罪.
哪一个更接近LISP:Python还是Ruby?
我似乎无法从Python和Ruby中进行选择:它们看起来非常相似,但显然Ruby更具功能性和面向对象,这些都是好事,而Python更像是Perl:一种简单的脚本语言.我有正确的印象吗?
PS - 这可能看起来像是一个火焰诱饵,但事实并非如此,我只是试着不要从OCD疯狂地从RoR切换到Python/Django并返回.
彼得·诺维格(Peter Norvig)是一位着名而伟大的人,他转而使用Python.他为Lisp程序员编写了Python文章,您可能会对其功能的详细比较感兴趣.
Python看起来像可执行的伪代码.它很容易上手,而且经常使用你的直觉就可以了.Python允许您轻松地将您的想法放入代码中.
现在,对于Web开发,Python似乎比Ruby更分散,有大量的Python Web框架可用.不过,一般来说,Python是一种非常好用且有用的语言.由于Ruby和Python的壁龛重叠,我同意Kiv的观点,部分是个人品味的问题,你选择哪一个.
我会选择Ruby.它有各种各样的元编程和鸭子打孔黑客,使它很容易扩展.像块一样的功能一开始可能看起来不多,但如果你正确使用它们,它们会产生一些非常干净的语法.如果搞砸了,打开类可以调试地狱,但如果你是一个负责任的程序员,你可以2.days.from_now
很容易地做一些事情(例如来自Rails的例子)(我认为Python也可以做到这一点,但有点痛苦)
PS:查看"为什么Ruby是可接受的LISP".
魔鬼倡导者:谁在乎?
它们都是良好的系统,拥有良好的Web框架和活跃的开发人员社区的生态系统.我猜你正在根据错误的标准制定你的决定.这个问题听起来像是在担心你是否会因为选择一个而遇到实施问题或其他困难而烦恼. 别.
这与Java/.Net决策类似.在特定情况下可能有令人信服的理由,但建筑师对平台的熟悉程度等软性因素是项目成功的更强预测因素.
我承认我使用Python的次数远远超过Ruby,但我不会说除了熟悉之外,我对两者之间有很大的偏好.自1998年以来我一直使用Python,我喜欢Ruby的Smalltalkish-ness,因为我在15年前曾简单地使用过Smalltalk.他们都做了类似的事情略有不同.
我想从Ruby(或Smalltalk)的某些功能,但Python不会那样工作.相反,它有其他功能,语言习语与Ruby或Smalltalk略有不同. 一些在的其他 海报已经挂出到比较两篇文章.
如果您担心Rails与Django,那表明您正在寻找一个Web应用程序平台.两种语言都有良好的工具支持和活跃的开发人员社区.Django似乎是Python Web框架混战的赢家,而Rails似乎正处于"跨越鸿沟"并将Ruby带入其中的过程中.两者都是相当成熟的系统,并且已被证明可以很好地用于可观的交通量.
ProTip:宗教战争的存在是一个很好的指标,双方都没有引人注目的争论.
所以,我打算扮演魔鬼的拥护者,并说担心这个选择毫无意义.这些语言相互之间有优点和缺点,但在一般情况下没有什么可以被视为引人注目的.对一个平台或另一个平台的详细优点感到烦恼,就是错误地制定了这个决定.
选一个并使用它.您将能够有效地构建系统.
作为"Rubyist",我同意Kiv.这两种语言在编程范例方面都给予了很大的回旋余地,但也有好处/缺点.我认为你做出的任何妥协都是关于你自己的编程风格和品味的.
就个人而言,我认为Ruby可以比Python更像伪代码.首先,Python具有活动的空白,虽然在许多人的眼中优雅,但在编写伪代码时并不倾向于进入等式.此外,Ruby的语法非常灵活.这种灵活性导致许多可能混淆的怪癖,但也允许代码具有相当的表现力和漂亮的外观.
最后,我真的说Ruby对我来说有更多的Perl-ish.这部分是因为我对它更加满意,所以我可以很快地破解脚本.很多Ruby的语法都是从Perl借用的,我没有看到太多感觉相似的Python代码(尽管我对Python几乎没有经验).
根据您想要采用的Web编程方法,我认为每种语言中可用的Web框架类型也许也是决定因素.我会说他们两个都试试.你可以在一个下午获得每个人的工作知识,虽然你不会写出令人敬畏的Ruby或Python,但你可以为每个人建立一种感觉,并决定你更喜欢哪一个.
更新:我认为你的问题实际上应该是两个单独的讨论:一个用Ruby,一个用Python.比较不太重要,因为你开始讨论差异的优点,而不是哪种语言对你更有效.如果您对Ruby有疑问,我会非常乐意尽我所能回答.
Ruby和Python都与Lisp传统的不可变数据,程序数据和宏相距甚远.但Ruby几乎是Smalltalk的克隆版(我希望它会像Smalltalk一样增长,因为Perlish cruft已被弃用),Smalltalk就像Lisp一样,是一种将一个想法变为极端的语言.基于你希望在语言层面上做很酷的黑客,我会选择Ruby,因为它继承了Smalltalk的很多元编程思维,而且这种思维方式与Lisp传统有关.
Alex Martelli 对这个主题进行了很好的分析.它现在有点过时了,但我同意它的基本要点: Python和Ruby是实现相同事物的两种不同方式.当然,你可以在Ruby中做一些你不能用Python做的事情.确保Python的语法(可以说)比Ruby更好.但是当你深入了解它时,没有太多客观,科学的理由偏爱另一个.
你会听到的一个常见的事情是:平台比语言更重要,Python有一个比Ruby更好的平台(这个论点有两种方式,所以不要投票我,所有你的rubyists).而且有一些道理.不幸的是,它并不是很相关.如果您不喜欢这两种语言的平台,那么Java和.Net都有实现,所以如果您对该平台有疑虑,可以使用它们.