全文共2623字,预计学习时长9分钟

图源:dailybtc

很多软件工程师视Python为最喜爱的语言之一,工作生活都和它死死绑定在一起。但Google, Uber, Dropbox, Soundcloud, Slack, 和Medium的软件工程师并不是这样。长期以来,顶级企业的程序员们一直迷恋于另一种语言。

尽管大部分开发者还在使用Python,但无论是对于API、网页服务,或是数据处理,高级员工都已经增加了对于Golang(Go)的使用,它的表现棒极了!

由先驱建立

Go是由谷歌的一个全明星三人组发明的:

· Rob Pike参与开发了Unix环境,并参与创建了Limbo编程语言。

· 有了Ken Thompson,这个团队就有了Unix和B语言(C语言的前身)的发明人。

· Robert Griesemer是谷歌的V8 JavaScript机器的负责人之一,同时也是谷歌创造的另一门语言——Sawzall的主要开发者。

谷歌最初正是用Python编写的,但是在2007年前后,工程师们正在寻找一种更好的语言来执行谷歌的主要任务。

Rob Pike在2012年的一次篇演讲中提到了他们遇到的问题:

图源:unsplash

· 构建缓慢:生成新代码需要很长时间。

· 依赖路径不可控:你是否曾经试图安装一个软件包,结果却发现你不得不安装至少5个其他的依赖路径和无数的子依赖路径来让它运行?是的,即使是谷歌人也有这个问题。

· 版本偏离:由于到处都是重复的代码,工程师可能只会更新原始代码片段的一个版本,而忘记其他版本。因此,最终得到的版本既包含新代码,也包含旧代码。

· 编写自动工具较困难:编写自动写代码的程序是可能的——事实上,大多数程序在某个阶段都会这样做。但在现代编程语言中,这仍然很难实现。

· 每个程序员都使用语言的不同子集:对于Python,一个开发人员可能使用numpy包,另一个更喜欢scipy包。诸如此类,当程序员想要将他们的代码混合到一个包中时,情况就会变得混乱。

· 程序理解能力差:那些说自己一读代码就懂的人是在撒谎,它不是一个简单的“Hello World”程序。而且代码的文档通常帮不上什么忙——在大多数情况下,它甚至不存在,或者被编得很糟糕。

· 重复操作:你是否曾经从程序的某个部分复制一段代码?这是不好的做法。但大多数编程语言都使其易于实现。

· 更新成本高:在上面描述的这种混乱情况下,更新软件需要花费大量的时间和脑力。

· 跨语言构建:Python适合于中小型脚本,c++适合于复杂的程序,Java适合于web开发,Haskell适合于有惰性但稳健的代码。结果是,一个程序常常包含许多不同语言的代码片段。但是为了编译、调试和保持简洁,用一种语言编写程序要好得多。

图源:unsplash

于是三人组开始设计一种干净、简单、易读的语言。一种可以消除或至少减轻软件工程中这些常见问题的语言。

一门精简的语言

这些常见问题的根源在于现代语言的复杂性。想想Python或C——你有没有试着阅读过整个文档?祝你好运。相比之下,Go最大的特点就是简单。这并不意味着你不能用它来构建复杂的代码。但Go考虑到了,不要有引入复杂性却不能解决问题的特性。

例如,Go不像其他面向对象语言那样有类。作为其他语言中常用功能,类可以使一个对象继承另一个对象的属性。

问题是,如果试图改变一个对象的结构而不改变其他对象的结构,就会破坏代码。Go有一个被称为struct替代方法,其更偏向组合而不是继承。

Go的其他主要特征是:

· 类型安全:在C语言中,使用光标做任何事情——包括使程序崩溃。Go不会让你这样搞砸东西的。

· 正交性:这意味着如果在代码中更改一个对象,其他对象不会因此而更改。与C语言不同的是,比如,如果你改变了一个变量,那么其他的变量也会随之改变。Go是正交的,因为它使事情更简单。

