Python 程序员通过学习 Ruby 可以获得啥?
Posted
技术标签:
【中文标题】Python 程序员通过学习 Ruby 可以获得啥?【英文标题】:What will a Python programmer gain by learning Ruby?Python 程序员通过学习 Ruby 可以获得什么? 【发布时间】:2011-04-29 20:22:54 【问题描述】:我将在大学学习 Ruby、Haskell 和 Prolog。 现在,我想知道什么应该引起我的最大关注。我有半年的时间来做这三个,这意味着我需要决定一种语言来获得我的课外时间。其他的我将学习到足以在课程中做得很好。
我对 Haskell 和 Prolog 非常熟悉,知道学习它们会教给我一些非常重要的计算机科学概念。我不太确定红宝石。
通过一些教程和介绍,我得到的印象是 ruby 是很多浅层魔法。现在我在问 ruby 的人:我会得到什么,如果我决定不再使用它,在我花了半年的时间学习它之后,Python 还没有教给我。
这个问题并不是要为 ruby “提出理由”,尽管我意识到这是一个很有争议的潜在话题。
我现在使用 Python 来完成我所有的 CS 工作。我也用它做了很多函数式编程。我也已经非常熟悉面向对象的编程(Java、Python 和 C#)。正如我所说,我将使用 Prolog 进行一些逻辑编程。
那么 Ruby 还能教我什么呢?
进一步淡化问题:
我对写乐趣不感兴趣 程序或很酷的网络应用程序。 我只对电脑感兴趣 科学位。实现算法、数据结构等。 (虽然玩得开心肯定不会有什么坏处)
理想情况下,讨论的概念需要在大约 1000 小时内学会。
我对 Rails 一点也不感兴趣。在这种情况下,任何隐藏复杂性的技术都是有害的。
我忍不住这个问题是有争议的。但是这个问题的理想答案将提到一个非常重要的理论计算机科学概念,Ruby 帮助程序员使用和理解,以获得科学辅助知识。
我想出的候选人是元编程和多线程。我不知道 ruby 是否特别适合学习其中任何一个。
【问题讨论】:
对 Python 的新认识? :-) 有时我会怀念旧的“主观”标签。 @Pointy:这不是主观问题。你可以给出客观的答案,Ruby 的特性和范式是什么,这对 Pythonist 来说是新的。 对不起,我在之前的评论中写了“主观”而不是“客观”...... @Pointy:我努力在我的问题中列出一个客观的示例答案:深刻ruby 使用的重要 CS 概念。一个可能的答案可能是“ruby 是一种面向对象的语言”(不是一个好的语言)——这些属性没有争议。 哦,我个人认为你应该去学习 Erlang。 :-) 【参考方案1】:在大多数情况下,什么都没有。 Ruby 的大部分优点/缺点与 Python 相同,只是 Ruby 更“实用”。但是,如果您可以选择 Haskell,那么从 Haskell 中学到的函数式编程要比从 Ruby 中学到的多。
其次,如果您从理论计算机科学的角度来看待事物,那么 Ruby 远非首选语言。 Ruby 和它的许多库打破了许多标准的 OOP 教条,我相信许多学者会感到厌恶(这主要基于我与各种教授关于语言的聊天)。
从学术角度来看,我认为 Haskell 对你最有吸引力。如果您对 AI 或逻辑感兴趣,那么 Prolog 也是一个不错的选择。
【讨论】:
公平地说,如果他正在学习如何以“正确的方式”设计 OO,他可以自己完成。 Ruby 甚至为您提供了一个 BasicObject 来处理它,它几乎只包含了核心机制,例如在 Ruby 中成为一个对象意味着什么。设计完全取决于他。 API 只是装饰性的。【参考方案2】:Ruby 和 Python 在真正的 CS 方面非常相似,你的大脑会从中解脱出来——差异主要是表面上的和实用的。它们本质上相同的领域:
两种语言都是强动态类型的。 两者都支持多种范式,如函数式、面向对象等。 Ruby 有更多的绒毛/糖(类似于 Perl),而 Python 认为显式优于隐式。如果您对解释器、框架和测试感兴趣,可能值得battle 这两者,但从理论的角度来看,您将从 Haskell 或 Prolog 学到更多。 p>
【讨论】:
【参考方案3】:总体而言,以下两个问题的答案是相同的:
如果我已经了解 Python,我将从 Ruby 中学到什么? 如果我已经了解 Ruby,我将从 Python 中学到什么?两者的答案都是:
没什么重要的,只是做事方式略有不同。它们都是动态的面向对象语言。 Ruby 的功能性稍强一些,而 Python 有一些其他的东西很好(列表理解)。但总的来说,从一个到另一个,你不会学到很多通常适用于计算机科学的东西。
【讨论】:
【参考方案4】:我从事专业编程已有 20 多年,并且拥有许多不同的语言,从汇编和 C 到各种 SQL。当我需要做某事时,拥有这个范围给了我一个很好的工具箱。
每种语言都有其优势,了解它们是什么将有助于您在职业生涯中取得进步。任何语言都不是编程语言的终极目标,你知道的语言越多,你就能完成的越多,学习新的语言就越容易。
【讨论】:
这是一个非常好的答案,但与我的问题不太相关。一点也不。 :-) 20 多年后,您可能会有不同的感受。【参考方案5】:如果您想学习计算机科学知识,请学习 Scala。那是未来的计算机科学语言。看看你能不能学那个;)
否则,如果您想在学习后获得更多市场,Ruby 是一门很好的学习语言,因为它可能是之后最容易找到工作的。
算法和数据结构也都很好,但不要忘记架构和高级设计。这真的很重要——能够设计出不会因糟糕的设计而发臭的大型东西。在这 3 个选项中,Ruby 在这里可以向您展示很多内容。 Scala 也是如此。
所有的语言都可以做 CS 的东西,所以我看不出一种语言会有什么危害。当然,一种语言可能比另一种更优雅,但人们过去常常用 C 和 C++ 来表达 CS 级别的东西,所以真的,如果你只是想学习概念而不是成为语言流畅。
一旦您了解了一组概念,就更容易理解使用这些概念的任何语言。
【讨论】:
我已根据您的回答编辑了我的问题。您能否扩展您对程序架构和 Ruby 的想法?我还应该提到我已经非常精通计算机科学,我不是初学者。 Ruby 是 3 种语言中的一种很好的语言,因为你可以用它做任何事情,而且它的副作用是在你学习后很有用。这真的很简单。 一种语言并不是有害的,而是 Haskell 和 Prolog 完全不同,它们会是有益的。如果不自己完成所有繁重的工作,您就无法真正深入了解,例如,在使用 C 语言时回溯逻辑编程。另一方面,在 Prolog 中工作几乎需要并培养这种理解。 Haskell 与它的纯度和强大的类型系统相似。在 Ruby 中,你不会对类似的东西有一个很好的理解——如果没有认真的 Greenspunning,那就是这样,这是在浪费每个人的时间。 另外:并不是说 Ruby 是一种糟糕的语言!我用过它,我很喜欢它(虽然我现在是 Haskell 转换者)。但它与 Python 非常相似(我也使用过,也很喜欢它),知道两者中的一个意味着你不会从学习另一个中学到很多东西。 嗯,就是这样,他想学什么风格的编程?他根本没有具体说明这一点。如果他想学习元编程,Ruby 是最好的语言。如果他想学习并发,Haskell 可能是这 3 种语言中最好的(不是吗?)。我说去学习 Scala 中的演员,因为那是未来……但无论如何。如果他想学习对象,在这 3 个中,Ruby 也是完全可行的。请注意,如果他可以使用 Scala,他会做他想做的一切。一切。以上是关于Python 程序员通过学习 Ruby 可以获得啥?的主要内容,如果未能解决你的问题,请参考以下文章