文山羊 2020-11-07
本文转载自公众号“读芯术”(ID:AI_Discovery)
30年前,Python首次亮相,它花了20年才得到开发者的赞赏。如今,它已经成为开发者第二喜爱的语言。尤其是在过去五年里,Python用户激增,成为机器学习和数据科学开发者的首选语言。
在未来几年里,Python在这些领域的主导地位必然是很难被动摇的。但与较新的语言相比,它依然存在严重的缺陷。这也是20年代开发者们所面临的障碍。现在正是反思Python的问题并选择更好的语言取代它的最好时机。对于人工智能开发和数据科学来说,下一个首选语言可能是Go语言。
Python广受欢迎的主要原因是它很容易学习。与其他语言相比,它的语法很简单,任何人都能在几小时或几天内学会Python基础知识。就算学习了C++或Java等其他语言,开发者还是更倾向于使用Python。这是因为Python的库几乎可以满足用户的所有需求。
速度
Python是解释语言,这导致了其较大问题——执行速度慢。与C++和Go等其他编译语言相比,Python的执行速度非常慢。Python还是动态语言。变量的数据类型在运行时自动分配,这导致其执行速度变得更慢。
C/C++的使用
为了克服Python执行缓慢的问题,Tensorflow、Numpy和Pandas等库部分是用C或C++编写的。这能大幅提高执行速度。基本上Python需要借助其他语言来克服自身问题。
全局解释器锁
Python的全局解释器锁(GIL)一次只允许执行一个线程,同时提高了单线程性能。Python的多线程并不是真正的多线程同时运行。事实上,Python做不到真正的多线程。
注意,Python非CPython实现的部分,比如Jython和IronPython没有GIL。
Go是开源编程语言,它使得构建简单、可靠且高效的软件变得容易。10年前,Go首次亮相,它在谷歌作为通用语言开发。与Python和其他编程语言相比,它有一些显著的优势。
快速
Go是静态编译语言。这意味着其执行速度要比Python快好几倍。与Python不同,Go不需要其他语言的帮助;另外,Go编译代码的速度比C++和Java还快得多。
易于学习
Go的语法和C相似,比较简单,是一门易于学习的编程语言,特别是对于那些已经了解C或Java基础知识的人。想要学习Go的基础知识,可以在A Tour of Go网站进行交互式学习,或者阅读官方文档。
日益流行
Hackearth调查了来自76个国家的16000多名开发者,显示Go是2020年很受欢迎的编程语言。无需惊讶,有32%富有经验的开发者和29%的学生表示想学Go。
并发性
并发性是Go的优势之一。它拥有Goroutines来实现并发,Goroutines是一些可以同时独立运行的函数。Goroutines体积很小,只占用2kB内存,你可以同时运行成千上万个Goroutines函数。
Go为什么适合人工智能研究
实际上,对于人工智能研究和数据科学来说,Go没有任何特殊之处。那么究竟为什么开发者会选择它呢?
30年前,开发Python不是为了构建机器学习或深度学习算法,也不是为了实现数据可视化。它之所以成为今天这个样子,是因为开发者和学生喜欢用Python,而且它能够支持开发者开发他们想要的东西。