· 最小化:在Go中,只有一种方法来编写代码。而Python有无数种方法来编写一个东西!

· 可读性高:和Python一样,Go会把可读性放在第一位。因此它相比大多数语言来说对新手更友好,也使维护代码更容易。

· 文档化:尤其对于初级开发人员,他们觉得为了使别人可以使用代码而写一些关于代它的简介是很乏味的。使用Godoc,这个过程会比大多数语言更加自动化,开发人员不需要浪费宝贵的时间来记录他们所做的事情。

· 实用性:重要的东西应该易于编写代码,即使这意味着其他事情不可能在Go中完成。逻辑是,你希望通过使重复的任务变得快速和简单来提高开发人员的效率。如果有更复杂的问题他们可以用另一种语言来写。

或许这些听起来毫无创意,从某种意义上说,确实如此,这不是一种带有时髦特征的语言,Go不是一种用来探索和研究的语言。

图源:unsplash

但神奇之处正在于此,当你尝试着去创造一些能运行的东西的时候,当你在一个团队中,有许多不同背景的人在同一个代码上工作的时候,当你厌倦了其他语言带来的混乱的时候,Go能救你于水火。

图源:Golang website.

日益繁荣的社区

由于其简单性,Go是当今存在的最具协作性的语言之一。过去程序员们总是坐在自己的小隔间里,从不与别人见面,这样的时代已经一去不复返了。

现在,我们有StackExchange来解决所有的编码问题。我们有Slack,Zoom,Google Meet等来和我们的团队保持联系。但现代语言仍然是为小隔间里的小书呆子量身定做的。

Go改变了这种局面。尽管比Python晚了20岁,但它拥有一个充满活力的社区。他们将尊重、开放和友好置于行为准则之上,虽然其他语言,如Python或C,也有类似的社区声明,但对这些基本价值观的强调较少。

因此,社区在Go年度调查中扮演着明确的角色也就不足为奇了

有关社区和领导力的问题 | 图源:2019

数据不言自明

根据2019 Go Survey,谷歌的语言主要用于网站开发、网络和系统编程。Python的前景看起来与之非常相似:

Python的使用数据 | 图源:2019 Python

唯一显著的区别是有多少Python用于数据分析和机器学习。在这些领域,其他热门的新语言也正在涌现。

你可以看到许多Python的用法都可能被Go所取代,包括46%的网络开发46%,37%的系统管理和DevOps中,以及19%的网络编程中。即使你认为许多开发人员完成了所有这三种工作,至少一半的Python支持者正在做他们在Go中可以做的事情。

事实上,开发人员已经意识到Go提供的巨大潜力。根据Hackerrank的数据,在2019年,大约有三分之一的程序员想学Go。

接下来的热门语言 | 图源:Hackerrank.

由于Go非常容易学习,我们应该会在未来几年看到从Python到Go的转变。虽然对于大多数公司,尤其是不像Dropbox或Medium那样庞大有钱的公司来说,把所有的代码重写用Go编写将是非常昂贵的。但对于新项目来说,你至少应该尝试一下。

给彼此一个机会,给未来一个可能,何不去试试Go呢?

留言点赞关注

我们一起分享AI学习与发展的干货

编译组:马梦瑶、孙梦琪

如转载,请私信小芯,遵守转载规范

