2020 年为什么要选择 Go 并放弃 Python

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

为了证明 Go 语言中文网坚持做 Go 语言,推广 Go、分享 Go,为 Go 的发展做贡献,这两天会分享两篇 Go 和 Python 的对比文章。欢迎指正。

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

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

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

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

性能

可扩展性

实际应用

执行方式

程序库

代码可读性

网站 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 响应方面。

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

为什么选择 Go 编程?

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

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

2、静态类型系统

类型系统对于大规模应用非常重要。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 框架

对于编程语言来说,这是一件很酷的事情。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 语言功能提供的非常强大的功能。

最后:


上面都是自己整理好的!我就把资料贡献出来给有需要的人!顺便求一波关注,哈哈~各位小伙伴关注我后私信【Java】就可以免费领取哒 原文链接:https://www.toutiao.com/a6796217470668505608/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容

  • 场景一: 带着Mia下班回家,走到小区门口正好遇见准备外出的爸爸。爸爸惭愧的说,今天领导的媳妇请我们哥几个吃饭,实...
    三省行者阅读 215评论 1 1
  • 上一次的文章中提到,我们每天的饮食中至少有12种食物,每周至少有25种。有些人反映,家常便饭一天吃12种好像有点困...
    妖娆而生阅读 998评论 2 0
  • 今天下午去看朋友,把车停到车库有车牌号的位置上了,侥幸的心理,以为一会儿就能走也没有留下电话号码,结果当我到...
    绪英阅读 158评论 1 0
  • 到今天我们已经践行了接近40天了,我想分享一下自己践行的情况。 我当时给自己设立了三个目标 1 90天跑半马,2....
    Ivanlu666阅读 320评论 0 1
  • 不成熟的文字,在笔尖疯长了一季又一季,那些难言的感动,那些深藏的痛楚,那些存在抑或不曾存在的往日,渐渐失了焦、失了...
    在山阅读 362评论 0 2