为什么需要Go这样一个新编程语言?

开发 后端
Go语言最早并不是一个Google的正式项目,而是作为一个“20%”的项目出现,直到2009年才以开源的方式面向大众,目前Go Team有稳定的发布周期,大约半年一个新的版本,目前最新为1.9版本。

Go语言最早并不是一个Google的正式项目,而是作为一个“20%”的项目出现,直到2009年才以开源的方式面向大众,目前Go Team有稳定的发布周期,大约半年一个新的版本,目前***为1.9版本。

Go语言的出身可以说是非常豪华的,最早对Go语言的讨论是由罗伯特·格瑞史莫、罗伯·派克和肯·汤普逊发起的,主要是为了解决C++中出现的问题而发起的项目。肯·汤普逊是C语言和Unix的***,罗伯特·格瑞史莫参与设计了Java的HotSpot虚拟机和Chrome浏览器的JavaScript V8引擎,罗博·派克在大名鼎鼎的Bell Lab任职多年,参与了Plan9操作系统、C编译器以及多种语言编译器的设计和实现。

Go语言从2009年开源到现在吸引了很多开发者的注意,分别获得了2009年和2016年的TIOBE之星,如果说2009年那一次是因为Google的影响,那2016年这一次绝对是自身实力的厚积薄发,如今已是2017年的下半年,读者见到本书会在18年年初。

在互联网蓬勃发展的今天,越来越多的编程语言涌入到企业开发中来。Go语言作为一个新生代的编程语言同样也被开发人员所追捧,但由于Go语言的编程资料很少很多人不知道该如何去入门。即使找到部分资料,但是不够系统。正所谓知识来源于实践,本书追随由浅入深、系统讲解这一本质特点带领读者真正掌握和运用Go语言的程序设计特点,做到融会贯通。

为什么需要Go这样一个新编程语言?

传统的语言如C++,大家花费太多时间来学习如何使用这门语言,而不是如何更好的表达写作者的思想,同时编译花费的时间实在太长,对于编写-编译-运行这个链条来说周期太长。动态语言如Python,由于没有强类型的约束,很多问题需要在运行时发现,这种低级错误更应该交给编译器来发现。同时有如下趋势:

  • 人力成本越来越高;
  • 机器越来越便宜;
  • 机器的性能越来越厉害;
  • 在开发效率和运行速度上达到平衡;

这就是Go语言的诞生背景。

Go的哲学思想

简化这门语言必是一门更大的成就 -Rob Pike

Go的思维方式

  • 最小心智负担原则;
  • 最小特性;
  • 最小惊异;
  • 最少犯错既会;

Go语言在工程上的设计

  • Go在工程上的设计可谓体贴入微,没有依赖地狱,甚至是glibc;
  • 编译一次,随处拷贝,部署极为方便;
  • 交叉编译只是一个环境变量的问题;

Go语言的并行和并发

  • 并发(concurrent)不是并行(parallel)
  • 例:node.js具有并发的能力,但不能充分利用多核
  • 写出一个能充分利用多核的程序需要很深的系统编程积淀
  • 得益于优秀的设计,Go可以轻松地写出跑满所有CPU的程序

Go语言开发的项目

  • Docker,火热的容器化技术;
  • Kubernetes,Goole Borg的开源实现;
  • Etcd, 类似zookeeper的高可用key-value存储;
  • TIDB, 国人开发的Google spanner的开源实现;
责任编辑:未丽燕 来源: 程序师
相关推荐

2014-07-02 09:56:33

2014-12-08 09:47:48

Go

2018-05-30 14:49:51

编程语言API语法

2012-04-11 09:19:08

Haskell编程

2022-12-12 07:30:59

编程语言架构

2020-04-07 16:12:56

Go编程语言开发

2015-10-19 09:23:44

新编编程女人

2014-02-11 10:09:37

中小企业UC

2022-03-03 08:02:55

数据集成平台

2010-07-15 16:21:22

编程语言

2024-01-02 10:38:22

Go语言数组

2016-09-27 21:25:08

Go语言Ken Thompso

2018-05-02 12:34:48

2014-06-04 10:52:56

Swift苹果iOS

2021-02-23 10:19:46

编程技能开发

2012-03-05 13:08:35

编程

2023-03-06 08:01:25

structGo语言

2012-05-19 22:17:30

Android

2022-01-17 16:09:43

Go语言开发

2021-04-26 09:33:46

Go Iota语言
点赞
收藏

51CTO技术栈公众号