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