返回顶部
首页 > 资讯 > 后端开发 > Python >再见,Python。你好,Go 语言
  • 133
分享到

再见,Python。你好,Go 语言

你好语言Python 2023-01-31 01:01:15 133人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

1、python 和 Go 都是很好的编程语言,不过各擅胜场。Python 更成熟,库多,适合脚本操作和数据分析,在人工智能领域一家独大。Go 比较年轻,有活力,更擅长并发编程和高可用场景。 2、极客时间目前更多使用了 Go 语言构建后端服

1、pythonGo 都是很好的编程语言,不过各擅胜场。Python 更成熟,库多,适合脚本操作和数据分析,在人工智能领域一家独大。Go 比较年轻,有活力,更擅长并发编程高可用场景。

2、极客时间目前更多使用了 Go 语言构建后端服务,未来数据分析领域会采用 Python。

3、这篇文章的作者是 Jake Wilson,现任 SketchUp WEB team 技术经理。他曾就职于 Http://Boxuno.com、http://Monolla.com、谷歌等公司。在谷歌,他曾参与 Google+、chrome、Webmaster Tools 等项目

解释这么多干啥?因为我不够彪悍啊。

——————

Go 语言诞生于谷歌,由计算机领域的三位宗师级大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 写成。由于出身名门,Go 在诞生之初就吸引了大批开发者的关注。诞生十年以来,已经涌出了很多基于 Go 的应用。就在不多久之前,知乎也舍弃了 Python。
谷歌前员工 Jake Wilson 认为,比起大家熟悉的 Python,Go 语言其实有很多优良特性,很多时候都可以代替 Python,他已经在很多任务中使用 Go 语言替代了 Python。那么 Go 语言到底有着什么样的独特魅力?它有哪些胜于 Python 的地方呢?让我们一起来了解一下吧。

2019 年程序员最想学习编程语言

出身名门的 Go 语言

对于一门只有十年历史的新语言,Go 的发展势头相当迅猛,容器界的扛把子 Docker 就是用 Go 写的,国内也有不少团队广泛使用 Go。近日,HackerRank 在社区发起了 程序员技能调查 ,来自 100 多个国家、超过 70000 名开发者参与其中。调查结果显示,2019 年,程序员最想学习的编程语言 Top 3 分别是 Go、Kotlin 和 Python,其中 Go 以 37.2% 的比例排在首位。

但 Go 要想撼动编程界的常青树 Java 二十多年的地位无疑难度颇大。据 HackerRank 数据显示,2018 年,Java 在开发者最受欢迎的编程语言排行榜中仍然排名第 2,Python 排名第 4,Go 排名第 13,距离第一名 javascript 还有不小的差距。

但对本文作者 Jack Wilson 来说,Go 语言虽然“年纪尚小”,但已经拥有很多非常优秀的特性。

Go 语言到底好在哪?

在很多任务上,我已经用 Go 语言代替了 Python,举几个例子:

处理储存在 S3 上的云端日志
在 S3 上的 bucket 和 / 或 region 之间移动 TB 级别大小的文件
匹配本地的数据库记录和 S3 上的文件,以保证文件处于同步状态
这些任务大多是一次性的,所以使用脚本语言操作就会比较合适。这些任务需要快速地编程,而代码用过一次一般就舍弃了。一般来说,这种任务的需求都比较新颖、比较专,其代码很少需要复用。

下面就来介绍一下,针对这种任务为什么可以用 Go 语言来替代 Python。

拥有编译器很方便

我经常在写 Python 时犯很低级的错误。我会给变量或函数命错名,或向它们传递错误的参数。这样的错误用调试工具可以找出一部分,但这种工具一般需要专门设置。我从来没很方便地配置过 pylint,而且我也不喜欢用那些很重的、配置起来更麻烦的 IDE。

最惨的情况是,你可能会不小心打错变量名,而这种错误又不太容易发现。你的脚本可能会跑好几个小时才遇上这个错误,然后一切都崩溃了,你又得从头开始跑这个脚本。

