惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
博客园 - 司徒正美
A
About on SuperTechFans
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
爱范儿
爱范儿
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
F
Fortinet All Blogs
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
D
Docker
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Jina AI
Jina AI
H
Help Net Security
量子位
IT之家
IT之家

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
一起来学 Go --(1)背景与特点
微信公众号 · 2019-05-28 · via 陈少文的网站

Please enable Javascript to view the contents

1. Go 语言产生的背景

C/C++ 的发展速度没有跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言。为了解决这一问题,Google 开发了一门新的编程语言 – Go 。

Google 当时的现状:

  • 项目中主要使用C++,也有 Java 和 Python
  • 开发人员众多
  • 代码量大
  • 分布式编译
  • 服务器数量达百万级别

Google 当时面临的问题:

  • 编译慢
  • 依赖复杂
  • 每个工程师只用了一个语言的一部分特性
  • 代码难以维护,可读性差,文档不清晰
  • 变更功能的成本越来越大
  • 交叉编译困难

Google 设计 Go 的初衷是为了消除各种缓慢和笨重、改进各种低效和扩展。Go 主要面向的是开发大型系统的人,强调解决工程问题。

2007 年 Google 发起 Go 项目,2009 年开源项目,2012 年发布第一个正式版本,之后每半年一个版本。在 Google 内部,一开始 Go 作为一个 20% 的项目运作,也就是员工利用 20% 的空余时间来参与开发。

Go 项目的三位主要领导者对系统编程语言、操作系统和并行都有着深刻理解:

  • Rob Pike,Unix、UTF-8、Plan9 的作者
  • Ken Thompson,B语言、C语言的作者、Unix之父。
  • Robert Griesemer,参与开发 JavaScript 执行引擎 V8,Java HotSpot 虚拟机等。

这样强大的创始团队阵容,再加上 Google 制造的光环 ,给 Go 项目带来了极高的人气。

2. Go 语言的适用场景

Go 适用的一些场景:

  • 服务器编程,处理日志、数据打包、虚拟机处理、文件系统等
  • 分布式系统,数据库代理、中间件等
  • 网络编程,Web 应用、API 应用、下载应用、游戏后端等
  • 海量存储,Influxdb、Tidb 等
  • 云平台,CloudFoundry 等

使用 Go 的国外公司有 Google、Docker、Apple、Cloud Foundry、CloudFlare、Couchbase、CoreOS、Dropbox、MongoDB、AWS 等。

使用 Go 的国内公司有头条、阿里云 CDN、百度、小米、七牛、PingCAP、华为、金山软件、猎豹移动、饿了么等。

3. Go 语言的特点

Go,又称 Golang,是 Google 开发的一种静态强类型、编译型,并发型,并具有垃圾回收功能的编程语言。Google 的很多工程师都是 C 系的,所以 Go 和 C++、Java 、C# 一样属于 C 系。

在声明和包的设计方面,Go 受到 Pascal、Modula 和 Oberon 系语言的影响;在并发原理的设计上,Go 从同样受到 Tony Hoare 的通信序列进程 CSP 理论影响的 Limbo 和 Newsqueak 的实践中借鉴了一些经验,并使用了和 Erlang 类似的机制。

Go 语言的优点:

  • 部署简单,编译之后是一个静态可执行文件,除了 glibc ,没有其他外部依赖
  • 并发性好,Goroutine 和 Channel 从语言层面支持并发,编写高并发的应用不需要考虑锁机制,以及由此带来的各种问题
  • 良好的语言设计,自带完善的工具链,例如 gofmt 可自动排版代码
  • 执行性能良好,适合编写瓶颈业务,非常节省内存
  • 丰富的标准库,内置大量的库,可以直接使用

微信公众号