Go语言介绍
一、GO语言简介
Go(又称Golang
)是Google
开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
2009年11月10号
Go语言正式成为了我们开源编程语言中的一员,同时Go语言又被称为云时代的C语言,其地位可以想象,此时肯定会有同学会问:世界上这么多编程语言难道还不够吗?我们程序员就要掌握几十种编程语言或者上百种吗?
其实不是的,Go语言的产生主要是为了能让我们程序员再编程上有更高的一个效率,举例:
如果我们现在要开发一个爬虫,但是我们用c语言的话代码可能要写几百行,这样的话代码量太多,用python的话虽然代码量少但是执行速度慢,我们执行这个程序,c语言执行可能只要0.5秒,python的话可能要用到5秒或者10秒,所以就有了这个Go语言。
Go语言拥有了c语言的执行速度又拥有了python的快速开发。
二、作者介绍
相信大家肯定很好奇到底是什么样的人才能开发的出来Go语言,接来下我就来给大家介绍一下。
从左到右分别是 :
-
罗伯特·格瑞史莫(Robert Griesemer): 曾为谷歌的V8 JavaScript引擎和Chubby开发代码。现任Go作者之一一职。作为行业享有盛名的大咖,Robert Griesemer行事低调,对工作热情饱满,多次受邀作为嘉宾出席各类大会,并发表了精彩演讲。
2015年04月25日,Robert Griesemer受邀参加了在浦东新区博云路2号浦东软件园的《GOPHER CHINA 2015上海大会》,并发表了精彩演讲 -
罗勃·派克(Rob Pike): 罗布·派克是Unix的先驱,是贝尔实验室最早和Ken Thompson以及 Dennis M. Ritche开发Unix的猛人,UTF-8的设计人。他还在美国名嘴David Letterman的晚间节目上露了一小脸,一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的是,罗伯伯还是1980年奥运会射箭的银牌得主。他还是个颇为厉害的业余天文学家,设计的珈玛射线望远镜差点被NASA用在航天飞机上。Rob Pike AT&T Bell Lab前Member of Technical Staff ,现在google研究操作系统。
-
汤普逊(Ken Thompson): Ken Thompson图灵奖得主,C语言前身B语言的作者,Unix的发明人之一, 操作系统Plan 9的主要作者。 共同开发了UTF-8。
三、为什么设计GO语言?
既然都已经有了这么多编程语言为什么还要开发一个Go语言呢?
当时设计Go的目标是为了消除程序各种缓慢和笨重、改进各种低效和扩展性,解决这些当时Google
开发遇到的问题。
- 大量的
C++
代码,同时又引入了Java
和Python
。 - 成千上万的工程师。
- 数以万计行的代码。
- 分布式的编译系统。
- 数百万的服务器。
四、为什么选择使用Go语言,或者说Go语言有哪些特点?
在编程界,编程语言可谓是百花争鸣,追求运行速度可以用C
,追求开发速度可以用Python
。作为一个新起之秀,Go
语言究竟有哪些优势,能让吸引这么多忠诚的追随者?以下从几个部分来谈谈Go
语言的优势。
1. 上手难度低:
Go
语言的语法有C
和Python
的影子,如果你之前学习过其中一种语言,你会发现他们是非常相像的,所以只要有过编程基础的朋友,学习Go
语言基本上没有什么技术难点。
2. 快:
快是指执行效率和开发效率。作者在开发Go
语言时候,就有意把Go
的执行效率和C
语言进行比较,因此执行效率是除C
以外其他语言难以媲美的。另外,在语法设计方面,也尽量设计得和Python
是非常相像,所以开发效率也是极高。在国内,已经有很多中小型公司的技术栈就是基于Go
语言实现的,因为他的开发效率可以满足创业公司产品快速迭代的需求,并且性能也是很高的。
3. 出身名门:
Go
语言是由谷歌公司负责牵头,召集了三位人类巅峰的计算机大牛负责开发,其中Robert Griesemer参与开发Java HotSpot
虚拟机,Rob Pike贝尔实验室Unix
团队成员,Ken Thompson贝尔实验室Unix
团队成员,C
语言创始人之一。阵容豪华,背景强大,可以大胆放心的在公司中使用。
4. 组合:
支持当前所有的编程方式,过程式编程,面向对象编程,函数式编程,开发起来自由高效。任何语言的程序员转Go
,都可以找到自己喜欢的编程方式。
5. 工具箱:
拥有超多超好用的第三方库,如果你用Go语言写爬虫,能拥有C
语言的爬行速度又能拥有Python
那样的少量代码。也是借鉴了Python
的那句:人生苦短,快用Go
。
6. 技能释放:
在辛辛苦苦写完一套项目后,如何部署又是一个大问题。而我们的Go
语言项目在编译后会生成一个可执行的文件,当我部署时只要把这个文件放上去即可,极为方便,大大的提高了运维的效率,技能释放更加迅速。
7. 天生神力:
天生就支持并发,相比于Python
、PHP
等编程语言来说,Go
天然的就更适应大型项目的开发。
五、GO语言的应用范围
-
服务器编程,以前你如果使用
C
或者C++
做的那些事情,用Go
来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。 -
分布式系统、数据库代理器等,例如
Etcd
。为分布式系统而生
这一点,在那些用Golang
打造的工具和软件中显而易见。Docker
,作为一种微服务的容器,也是用Golang
打造。 -
网络编程,这一块目前应用最广,包括
Web
应用、API
应用、下载应用,而且Go
内置的net/http
包基本上把我们平常用到的网络功能都实现了。 -
内存数据库。
-
云平台,目前国外很多云平台在采用Go开发。
-
区块链,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用。(区块链的服务器云存储那部分就是使用go开发的)
六、哪些公司在使用GO语言?
随着Go语言的发展趋势越来越好现在国内国外很多知名公司都有使用Go语言,那到底有哪些公司呢?以下做一个简短描述:
-
国外的有:
- Docker
-
国内的有:
- 腾讯
- 百度
- 阿里云CDN
- 京东
- 小米
- 360
现在很多公司都开始尝试Golang
,除了上面提到的,还有美团、滴滴、新浪以及七牛等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang
特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。