前言Python是一种非常流行的语言。但在企业界,会下围棋并不会给人任何生存机会。如果你明白这句话的意思,那么你可能已经尝试过或见过Go编程语言。我认为它是最简单的编程语言,可用于任何类型的应用程序开发。是的!你没看错,对我来说,go比JavaScript更容易学习。我想这就是go语言在短短几年内变得如此火爆的主要原因。让我们比较一下Python和Go。那么在使用Go之前我们有什么这是我们的Python技术堆栈:用于仪表板前端的response.jsDjango用于仪表板后端的Python+用于API服务的Node.js用于数据库的PostgreSQL,用于日志记录的Cassandra使用Rust语言编写的自定义容器注册表As可以看到,整个基础设施完全基于微服务,大部分逻辑是完全分离的,甚至使用了不同的技术。这就是我们开始考虑将API服务和后端合并到一个项目中的主要原因,因为它们有很多相似之处,但代码库在多种编程语言和技术中是重复的。但是我们需要做很多工作来定制Django的API服务,尤其是定制JSON响应。为什么使用Go正如我之前所说,Go语言是我见过和使用过的最简单的语言。但这只是吸引我的第一点。以下是我们选择Go而不是PythonDjango的5个主要原因1.它编译成单个二进制文件Golang是作为编译语言构建的,Google开发人员在这方面做得很好。使用静态链接,您实际上可以根据操作系统类型和体系结构将所有依赖库和模块组合到一个二进制文件中。这意味着如果你在你的笔记本电脑上用LinuxX86CPU编译你的后端应用程序,你只需要将编译后的二进制文件上传到服务器,它就可以工作而无需安装任何依赖项!2.静态类型系统类型系统对于大规模应用来说非常重要。Python是一种伟大而有趣的语言,但有时您会遇到不寻常的异常,因为您尝试将变量用作整数,结果却变成了字符串。#Djangowillcrashprocessbecauseofthisdefsome_view(request):user_id=request.POST.get('id',0)#Ifthispostrequesthas"id"parameterthen#user_idwouldbeastring,#butyoureallythinkingitisintegerUser.objects.get(id=user_id)Go将在编译时将此作为编译器错误时间你知道问题所在。这是您赢得时间的地方。3.性能!这可能令人惊讶,但在大多数应用程序中,Go比Python(2和3)更快。在我们的例子中,由于Go的并发模型和CPU可扩展性,它表现得更好。每当我们需要处理一些内部请求时,我们都会用一个单独的Goroutine来处理,它在资源上比Python线程便宜10倍。因此,由于语言的内置特性,我们节省了大量资源(内存、CPU)。4.你不需要网络框架这是关于编程语言最好的部分。Go语言的创建者和社区已经构建了许多由该语言的核心支持的工具,并且在大多数情况下,您实际上并不需要任何第三方库。比如它有原生语言构建的http、json、html模板,你甚至不用去Github上找库就可以构建非常复杂的API服务!但是当然有很多为Go构建的库和框架,使用Go构建Web应用程序,但我建议构建Web应用程序或API服务时不要使用任何第三方库,因为在大多数情况下,它们并不比使用原生包更容易.5.强大的IDE支持和调试IDE支持是您尝试切换编程语言时最重要的事情之一。舒适的IDE平均可以节省80%的编码时间。找到了JetBrainsIDEA的Go插件,也支持(Webstorm、PHPStorm等)。这个插件提供了项目开发所需的一切,借助JetBrains的强大功能,您可以真正促进您的开发。根据我们的代码库统计,在重写了所有要运行的项目之后,我们最终的代码比以前少了64%。结论Go为我们提供了巨大的灵活性,一种适用于所有用例的语言,并且适用于所有用例。我们的后端和API服务的性能提高了30%。现在我们可以实时处理日志记录,将它们通过管道传输到数据库,并使用Websockets从单个或多个服务流式传输它们!这是Go语言特性的一个很好的结果。英文原文:https://medium.com/hackernoon/5-reasons-why-we-switched-from-python-to-go-4414d5f42690
