Go语言是怎样诞生的?

Go语言的创始人有三位,分别是图灵奖获得者、C语法联合发明人、Unix之父肯·汤普森
(Ken Thompson)、Plan 9操作系统领导者、UTF-8编码的最初设计者罗伯·派克(Rob Pike)、
以及Java的HotSpot虚拟机和Chrome浏览器的JavaScript V8引擎的设计者之一
罗伯特·格瑞史莫(Robert Griesemer)。

他们可能都没有想到,他们三个人在2007年9月20日下午的一次普通讨论,
就这么成为了计算机编程语言领域的一次著名历史事件,
开启了一个新编程语言的历史。

Go是否值得我们学习?

1、基于21世纪互联网的C语言。

2、如今的Go语言已经逐渐成为了云计算时代基础设施的编程语言。

3、云计算基础设施软件的大部分流行和可靠的作品,比如:Docker、
Kubernetes、Prometheus、Ethereum(以太坊)、Istio、CockroachDB、
InfluxDB、Terraform、Etcd、Consul等等。

4、Go除了在云计算基础设施领域,拥有上面这些杀手级应用之外,
Go语言的用户数量也在近几年快速增加。

5、Go语言项目技术负责人罗斯·考克斯甚至还专门写过一篇文章,
全世界范围的Gopher数量从2017年中旬的最多100万,增长到2019年11月的最多196万,
大概每18个月翻一番。庞大的Gopher基数为Go未来的发展提供持续的增长潜力和更大的想象空间。

Go 语言的核心优势

1、 高速的效率
Go 语言在保证了快速编译的同时,也保证了高效的开发效率和程序运行性能。
开发过程中相较于 Java 和 C++ 呆滞的编译速度,Go 的快速编译时间是一个主要的效率优势。

2、 易学习,成本低
Go 语言语法简单,包含了 类C 语法。因为 Go 语言容易学习,所以一个普通的大学生,
只要有基础的 C 语言基础,花几个星期就能写出来可以上手的、高性能的应用。

3、 强大的标准库
Go 里面的标准库基本上已经是非常稳定了,特别是网络层、系统层的库非常实用。
Go 语言的 lib 库麻雀虽小五脏俱全。
Go 语言诞生在互联网时代,因此它天生具备了去中心化、分布式等特性,
具体表现之一就是提供了丰富便捷的网络编程接口。

4、 简单的高并发
Go 语言的 Goroutine 和 Channel 这两个神器简直就是并发和异步编程的巨大福音。
像 C、C++、Java、Python 和 JavaScript 这些语言的并发和异步方式太控制就比较复杂了,
而且容易出错,而 Go 解决这个问题非常地优雅和流畅。

5、 出身名门、血统纯正
从 Go 语言的创造者,到 Go 语言的富爸爸 Google 公司,那可以说是占尽了先机。
Google 在业界的知名度和实力自然不用多说,Google 公司聚集了一批牛人,
在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。

6、 规范性
Go 语言带来的代码规范之外,还有强大的编译检查、完整的软件生命周期工具,
具有很强的稳定性。Go提供了软件生命周期(开发、测试、部署、维护等等)
的各个环节的,如 go tool、gofmt、go test。

Go语言的使用者们
Google
这个不用多做介绍,作为 Go 语言的富爸爸,当仁不让。

Facebook-Facebook 也在用,为此他们还专门在 Github 上建立了一个开源组织 facebookgo,大家可以通过访问查看 facebook 开源的项目。

腾讯
腾讯作为国内的大公司,还是敢于尝试的,尤其是 Docker 容器化这一块,他们在 2015年 已经做了 docker 万台规模的实践。

阿里-阿里巴巴具体的项目不太清楚,不过听说其系统部门、CDN 等正在招 Go 方面的人。
京东-京东云消息推送系统、云存储,以及京东商城等都有使用 Go 做开发。

小米-小米对 Golang 的支持,莫过于运维监控系统的开源。
此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用 Golang。
360-360对 Golang 的使用也不少,一个是开源的日志搜索系统 Poseidon,托管在 Github 上。

更多技术内容关注 ---> 