这种错误大部分都可以靠单元测试检出,但单元测试很少能覆盖 100% 的代码,而且我并不想浪费时间去给一个只用一次的脚本写单元测试。

而带编译器的语言就可以解决以上所有问题。编译器可以检测出你犯的所有低级错误。出于这点原因,我在写长达几百行的代码时,更倾向于使用 Go 这类语言。

开发速度

然而,需要编译的语言的一个缺点是,一般你的开发速度会下降。这点在 C/C++ 和 Java 等语言上体现得尤其明显。
而 Go 是一个非常简单的语言,我发现它的开发速度并没有被拖慢多少。不要误会,我的意思并不是说它比 Python 还快,而是想说,用 Go 语言没有比 Python 慢很多,一般达到使用 Python 开发速度的 85% 还是没问题的。

相对于拥有编译器能避免的那些低级错误来说,我认为牺牲 15% 的开发速度还是很值的。

更好的并行性

你可能已经知道,Go 语言就是为并行而生的。

在我的团队里经常会需要并行程序,因为我们要在 S3 上操作我们数据库中大量的数据。

如果该任务是 IO 密集型的(实际上很多任务都是),我们就可以很容易地部署 Python 线程。但如果任务是 CPU 密集型的,用 Python 就比较不方便了,因为有全局解释器的存在。

我非常享受在 Go 语言中简单代码不用修改就能直接多线程运行的爽快感。不知你在 Python 中有没有遇到过这种问题:直接复制粘贴的多线程代码却完全不工作。在 Go 语言中就不会有此问题。

部署简单

我比较喜欢把所有依赖放在单个二进制文件里。我经常在 EC2 服务器上运行自己的脚本,好让环境更加接近我们在 S3 上的服务器。如果用 Python 的话,我需要保证所有需要的包都在服务器上装好,而且我的同事不能在服务器上装任何可能产生冲突的包。

虚拟环境可以解决大部分问题,但我还是觉得用 Go 语言更方便。

我一般是在 Maclinux 上交叉编译我的代码,将其拷贝到远程服务器上,然后就可以任其运行了。我的代码所需要的所有依赖都在一个二进制文件里。

风格一致

一开始,Go 语言的格式化工具 gofmt 实在是让我抓狂,尤其是它在代码缩进时要求使用 tab 键而不是空格键。我觉得这简直是疯了。

但是我用了一段时间后,就开始“真香”了。写代码时,我在格式上可以天马行空,格式化工具会帮我完成一切。我的所有代码风格都是一致的,即使我是在写不同的项目。这是因为格式化是标准 Go 工具的一个特性。

但我如果想在 Python 中实现这一点,就要费些劲儿了。我需要正确地配置 pylint 工具,并要保证在每一个项目中都使用它。

更便捷的工具

Gofmt 只是 Go 语言众多工具中的一个小例子。所有我喜欢用的编辑器——vscode,vim 和 Sublime Text 中,都有 Go 语言相应的扩展,让我能够方便地享受到 Go 工具的优点。

这样,我就能获得写 Java 时的那种智能体验,却不需要真正使用一个 IDE。我在用 Python 时从未获得过这种体验。

Go 语言当然也有缺点

我每次看到批评 Go 语言的文章时,里面讲的几乎都是 Go 语言对关键特性的缺失,比如泛型。我倒是认为没有泛型没什么影响——你会发现,使用 map 和切片(slice)就能实现多得惊人的操作。但是我在使用 Go 语言的过程中遇到了很多其他问题。

缺乏灵活性

首先,Go 语言可能是我用过的语言里最“固执”的语言了。比如,它除了会强迫你使用 tab 而不是空格键缩进(假设你用了 gofmt 工具),会强迫你使用特定的文件组织结构,还会强迫你在 GOPATH 环境变量中编程,如此等等。这种语言有太多难以改变的特性了。

Go 语言简单易学的原因之一恐怕就是你不能改变这些特性。如果你不愿意将所有首字母大写的变量名 export 一遍,那真是抱歉了。幸运的是,Go 的这些特性倒是没有触犯我的原则底线,但是如果有人认为里面的某些要求根本无法理喻,我也能够理解。

