0

0

2021年放弃Python选择Go的原因

尚

发布时间:2020-02-27 18:23:02

|

4002人浏览过

|

来源于studygolang

转载

过去一段时间,go 语言中文网推过挺多 python 相关的公众号,很多人诧异:为什么推的都是 python 的呢?其实主要原因是因为 python 类的公众号实在太多了,而且很多粉丝都特别多,我也挺纳闷的。不过他们值得我学习,也说明 go 还有很长的路要走。

2021年放弃Python选择Go的原因

您会在 Python 和 Go 之间选择哪个?如果您对 Go(Golang)有更深入的了解,那么您肯定会选它。否则将会选择Python。那么我们讨论一下。Python 的伙伴们,有 5 个理由可以让您选择 Go。让我们一起阅读这篇文章。

“ Python非常强大,尤其是 Python 3 具有异步功能,但是 Go 将完全取代它在大型企业中的地位……”

如果您真的理解上边的话,则可以尝试使用 Go 编程语言。我认为 Go 是一种非常简单的编程语言,可以适应任何应用程序环境,甚至比 Javascript 编程还要简单。这可能就是为什么 Go 编程语言近年来变得流行的原因。

立即学习Python免费学习笔记(深入)”;

在本文中,我将比较两种语言的以下方面。这些方面的参数将帮助您确定哪种语言更适合您的手头项目。

1、性能

2、可扩展性

3、实际应用

4、执行方式

5、程序库

6、代码可读性

网站 TreeScale.com 主页和 API 是基于某些分析工具的 Web 应用程序。这是他们的技术栈:

  • React.js 主页前端

  • Django Python 主页后端和身份验证服务

  • Node.js API 服务

  • PostgreSQL 数据库,Cassandra 日志记录系统

  • 自定义容器注册表正在使用 Rust 语言

  • Python

Repustate 几乎完全是 Python 商店。他们使用 Django 来实现 API 和网站。因此(当前)使用 Python 来实现阿拉伯情感引擎是合理的,以便保持代码的一致性。仅用于原型设计和实现,Python 是一个不错的选择。

它的表达能力非常强大,第三方类库等也很好。如果您要使用 Web 服务,那么 Python 是完美的选择。但是,当您执行低级计算并严重依赖哈希表( Python 中的字典类型)进行比较时,一切都会变慢。我们每秒可以处理大约两到三个阿拉伯文文档,但这太慢了。相比之下,他们的英语情感引擎每秒可以处理大约 500 个文档。

从上面可以看到,基本框架完全基于微服务和逻辑的分离(前端和后端分离),甚至是完全不同的技术来实现。

他们将 API 服务和后端集成到一个项目中的主要原因是它们在许多地方都相似,并且通过多种语言或技术进行编码,同时有很多重复的代码。最后,他们需要花费大量时间来个性化 Django 的 API 服务,尤其是在自定义 JSON 响应方面。

Noya
Noya

让线框图变成高保真设计。

下载

我觉得当您开发一些普通的应用程序时,使用 Django 很棒,但是当您需要更高的性能和一些个性化的模块时,使用 Django 会使它更加复杂。

为什么选择 Go 编程?

1、编译为单个二进制文件

Golang 是一种编译语言,Googe 的开发人员为此付出了很多努力。它使用静态链接根据操作系统类型和环境将所有相关的库文件和模块实际组合到一个二进制文件中,这也意味着如果要将后端应用程序编译到 Linux 操作系统和基于 X86 CPU 的应用程序,您只需将已编译的二进制应用程序下载到服务器,然后后端应用程序就可以工作,不需要任何相关文件。

2、静态类型系统

2.jpg类型系统对于大规模应用非常重要。Python 是一种很棒的有趣的语言,但是有时您会看到一些奇怪的异常,因为当您尝试将变量用作整数变量时,而实际它是字符串类型。

def some_view (request): user_id = request.POST.get ('id', 0)这样的代码将导致 Django 崩溃。

