Go 语言简介

[TOC]

C/C++ 与 Go语言的“价值观”对照

之前看过 白明老师 在GopherChina2017的一篇演讲文章《Go coding in go way》,里面提到C/C++/Go三门语言价值观,感觉很有意思,分享给大家感受一下:

C的价值观摘录

C++价值观摘录

Go价值观

用一句话概括Go的价值观: Go is about orthogonal composition of simple concepts with preference in concurrency(Go是在偏好并发的环境下的简单概念/事物的正交组合).

Go 的底层语言是什么

借用大神的话来说

编译器就是输入源代码输出其他语言源代码的程序

所以这个程序用什么语言实现无所谓

然而,一开始没有go,所以用c实现了一版go编译器,后来go语言存在了,那就可以用go再重写一遍编译器,用c写的编译器来编译这个新的编译器的源代码

然后就成了现在这个样子

你可以找找老版本看看c实现

2015年8月19日,Go语言Go 1.5版发布,本次更新中移除了”最后残余的C代码”

从此 Go 实现了自举

Go 的市场定位

Go语言尤其适合编写网络服务相关基础设施,同时也适合开发一些工具软件和系统软件。

——《The Go Programming Language》

Go 语言能吞食的一定是 PaaS 上的项目,比如一些消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等等,没有复杂的业务场景,也到不了特别底层(如操作系统)的中间平台层的软件项目或工具。而 C 和 C++ 会被打到更底层,Java 会被打到更上层的业务层。这是左耳朵耗子的一个判断。

用上面的标尺来量一下 Go 语言的杀手级应用 Docker,你会发现基本是一样的。

学习文档