下个10年,Go能取代Python成为开发者的首选语言吗?

2020-10-19 20:21 1020 阅读 ID:126
机器之心
机器之心
Go为什么是2020年最受欢迎的语言?这篇文章也许能够给你答案。

选自towardsdatascience,作者:Dasaradh S K,机器之心编译,机器之心编辑部。

30年前,Python首次出现,但它花了20年的时间才获得开发者们的赏识。直到2019年,Python才成为最受开发者喜爱的第二大语言。Python在过去,尤其是在过去5年中的增长是非常巨大的。如今它已成为机器学习和数据科学开发者的首选语言。

在接下来的几年中,Python无疑还将继续在这些领域占据主导地位。但是,与一些新兴语言相比,它存在一些明显的缺点。对于未来十年的开发者来说,这可能是一个严重的障碍。

所以,有没有一种更好的编程语言来替代Python呢?就人工智能发展和数据科学而言,Go语言或许会成为越来越多开发者的下一个首选语言。

Python为何大受欢迎

Python受欢迎最主要的原因是它的简单,容易学习。与其他语言相比,Python的语法很简单,几个小时或者几天之内就可以掌握它的基础知识。

即使在学习其他语言(例如C++、Java)之后,开发者通常还是更喜欢使用Python。这是因为Python库几乎可以满足所有开发需求。

所以,库和简单的语法让使用Python进行开发既简单又高效,也让其成为适合初学者的语言。

Python并不是完美的

虽然Python易于学习的特性使其广受欢迎,但它并不是完美的,在运行速度、C/C++使用和全局解释器锁三方面存在着一些问题。

速度

Python是一种解释型语言,这也导致了它最大的问题——运行缓慢。与其他语言(例如C++、Java)相比,Python的运行速度非常慢。此外,Python还是一种动态型语言。变量的数据类型在运行期间自动分配,这也使得运行速度大大降低。

使用C/C++

为了改善Python运行速度缓慢的问题,Tensorflow、Numpy和Pandas这些库都是部分用C/C++编写的。这对Python速度的提升起到了非常大的作用。基本上,Python需要借助其他语言来改善速度慢的问题。

全局解释器锁

Python的全局解释器锁(GIL)一次只能运行一个线程,但这提升了单线程的性能。Python的多线程实际上并没有同时运行多个线程。实际上,Python无法执行真正的多线程。

为什么说Go语言将成为新兴语言呢?

Go语言是一种开源编程语言,可轻松构建简单、可靠且高效的软件。

Go语言在2009年首次亮相,是谷歌开发的一种通用型语言。与Python等其他编程语言相比,Go语言具有多个优势,这也是它值得关注的地方。

速度快

Go是静态型化和编译的语言,这意味着它的运行速度是Python的数倍。而与Python不同的是,Go不需要借助其他语言就可以达到一个较快的速度。Go几乎和C++、Java一样快,而且Go语言的代码编译速度比C++和Java快得多。

易于学习

Go的语法很简单,类似于C语言。所以,Go语言同样很容易学习,如果学习者已经掌握C或者Java语言的基础知识,学起来就更简单了。

越来越受欢迎

Hackearth对来自76个国家和地区的16000余名开发者进行调查的结果显示,Go语言是2020年最受欢迎的编程语言。32%的有经验开发者表示他们想学习Go语言。

与此同时,29%的学生也表示想学习Go语言。

并发

并发是Go语言的主要优势之一。Go使用Goroutine实现并发,Goroutine是可以同时独立运行的函数。Goroutine只占2KB内存,得益于这种轻量级,成千上万个Goroutine可以同时运行。

下面这篇文章深入介绍了Go语言的更多优势。

文章链接:https://medium.com/@kevalpatel2106/why-should-you-learn-go-f607681fad65

为什么说Go适用于AI研究?

实际上,Go语言对于人工智能和数据科学研究本身来说并没有什么特别之处。那么为什么将其用于这些领域呢?

30年前,尚且没有将Python用于构建机器学习和深度学习算法以进行数据可视化。Python能够有现在的辉煌,是因为开发者和学生喜欢用这种语言编程,并且能够实现开发者的开发目的。

而Go语言旨在提升程序开发的生产力。和Python相比,它具备多个优点。Go语言很有可能在未来几年中取代Python,成为最受欢迎的语言。

因此,一言以蔽之:

未来十年,Go语言比其他任何一种语言都更能支持开发者们的想法。

原文链接:https://towardsdatascience.com/golang-ai-programming-language-for-the-20s-71890baa8c47

免责声明:作者保留权利,不代表本站立场。如想了解更多和作者有关的信息可以查看页面右侧作者信息卡片。
反馈
to-top--btn