python语言发明者 google_谷歌的语言何以战胜Python?50%的人都应该立即学习Golang...相关推荐

  1. python语言发明者 google_看看9种编程语言的发明者是怎么说的

    从Node.js到C++,看他们的发明者是如何评价他们的语言的未来. Ryan Dahl:Node.js 问:它的主要优势是什么? Dahl:Node与其他的语言有一点明显的区别,就是处理I/O.所以 ...

  2. 谷歌AI专家爆料:90%的人都不知道,写不出好代码,是输在了这点上!

    工作压力大.大牛实力碾压,.外行人的偏见......2020年,程序员的心很累!而Python和AI的初学者,心更累! 最近几年,我看过市面上很多 Python和人工智能的教程和书籍,它们大都这样讲: ...

  3. 谷歌 AI 专家爆料:90% 的人都不知道,编程能力差,其实都是输在了这点上!...

    最近几年,我看过市面上很多 Python和人工智能的教程和书籍,它们大都这样讲: 先从 Python 人工智能的历史讲起开始,再介绍的基本语法规则,Python 的 list, dict, tuple ...

  4. 谷歌AI专家爆料:90%的人都不知道,编程能力差,其实都是输在了这点上!

    最近几年,我看过市面上很多 Python和人工智能的教程和书籍,它们大都这样讲: 先从 Python 人工智能的历史讲起开始,再介绍的基本语法规则,Python 的 list, dict, tuple ...

  5. python篮球弹跳训练方法_弹跳训练的正确方法,90%人都不知道|NBA球队弹跳训练解密...

    原标题:弹跳训练的正确方法,90%人都不知道|NBA球队弹跳训练解密 篮球比赛中,抢篮板球是最重要的基本功之一,除去意识.卡位.配合等因素外,球员的弹跳是基础中的基础,因此必须加强弹跳力的训练. 这里 ...

  6. 为什么说python是世界上最好的语言-Python才是世界上最好的语言

    [文末领取限免课程] Python是人工智能的未来. 前不久中国经济学会(CEA)发布了顶级编程语言交互排行榜:Python超越Java高居首位. 而且随着大数据和人工智能的发展,Python受到了越 ...

  7. c语言基础知识入门(c语言基础知识入门代码)

    C语言怎么入门 初学C语言的基本 一开始 由算法开始,毕竟你以前学的算法和c有所不同 然后开始学程序流程控制 接着学内存处理机制 提高深入编程 然后与其他软件 如sql web 联系起来学习 后面的 ...

  8. 学会python编程容易吗-学习武汉Python编程培训容易吗?别人都是怎么学习的?

    作为人工智能时代的首选语言,Python有着无可比拟的优势,吸引了越来越多的人前来学习.那么,学习武汉Python编程培训容易吗?那些顺利高薪就业的人都是怎么学习武汉Python编程培训的呢?下面,千 ...

  9. python语法基础语法_Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

最新文章

  1. redhat7企业版linuxlinux基本操作
  2. cufflinks基于QuantFig绘制高级金融图
  3. python播放视频
  4. SEE Conf 2021 如期而至,体验科技极致美
  5. C语言经典例80-猴子分桃
  6. 《Ray Tracing in One Weekend》——Chapter 10: Positionable camera
  7. 专题八:MATLAB图形用户界面设计
  8. echarts+3d饼图
  9. 十一、 人工变量之 “大M” 法
  10. sola染毒文件恢复工具
  11. 软件架构详解(附图)
  12. 纯JS省市区三级联动(行政区划代码更新至2015-9-30)
  13. 电脑文件夹怎么批量重命名
  14. 求多项式浮点java思路,求多项式函数实数根的方法
  15. Qt: 窗口的显示和隐藏
  16. 基于Android的本地电子书阅读器的设计与实现Ebook(终章)
  17. (Talking face) EVP
  18. 百度云主机(配置、调试环境)文件上传(快速建站,实现首页访问) - FTP篇
  19. 2021-11-30 vue移动端卖座电影项目(四) 当前项目代码
  20. 所谓的“哑巴英语”对中国是利大于弊(收藏)

热门文章

  1. mysql中的强制索引_MYSQL中常用的强制性操作(例如强制索引)
  2. postman测试 上传下载文件
  3. Smarty模板技术学习
  4. 7套干货,Python常用技术学习知识图谱!!(史上最全,建议收藏)
  5. C++常见面试题(2019年校招总结)
  6. pandas 读写 excel
  7. Scrapy源码阅读分析_1_整体框架和流程介绍
  8. JSON.parse()解析单引号错误的问题
  9. mysql update nowait_MySQL 8.0新特性 -- nowait以及skip locked
  10. date日期相减 java_一个小小的Java程序