【问题标题】:What is meant by prototyping in Python? [closed]Python中的原型设计是什么意思? [关闭]
【发布时间】:2016-05-07 03:47:15
【问题描述】:

我读过的有关 Julia 的文章讨论了两种语言问题,并以 Python 或 R 为例。你用 Python 创建一个程序,然后必须调用一个库,比如 numPy,它是用 C 编写的。对于统计计算,Python 很慢,这个库旨在帮助加快速度。因此出现了两种语言的问题。

这在 Python 中被描述为原型设计(如果在示例中使用,则为 R)。原型设计是什么意思?

这里有一些例子:

(第二段开头)https://www.mapr.com/blog/julia-fresh-approach-numerical-computing-and-data-science

(第三段)https://sinews.siam.org/DetailsPage/tabid/607/ArticleID/744/Julia-A-Fast-Language-for-Numerical-Computing.aspx

【问题讨论】:

  • 链接到一篇此类文章?
  • 我认为这些类型的文章通常都在争论用python写东西真的很快,因为这种语言的表现力如此之强,并且拥有如此强大的标准库。这个初始代码是“原型”,但是这些文章的作者继续讨论 python 不适合大型项目,因为它很慢并且没有类型安全等。(断言我完全不同意)。所以你需要用一种更难使用但“更适合大型项目”的语言来重建整个东西。同样,我通常不同意这一点。
  • 我猜他们是说在 R 或 Python 中实现一个有效的算法(prototype)非常容易,但是你必须处理这样一个事实:较大的输入,该算法可能太慢而无法使用。我想这回应了你的回答。我希望讨论不要转向“这种语言对那种语言”的宗教战争,这在 SO 中完全是题外话。
  • 我当然不知道。你问来干什么?他们只是在说 R 或 Python 中的某些程序不能很好地扩展,仅此而已。如果你想让它们扩展,你必须使用另一种语言,他们将第一个程序称为“原型”。就是这样。你不喜欢这个词?我想他们所说的概念很清楚。
  • 无论您使用哪种语言,通常都会对解决方案进行原型设计,而不必过多担心性能/可扩展性(请记住 Donald Knuth 的名言“过早的优化是万恶之源”),请参阅哪些部分确实是性能/可扩展性瓶颈,然后努力改进这些部分。当您使用的语言速度不足以改进那些真正成为瓶颈的部分时,就会出现两种语言的问题,因此您需要用另一种语言(通常是 C 或 C++)编写代码并调用它。这对科学家来说可能很困难,只是想得到结果。

标签: python r prototype julia


【解决方案1】:

他们的意思是知道如何编程的数据分析师,例如Python 通常会快速编写代码,为中小型数据集提供正确答案。然后,一旦想法得到验证,由于各种原因,代码必须重写,有时使用完全不同的语言,如 C++(第二语言问题)。

Python 对 C 和 C++ 以及在较小程度上对 R 和其他语言有相当好的绑定。但是以这种方式编程确实会让人感到困惑(如果你同时使用这两种方式编写,而不是使用 Python 中用 C 编写的成熟库)。更难调试。

NumPy 和 SciPy 有帮助,因为它们让您可以使用 Python 代码表达数字数据转换,但实现在 C 和 Fortran 中进行了高度优化。但是,如果您的算法没有明显的向量或矩阵运算转换怎么办?生成一个在大型数据集上快速的程序可能需要相当多的努力(和重新验证)。

有些人声称,例如Julia 让您可以快速编写代码,但不会让编写缓慢的代码变得如此容易。

【讨论】:

  • “NumPy 和 SciPy 有帮助,因为它们让您可以使用 Python 代码表达数字数据转换,但实现在 C 和 Fortran 中进行了高度优化。”那部分就是我所说的两种语言问题以及“原型”出现的地方。我真的不明白为什么它是一个问题或为什么它是一个原型。许多语言调用库(C 与否)。我只是不确定为什么 Julia 的文章会在所有其他语言都没有的情况下调用这种原型。然而它是一回事。
  • "...在较小程度上是 R..." 我认为 C-R 绑定非常好,很容易用 C 代码扩展 R。
  • @nicola:我在那里写的是 Python 与 C 的绑定,而 Python 与 R 的绑定较少。并不是说 R 与 C 的绑定较少。
  • @4thSpace,这并不是他们通常所说的原型。这两种语言的问题不是当你调用一个用其他语言编写的库时,问题是没有库可以满足你的需要,而你需要自己编写 C、C++ 或 Fortran 代码 为了获得代码关键部分所需的性能/可扩展性,在尝试使其生产就绪时。
猜你喜欢
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 2010-12-29
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多