go语言学习笔记-初识Go语言的更多相关文章

  1. Go语言学习笔记(一) [Go语言的HelloWorld]

    日期:2014年7月18日   1.简介     Go 编程语言是一个使得程序员更加有效率的开源项目.Go 是有表达力.简 洁.清晰和有效率的.它的并行机制使其很容易编写多核和网络应用,而新奇的类型系 ...

  2. C语言学习笔记一---C语言概述

    一.编程语言与解释语言 1.程序的执行 a.解释:借助一个能试图理解程序的程序,使计算机按要求执行你自己写的程序 b.编译:将所写程序翻译为机器语言写的程序,使计算机按要求执行你自己写的程序 2.两者 ...

  3. C语言学习笔记01——C语言概述

    作者:Eventi 出处:http://www.cnblogs.com/Eventi 欢迎转载,也请保留这段声明.谢谢! 1 C语言的起源 1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritc ...

  4. 【C语言学习笔记】C语言函数执行成功时,返回1和返回0,究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会 ...

  5. R语言学习笔记1——R语言中的基本对象

    R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...

  6. C语言学习笔记:15_c语言中的进制操作.c

    /* * 15_c语言中的进制操作.c * * Created on: 2015年7月5日 * Author: zhong */ #include <stdio.h> #include & ...

  7. C语言学习笔记---2.C语言数据类型

    1.C语言基本数据类型 1.1 int类型 int类型是有符号整型,即int类型的值必须是整数,可以是正整数.负整数或零.其取值范围依计算机系统而异.一般而言,储存一个int要占用一个机器字长. 声明 ...

  8. C语言学习笔记---1.C语言概述

    1.典型C程序结构 2.C程序细节 2.1#include指令和头文件 #include这行代码是一条C预处理器指令(preprocessor directive).通常,C编译器在编译前会对源代码做 ...

  9. C语言学习笔记 (008) - C语言字符串操作总结大全(超详细)(转)

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

随机推荐

  1. 在Java中==的一个坑

    观察下面代码,输出结果是什么? public static void main(String[] args) { Integer p = 10000; Integer q = 10000; Syste ...

  2. 不care工具,在大数据平台中Hive能自动处理SQL

    摘要:有没有更简单的办法,可以直接将SQL运行在大数据平台? 本文分享自华为云社区<Hive执行原理>,作者: JavaEdge . MapReduce简化了大数据编程的难度,使得大数据计 ...

  3. Linux根目录下各文件目录的作用

    bin        用户二进制可执行文件    boot        系统启动引导文件    dev[device]        系统中使用的外部设备,但不是放的外部设备的驱动.一个访问这些外部 ...

  4. Django-ORM-连表正反操作

    一.A表男生,B表女生,C表关系 1通过A表查与某个男生有关系的所有女生 思想1:在A表中确认男生后,通过反查到C表,获取相关内容(QuerySet),然后再跨到B表获取所有女生信息. obj=mod ...

  5. CentOS 8迁移Rocky Linux 8手记

    前言 由于CentOS 8的支持已经到期了,.NET 6也不支持了,然后也无法升级,导致使用起来已经非常不便,无奈只有迁移服务器这个选项了. 选择发行版本一直是一个比较头疼的问题,首先我不是专门运维的 ...

  6. 将VScode添加至右键菜单

    首先展示下最终效果: 右击单个文件: 右击文件夹: 操作流程: 1.右击VScode快捷方式查看属性,找到快捷方式对应的目标路径 2.随便找个地方新建个XXX.reg的注册表脚本文件,文件名叫啥都可以 ...

  7. 使用fastai训练的一个性别识别模型

    在学习了python中的一些机器学习的相关模块后,再一次开始了深度学习之旅.不过与上次的TensorFlow框架不同,这一次接触的是fast.ai这样一个东西.这个框架还不稳定,网上也没有相关的中文文 ...

  8. Oracle 常用运维命令整理

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 一.oracle建库与删库命令 (1)oracle11g ...

  9. [Java反序列化]jdk原生链分析

    jdk原生链分析 原文链接 作为jdk中目前发现的原生链,还是有必要要分析这个用法的.全文仅限尽可能还原挖掘思路 JDK7u21 在很多链中,TemplatesImpl一直发挥着不可或缺的作用,它是位 ...

  10. HTML区块

    1.HTML 可以通过 <div> 和 <span>将元素组合起来. 2.HTML <div> 元素 HTML <div> 元素是块级元素,它可用于组合 ...