相比之下 Python 就灵活多了。

库支持有点差劲

在这方面把 Go 语言和 Python 做比较有些不公平。Go 的出现比 Python 晚很多,但当我发现有些功能 Go 居然不支持的时候,还是觉得很困惑。我甚至发现 StackOverflow 上很多人 po 出了本应该作为内置功能的代码段,而且大家都需要该功能,纷纷将代码复制粘贴到自己的项目下。这类功能不应该嵌入到语言内部吗?

说到这里,我想到了近几年的两个例子:

给切片排序(幸运的是在 Go 1.8 版本中这点方便多了)
Math.round 只支持整数,不能进行浮点数的取整(比如你想找一个最接近 0.5 的整数,Go 语言就无法完成)。甚至在 Go 1.10 版本之前,根本没有 math.round 函数

当然,这些问题的原因有一部分是 Go 语言没有泛型,另一部分是因为 Go 的开发者们只给 Go 的标准库中添加最最必要的功能。

这两点我都理解,但是在遇到很小的问题却需要自己写代码解决时还是感到烦恼。

希望随着 Go 语言的发展,它的问题会变得越来越少。

--结束END--

本文标题: 再见,Python。你好,Go 语言

本文链接: https://lsjlt.com/news/183275.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 再见,Python。你好,Go 语言
    1、Python 和 Go 都是很好的编程语言,不过各擅胜场。Python 更成熟,库多,适合脚本操作和数据分析,在人工智能领域一家独大。Go 比较年轻,有活力,更擅长并发编程和高可用场景。 2、极客时间目前更多使用了 Go 语言构建后端服...
    99+
    2023-01-31
    你好 语言 Python
  • 今年后,再见Excel,你好python
    用excel超过三年,但放弃excel并开始学习使用python,只花了一年。...
    99+
    2023-06-01
  • 再见,Ubuntu,你好,Manjaro
    作者:Jenny List 译者:明明如月 上周,我撰写了一篇题为《给 Ubuntu 的一封分手信》的文章,纪念我过去 15 年甚至更久时间里一直坚守的Linux 发行版 Ubuntu。Ubuntu ...
    99+
    2023-09-10
    ubuntu debian linux
  • 再见conda,你好Mamba
    如果你平日使用conda下载Python package、构建环境,明明设置了国内源,依旧很慢,很慢,很慢, 是不是很抓狂,有过类似经历,文末点个赞或在看。本期介绍一个高效Python包管理器Mamba: 使用多线程下载reposito...
    99+
    2023-09-01
    开发语言 python
  • GO语言能否帮助你更好地处理自然语言?
    自然语言处理(Natural Language Processing,简称NLP)是人工智能领域中一个受到广泛关注的分支。NLP的目标是让计算机能够理解和处理人类语言,使得计算机能够像人类一样进行语音识别、自动翻译、文本分类、信息检索等任...
    99+
    2023-06-15
    自然语言处理 打包 接口
  • go语言好在哪
    Go语言在众多编程语言中有着自己独特的优势和特点,下面我将详细介绍Go语言的一些优点和好处。1. 简洁易读:Go语言的语法设计简洁清晰,去除了一些冗余和复杂的语法元素,使得代码更易读、易于理解和维护。Go语言强调代码的可读性和一致性,采用了...
    99+
    2023-10-26
    go语言
  • go语言有哪些好处
    这篇文章主要介绍“go语言有哪些好处”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言有哪些好处”文章能帮助大家解决问题。go语言的好处:1、可直接编译成机器码,不依赖其他库;2、静态类型语言,...
    99+
    2023-07-05
  • go语言有什么好处
    go语言的好处:1、可直接编译成机器码,不依赖其他库;2、静态类型语言,但是有动态语言的感觉,写起来的效率很高;3、语言层面支持并发;4、内置runtime,支持垃圾回收;5、简单易学;6、内置了大量的库,特别是网络库非常强大;7、内置强大...
    99+
    2023-05-14
    go语言
  • Go语言响应LeetCode异步编程,你准备好了吗?
    随着互联网的不断发展,异步编程已经成为了现代编程中不可或缺的一部分。对于一些需要执行IO操作的程序,异步编程可以让程序更加高效、快速的执行。而LeetCode则是程序员们刷题的圣地,也是我们提升编程能力的好地方。本文将介绍如何使用Go语言...
    99+
    2023-11-12
    响应 leetcode 异步编程
  • 不再担心落伍,GO语言HTTP实时教程助你实时掌握技能!
    在当今互联网时代,Web应用程序的开发已经成为了一项必不可少的技能。而HTTP协议作为Web应用程序的基础,更是每个开发者都应该掌握的技能之一。而GO语言,则是近年来备受关注的一门编程语言,其简洁、高效的特性备受开发者的青睐。今天,我们就...
    99+
    2023-10-11
    http 教程 实时
  • go语言有什么好的ide
    用于go语言的ide有:1、Goland,旨在为Go开发者提供的一个符合人体工程学的商业IDE;2、LiteIDE,一款专门针对Go开发的集成开发环境;3、VSCode,一个跨平台开源代码编辑器;4、Sublime Text,一个跨平台的文...
    99+
    2023-05-14
    go语言 Golang
  • go语言有哪些好项目
    go语言好项目有Docker、Kubernetes、Etcd、CockroachDB、InfluxDB、Prometheus、Cockpit、Hugo、Moby、Terraform等。详细介绍:1、Docker是当今最流行的容器化平台,它使...
    99+
    2023-07-31
  • go语言有哪些好的ide
    go语言好的ide有GoLand、Visual Studio Code、LiteIDE、Atom和Emacs。详细介绍:1、GoLand,支持代码重构、调试、版本控制、单元测试等功能,提供了全面的项目管理和维护工具;2、Visual Stu...
    99+
    2023-12-13
    ide Golang go语言
  • GO语言在UNIX和Linux下的编程:你准备好了吗?
    随着互联网技术的发展,越来越多的程序员开始将目光投向了GO语言。GO语言是Google公司开发的一种编程语言,它的语法简单、易学、易用,同时还具有高效的并发性能和良好的内存管理机制,因此在UNIX和Linux系统下的编程中也越来越受到开发...
    99+
    2023-06-09
    unix linux 编程算法
  • go语言调用python
    https://github.com/google/grumpy go语言调用python 的github ...
    99+
    2023-01-31
    语言 python
  • 你好c语言代码怎么写
    c 语言代码是使用 c 编程语言编写的用于编写应用程序的文本文件,其结构包括头文件、函数、语句、变量和数据类型。编写 c 代码需要安装编译器、创建源文件、编写代码、编译和执行。示例代码中...
    99+
    2024-04-05
    c语言
  • Go语言学习:常见问题解答
    Go语言作为一种高效、简洁且易于学习的编程语言,受到了越来越多开发者的青睐。然而,在学习过程中,总会遇到一些困惑和问题。本文将针对一些常见的问题进行解答,并提供具体的代码示例,帮助读者...
    99+
    2024-02-23
    学习 go语言 问题解答
  • Go语言支持哪些常见函数?
    Go语言是一门开源的编程语言,由Google开发,在云计算和大数据领域广泛应用。它支持丰富的标准库,提供了许多常见的函数来帮助开发者编写高效、可靠的代码。在本文中,我们将探讨Go语言支...
    99+
    2024-04-02
  • 《Go语言编程算法大数据教程,你准备好了吗?》
    Go语言是一种现代化的编程语言,因其高效性和易用性而备受欢迎。Go语言的编程算法和大数据处理能力也让它成为开发者们的首选语言之一。在本文中,我们将探讨Go语言编程算法和大数据处理的教程,帮助您更好地掌握这一技能。 一、Go语言的基础 Go语...
    99+
    2023-10-26
    教程 编程算法 大数据
  • go语言中好的ide有哪些
    这篇“go语言中好的ide有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中好的ide有哪些”文章吧。用于go语...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作