在过去的几年里,Python已经成为人工智能和数据科学领域最流行的编程语言。然而随着5G时代的到来,生产环境对AI应用的性能要求越来越高,Python就有些“力不从心”了。天生支持并发的Golang应运而生。据专家介绍,Go语言将统治未来十年的人工智能。Python用了20年才被认可,但它不是为AI而生的,30年前,Python第一次出现。但Python花了20年时间才获得公众认可。根据2019年StackOverflow调查,Python成为开发人员第二喜欢的语言。Python在过去5年的增长无疑是巨大的,它已成为机器学习和数据科学开发人员的首选语言。短期内,Python的霸主地位大概率不会改变。但与一些新兴语言相比,它有一些严重的缺点,会成为生产环境部署的障碍。Python流行的主要原因是它易于学习。与其他语言相比,它的语法很简单,任何人都可以在几小时或几天内学会Python的基础知识。即使在学习了C++或Java等其他语言之后,开发人员也更喜欢使用Python。因为无论你想做什么,总有一个Python库可以满足你的需求。这些库使开发数据科学和AI应用程序变得简单高效。然而,Python在大规模生产环境中的性能问题直接影响到AI应用的开发效率。现在很多人工智能初创公司都处于底层架构的搭建阶段,需要对Python的问题进行排查。GIL锁定了Python,行走性能成为瓶颈。Python是一种解释型语言,这导致它执行缓慢。与c++、Go等其他编译型语言相比,Python执行起来就像乌龟一样,所以很多AI模型虽然是用Python开发的原型,但在部署的时候还得转成其他语言。Python是一种动态类型语言。运行时会自动判断变量的数据类型,这也拖慢了执行速度。为了克服Python的速度,许多Python库被改写成更快的语言,如TensorFlow、Numpy,Pandas部分用c或c++编写,有助于显着提高执行速度。这有点像拄着拐杖走路,总是需要外界的帮助。随着5G时代的到来,对多任务并行处理和实时性的需求猛增。Python可以构建小而美的应用,但在大规模、高吞吐量的场景下,表现并不尽如人意。虽然有很多方法可以提高Python的并行计算能力,但都是通过曲线实现的,并没有达到真正的并行。因为Python中有GIL锁,一次只允许一个线程执行程序。GIL的全称是全局解释器锁(GlobalInterpreterLock),是Python之父为了数据安全而设计的。那时候电脑的主频还没有到1G,所有的程序都运行在单核电脑上。线程要想执行,必须先获取GIL。GIL可以看作是CPU的“通行证”。没有通行证是不允许进入CPU执行的。Python的多线程实际上并没有利用多核计算的优势。不管你有多少核心,100个核心只能运行一个线程。因此,原生Python在性能上有很多限制。人工智能和数据科学领域对性能要求很高。有没有一种语言既有Python简单易用的优点,又能满足生产需求呢?这时候,Golang应运而生。Go天生就支持云计算的并发控制,将统治AI的下一个十年。Golang(简称Go)是一种静态的编译型语言,这意味着它的执行速度会比Python快数倍。与Python不同,Go不需要其他语言的帮助来提高速度。下面是Go和Python之间的小型基准游戏对决。Go的执行速度几乎与c++和Java一样快,Go编译后的代码比c++和Java快得多。在某些游戏中,Go所需时间仅为Python的百分之一。Go的语法也非常简单。程序写好后,可以直接编译成二进制文件执行。25个关键词可以表达你能想到的所有走法,想干什么就走吧。Go最大的特点就是天生就支持并发。它不需要开发者自己实现,也不需要像其他编程语言那样使用第三方库来实现并发编程。逻辑简单易懂。Go使用Goroutine来实现并发。Goroutine是一个可以同时独立运行的函数,只占用2kB内存,所以单机同时运行上千个Goroutine是没有问题的。上面的程序顺序执行花费了1000多毫秒。接下来我们在printTime函数前面加上一个关键字go,即使用Goroutine让程序并发执行。整个过程只需要110毫秒,所以用Go实现并发是非常简单的。与其他脚本或解释型高级编程语言不同,用Go编写的代码可以直接编译为机器代码以高效执行。x86、AMD64(x86_64)、ARM;Linux,Windows,Darwin(OSX),FreeBSD,Android(Go1.4planning)几乎所有平台都支持,做到一份代码在手,随处复用。人工智能正在席卷全球。机器学习、深度学习等模仿人类智能的应用层出不穷。Python可以很好的搭建一个原型系统,帮助我们验证这个模型是否可以用来提高效率。但现在,对高扩展性和计算能力的需求让Python显得有些捉襟见肘,而Go在这些方面展现出了更大的潜力。与Python相比,Go可以快数十倍或数百倍,处理更多的数据,满足更高的并发要求。根据Hackearth对来自76个国家的16,000多名开发人员的调查,Go是2020年最受欢迎的编程语言。近30%的有经验的开发人员今年想学习Go,29%的学生也是如此。几年前,知乎也将其推荐系统从Python切换到了Go。Go的首席布道者许世伟在2015年表示,Go语言将在两年内称霸云计算领域,Go将在未来10年内称霸。Docker、Kubernetes等项目的成功让Go在集群计算和云计算领域走在了前列,但Go的脚步并没有停止。我们用机器学习和深度学习来预测和推理,最终目的是生产服务。Go对生产环境的支持要比Python好很多。比如Go语言开发的Cortex,可以快速稳定地将Python开发的AI模型部署到生产环境中。Go和Python两大社区的开发者也争论过哪种语言更好,似乎没有人能完全说服对方。但是越来越多的公司使用Go来构建基础设施,至少证明了Go更适合生产环境。
