Go和Python都是流行的数据挖掘编程语言。它们都有各自的优点和缺点。然而,不知何故,总是有这样的问题:这些语言中哪一个更好。因此,让我们对它们进行比较,看看它们如何适应数据挖掘的不同应用,以及是什么让人们对哪种语言更好产生分歧。
什么是Go?
Go开发于2007年,由谷歌推出,是一种功能性的、简化的、替代更复杂的C++的语言。Go从一开始就为通过多核处理器实现并发而设计,使其非常适用于网络和基础设施环境。作为一种开源的编程语言,Go在创建时对Python、Java等进行了改进,内置了内存安全、垃圾收集和CSP式并发。
该语言在需要为大规模基础设施开发程序的数据科学家中非常流行。Go也被用于DevOps和站点可靠性自动化,开发人员将Go用于机器人和游戏软件也是很常见的。所有这些都使Go成为支持云计算的API和事物的服务器端的更好基础。而且,由于Go具有像goroutines和channel这样的并发函数,可以在它们运行的同时让程序的其他部分进行计算,所以它非常适合高效的依赖性管理。
此外,Go是一种静态类型的语言,这意味着你需要在应用你的变量数据类型之前提前声明它们。当一种语言是静态类型的时候,除非所有的变量类型都按预期定义,否则它不会被编译。这就是为什么当你用Go写作时,转换和兼容要容易得多,而且你不会面临运行类型错误。
什么是Python?
Python是一种程序性语言,很容易学习,如果你是一个初学者,想很好地掌握编码概念,那就很好。
Python的历史比Go更长,它是由Guido van Rossum在1991年开发的。它有多种多样的语法,庞大的库,以及众多的框架。而且由于它存在的时间太长,它已经出现了Python 2和Python 3等多个版本。Python 2向Python 3的迁移是一个混乱的过程,引入了许多向后兼容的问题。但是今天的任何新项目都应该在Python 3中完成,因为现在几乎所有的第三方库都已经迁移到了Python 3。
Python真正确立自己的地位是在机器学习领域。专门的库和深度学习框架,如Pandas、TensorFlow、Scikit-Learn和PyTorch,已经成为ML研究人员的事实工具。
对比Go和Python
大多数数据科学家会告诉你,Go很好,但如果Python是一种100%完美的语言,他们绝不会选择Go而不是Python。这其中有很多原因。Python更简单,非常适合初学者,有一个巨大的第三方库的生态系统,还有大量的社区支持。
然而,当你需要速度时,你会转向Go。
如果你正在处理网站,Python是很好的。但如果你需要的程序中,并发性对提高吞吐量至关重要,那么Go就是你的首选语言。
一个快速的图表给你一个概述。
属性 | Go语言 | Python |
速度 | 高 | 低 |
数据操作 | 低 | 高 |
图书馆 | 低 | 高 |
并发性 | 内置 | 无 |
可读性 | 可比 | 可比的 |
类型化 | 静态 | 动态的 |
轻松 | 可比的 | 可比的 |
语法和第一方支持 | 可比拟的 | 可比拟 |
速度是你所追求的一切吗?Go的速度很快,但在决定哪种语言更适合你之前,你还需要考虑其他标准。让我们来研究一下。
1.就情感挖掘而言,当我们在分析数据中的情感时,我们是在现实世界的实际商业环境中使用ML程序。你需要一种语言,允许轻松细化数据、字符串操作和矩阵。Python可以轻松地实现这一点,而不像Go,它没有提供太多的灵活性。
2.Go的内存效率高。这也是一个很大的优点。如果你在大规模的网络服务器甚至更大的分布式系统中工作时,需要在内存中使用复杂的逻辑和众多的对象,Go为你提供了一个优势。
3.3.Go提供了并发性。它可以同时处理几个异构的任务,这增加了它的速度和效率。这在Python中是不可能的。
除了这些,当我把我们Repustate的大部分代码从Python迁移到Go时,我做了几个观察。你可以在这里阅读它们。
为什么我选择Go?
从历史上看,Go并不真正适合于数据挖掘和混合。当你需要解析带有异质数据的.csv文件时,这往往是社交媒体倾听或客户声音数据分析中的情况,这可能是一个挑战。它也没有像Python那样的REPL环境,而这对于探索性的数据分析来说是必要的,可以加速数据的整理。然而,我们决定将我们的一大块代码转移到Go上。
我意识到,尽管与Python不同,Go的功能仍然是一流的对象,这对函数式编程来说是个大拇指。你想扩展到巨大的项目吗?没问题。此外,goroutines和通道确保你对内存分配有更精细的控制。我们的API处理数以千计的文件,一旦我们迁移到Go,我们注意到它所使用的内存只比Python程序时的一小部分。所有这些,你还能得到静态类型的性能提升。更不用说,Go是为基于云的环境而构建的。
结束语
最后,没有一个明确的答案。这两种语言在它们所使用的环境中都很出色,并将继续存在。如果你想为网络安全和欺诈检测开发ML模型,你最好不要使用Python,而是使用Java。但如果是情感分析,那么Python就是你的语言。然而,如果你是一个资深的编码员,并且速度和规模是你所关心的,Go为你提供了这些和其他许多优势。
看看你的需求,了解你的优先级,并尝试使用这两种语言。如果你已经熟悉了Python,你就不会发现Go有什么困难。即使Python有更大的社区支持,Go也在不断进步。它已经有几个库和模块,对那些新手很有帮助。除此之外,AWS、Azure和Google当然也会提供很好的支持。