过去一段时间,Go语言中文网推了很多Python相关的公众号,很多人很奇怪:为什么都在推Python?其实主要是因为Python类里面的公众号太多了,很多人都有很多粉丝,我也挺纳闷的。但它们对我来说都是值得学习的,也说明Go还有很长的路要走。为了证明Go语言中文网坚持做Go语言,推广Go,分享Go,为Go的发展做贡献,这两天分享两篇Go和Python的对比文章。欢迎指正。Python和Go你会选哪个?如果你对Go(Golang)有更深入的了解,那么你一定会选择它。否则将选择Python。因此,让我们讨论一下。Python朋友应该选择Go的5个理由。让我们一起阅读这篇文章。“Python非常强大,尤其是Python3具有异步功能,但Go将在大型企业中完全取代它……”如果你真的懂行情,可以试试Go编程语言。我认为Go是一种非常简单的编程语言,可以适应任何应用程序环境,甚至比Javascript编程还要简单。这大概就是Go编程语言近几年火爆的原因吧。在本文中,我将比较两种语言的以下几个方面。这些领域的参数将帮助您决定哪种语言更适合您手头的项目。性能可扩展性实用应用程序执行库代码可读性网站TreeScale.com主页和API是基于某些分析工具的Web应用程序。这是他们的技术堆栈:React.js主页前端DjangoPython主页后端和身份验证服务Node.jsAPI服务于PostgreSQL数据库,Cassandra日志系统自定义容器注册表使用Rust语言PythonRepustate几乎完全是一个Python商店。他们将Django用于他们的API和网站。因此(目前)在Python中实现阿拉伯语情感引擎是有意义的,以保持代码的一致性。仅对于原型设计和实现,Python是一个不错的选择。它的表达能力很强大,第三方类库也很不错。如果您正在使用Web服务,Python是一个不错的选择。但是,当您执行低级计算并严重依赖哈希表(Python中的字典类型)进行比较时,一切都会变慢。我们每秒可以处理大约两到三个阿拉伯语文档,但这太慢了。相比之下,他们的英语情感引擎每秒可以处理大约500个文档。从上面可以看出,基本框架完全是基于微服务和逻辑的分离(前后端分离),甚至是完全不同的技术。他们将API服务和后端集成到一个项目中的主要原因是它们在很多地方都是相似的,并且使用多种语言或技术进行编码,同时有很多重复的代码。最后,他们需要花费大量时间来个性化Django的API服务,尤其是在自定义JSON响应方面。我觉得当你开发一些普通的应用程序时使用Django是很棒的,但是当你需要更高的性能和一些个性化的模块时,使用Django会使它变得更加复杂。为什么选择Go编程?1.编译为单个二进制文件Golang是一种编译型语言,Googe的开发者为此付出了很多努力。它使用静态链接实际上根据操作系统类型和环境将所有相关的库文件和模块组合成一个二进制文件,这也意味着如果你想将后端应用程序编译为Linux操作系统和基于X86CPU的应用程序,你只需将编译后的二进制应用程序下载到服务器,后端应用程序无需任何相关文件即可运行。2.静态类型系统类型系统对于大规模应用来说非常重要。Python是一种伟大而有趣的语言,但有时当您尝试将变量实际为字符串类型时将其用作整型变量时,您会看到奇怪的异常。像defsome_view(request):user_id=request.POST.get('id',0)这样的代码会使Django崩溃。而Go编译并告诉你这是一个编译器错误,这是它在愚蠢的问题上争取时间的地方。3.优化(性能)令人惊讶的是,在大多数应用场景中,Go比Python(版本2或3)更快。比较的结果可以在基准测试中看到,这当然不公平,这取决于应用程序的类型和用户用例。在我们的例子中,Go有自己的多线程模块和CPU可扩展性,因此性能更高。每当我们需要执行一些内部请求时,我们可以使用Goroutines来单独执行它们,这比Python中的线程节省了十倍的资源。有了这些内置的语言特性,我们可以节省大量的资源(内存和CPU)。4.Go不再需要web框架。这对于编程语言来说是一件很酷的事情。Go语言的创建者和社区拥有许多核心语言支持的内置工具,并且在大多数情况下,您不再需要任何第三方库。例如,它内置了http、json和html模板。你甚至可以构建非常复杂的API服务,而不必担心在Github上找不到第三方库。当然,Go也有很多用于构建Web项目的库和框架,但我建议大家不要使用第三方库来构建Web项目或API服务,因为在大多数情况下,使用标准库包会让你的生活更轻松。5.更好的IDE支持和调试当您尝试更改编程语言时,IDE支持是最重要的考虑因素之一。友好的IDE平均可以节省80%的编程时间。GoPluginforJetBrainsIDEA还提供了其他支持,例如(Webstorm、PHPStorm等)。该插件提供项目开发所需的任何服务。强大的JetBrainsIDEA可以让你的开发更强大,而更好的是Goland。去,还是回家?Mozilla正在内部将其庞大的底层日志记录架构转换为Go,部分原因是强大的goroutines。Go语言是由谷歌的人设计的,一开始就支持并发,而不是像其他各种Python解决方案那样事后才想到。所以我们开始从Python转向Go。虽然我们的Gocode产品还没有正式发布,但结果是令人鼓舞的。现在我们每秒可以处理一千个文档,使用更少的内存,并且不需要调试我们在Python中遇到的相同问题:丑陋的多处理/gevent/“为什么Control-C不会终止进程”。我们为什么喜欢围棋?任何对编程语言的工作原理(解释型还是编译型、动态还是静态)知之甚少的人都会说,“Cut,当然Go更快”。是的,我们也可以用Java重写所有内容并看到类似且更快的改进,但这不是Go获胜的原因。您在Go中编写的代码似乎是正确的。我不知道这是怎么回事,但是一旦代码被编译(编译速度很快),你会觉得代码可以工作(不仅运行正确,而且逻辑正确)。我知道这听起来不可靠,但确实如此。这在冗余(或不冗余)方面与Python非常相似。它首先针对函数,因此函数式编程很容易理解。当然,Go线程和通道让你的工作更轻松,你可以从静态类型中获得巨大的性能提升,你可以更好地控制内存分配,但你不必为语言表达能力付出太多代价。根据我们的代码统计,用Go重写项目后,我们减少了64%的代码。您不需要调试不存在的代码。更少的代码,更少的错误!结论Go给了我们很大的灵活性。一种语言可以适用于所有的用户场景,并且适用于所有的用户场景。在后端和API服务中,我们获得了30%的性能优化。现在我可以实时处理日志,转换为数据库,并通过WebSockets处理一项或多项服务!这是Go语言特性提供的一个非常强大的特性。