而 Go 会进行编译,并告诉您这是一个编译器错误,这是它在愚蠢问题上赢得时间的地方。

3、优化(性能)

令人惊讶的是,在大多数应用程序场景中,Go 比 Python(第 2 版或第 3 版)更快。比较的结果可以在基准测试中看到,这当然是不公平的,它取决于应用程序的类型和用户用例。

就我们而言,Go 拥有自己的多线程模块和 CPU 可扩展性,因此性能更高。每当我们需要执行一些内部请求时,我们都可以使用 Goroutine 分别执行它们,这比 Python 中的线程要节省十倍的资源。借助这些内置的语言功能,我们可以节省大量资源(内存和 CPU)。

4、Go 不再需要 Web 框架

3.jpg

对于编程语言来说,这是一件很酷的事情。Go 语言的创建者和社区拥有核心语言支持的许多内置工具,在大多数情况下,您不再需要任何第三方库。例如,它具有内置的 http,json 和 html 模板。您甚至可以构建非常复杂的 API 服务,而不必担心在 Github 上找到第三方库。

当然,Go 也有许多用于构建 Web 项目的库和框架,但是我建议您不要使用第三方库来构建 Web 项目或 API 服务,因为在大多数情况下,使用标准库包将使您的生活更轻松。

5、更好的 IDE 支持和调试

当您尝试更改编程语言时,IDE 支持是最重要的考虑因素之一。友好的 IDE 可以平均节省 80% 的编程时间。Go Plugin for JetBrains IDEA,还提供其他支持,例如(Webstorm,PHPStorm 等)。该插件提供项目开发中所需的任何服务。强大的 JetBrains IDEA 可以使您的开发更加强大,更好用的是 Goland。

选择 Go,还是 go home?

Mozilla 正在内部将其庞大的基础日志记录架构转换为 Go,部分原因是强大的 goroutines 。Go语言是由 Google 的人员设计的,在设计之初,对并发的支持才是重中之重,而不是像其他各种 Python 解决方案一样在其后添加。因此,我们开始从 Python 切换到 Go。

尽管我们的 Go 代码产品尚未正式发布,但结果令人鼓舞。现在,我们每秒可以处理一千个文档,使用更少的内存,并且不需要调试在 Python 中遇到的问题:丑陋的多进程/gevent/“为什么 Control-C 无法杀死进程”。

为什么我们喜欢 Go?

任何对编程语言的工作方式(解释与编译,动态与静态)了解甚少的人都会说:“切,当然 Go 会更快”。是的,我们还可以用 Java 重写所有内容,并且可以看到类似且更快的改进,但这不是 Go 语言获胜的原因。

您在 Go 中编写的代码似乎是正确的。我不知道发生了什么,但是一旦代码被编译(快速的编译速度),您就会觉得代码可以正常工作(不仅可以正确运行,而且在逻辑上正确)。我知道这听起来不太可靠,但确实如此。

就冗余(或非冗余)而言,这与 Python 非常相似。它以函数为首要目标,因此函数式编程将易于理解。当然,Go 线程和通道使您的工作变得更轻松,可以从静态类型中获得很大的性能提升,并且可以更好地控制内存分配,但是不必为语言表现力付出太多成本。

根据我们的代码统计,用 Go 重写项目后,我们减少了 64% 的代码。

您不需要调试不存在的代码。代码越少,错误越少!

结论

Go 为我们提供了极大的灵活性。一种语言可以在所有用户方案中使用,并且在所有用户方案中都能很好地工作。在后端和 API 服务中,我们获得了 30% 的性能优化。现在,我可以实时处理日志,转换为数据库,并通过 WebSocket 处理一项或多项服务!这是 Go 语言功能提供的非常强大的功能。

更多go语言知识请关注php中文网go语言教程栏目。

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

715

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

626

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

739

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1235

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

575

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

699

2023.08.11

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 2.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号