这是一个相当大的问题,所以这并不是一个完整的答案,但希望这可以帮助指导一般实践,以确定在数据科学方面的工作的最佳工具。一般来说,当涉及到这个领域的任何工具时,我有一个相对较短的资格列表。它们没有特别的顺序是:
- 性能:基本上归结为语言执行矩阵乘法的速度,因为这或多或少是数据科学中最重要的任务。
- 可扩展性:至少对我个人而言,这归结为易于构建分布式系统。这是语言
Julia
真正闪耀的地方。
- 社区:对于任何语言,您都在寻找一个活跃的社区,当您在使用您使用的任何工具时遇到困难时可以为您提供帮助。这是
python
远远领先于大多数其他语言的地方。
- 灵活性:没有什么比受到您使用的语言的限制更糟糕的了。这种情况并不经常发生,但是尝试用其中表示图结构
haskell
是一种臭名昭著的痛苦,并且Julia
由于语言如此年轻而充满了许多代码架构的痛苦。
- 易用性:如果您想在更大的环境中使用某些东西,您需要确保设置简单并且可以自动化。没有什么比不得不在六台机器上建立一个 finnicky 构建更糟糕的了。
有大量关于性能和可扩展性的文章,但总的来说,您将看到语言之间的性能差异可能为 5-10 倍,这可能取决于您的特定应用程序,也可能无关紧要。就 GPU 加速而言,cudamat
它是一种真正无缝的使用方式python
,并且该cuda
库总体上使 GPU 加速比以前更易于访问。
我用于社区和灵活性的两个主要指标是查看语言的包管理器,以及像 SO 这样的网站上的语言问题。如果有大量高质量的问题和答案,这是社区活跃的一个好兆头。包裹的数量和这些包裹上的一般活动也可以很好地代表这个指标。
就易用性而言,我坚信,真正了解的唯一方法是自己实际设置。很多数据科学工具都有很多迷信,特别是数据库和分布式计算架构之类的东西,但是如果不自己构建它,就无法真正知道设置和部署是容易还是难。