Golang简史及常见的开发工具介绍

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Golang概述

1.什么人适合学习Go语言

- 有兴趣学习Go语言的课程的同学;

- 纯零基础用Go语言入门的同学;

- 已经有其他语言功底的同学;

- 云计算,云原生,DBA,容器运维,运维开发工程师的同学;

2.Go语言发展历史

Go(又称Golang)是Google的Robert Griesemer,Rob Pike及Ken Thompson开发的一种计算机编程语言。

Go语言是Google推出的一种的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。

Google首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。派克表示,和今天的C++/C一样,Go是一种系统语言。

他解释道,"使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。"
	- 计算机硬件技术更新频繁,性能提高很快,目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU多优势提升软件系统性能;
	- 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言;
	- 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一系列困扰需要解决。


Go语言的吉祥物是一个金花鼠(Gordon),由罗布派克(Rob Pike)的夫人设计的。

- golang创始人
	- Ken Thompson:
		- 1969年: 
			加入贝尔实验室,在参数Multics(多路信息计算)开发期间,创造B语言。
			并用一个月的时间用B语言开发了全新的操作系统UNICS,后来更名为我们熟悉的UNIX操作系统;
		- 1971年:
			和丹尼斯·利奇(Dennis Ritchie)一起共同发明了C语言。
		- 1973年:
			和丹尼斯·利奇(Dennis Ritchie)使用C语言重写了UNIX,并安装PDP-11的机器之上。
		- 1983年:
			美国计算机协会将图灵奖授予汤普森。
		- 2000年:
			离开贝尔实验室,已退休的汤普森成为了一名飞行员。
		- 2006年:
			加入Google工作。
		- 2007年:
			64岁的高龄,与Rob Pike和Robert Griesemer主导了Go语言的开发。

	- Rob Pike
		- Go语言项目总负责人;
		- 贝尔实验室Unix团队成员,参与的项目包括Plan 9,Inferno操作系统和Limbo编程语言;
		- UTF-8字符集规范唯二的发明人之一,另一位是Ken Thompson;
		- <<UNIX编程环境>>和<<程序设计实践>>这两本书的作者之一;
		- 第22届莫斯科夏季奥运会射箭项目的银牌得主;
		- 业余天文学家,设计的伽马射线望远镜差点被NASA用在航天飞机上;
		- 他的媳妇Renee French就是Go语音吉祥物的设计人;
		
	- Robert Griesemer
		- 参与V8 JavaScript引擎的开发
		- 参与Java HotSpot虚拟机的研发
 


- 起源:
	- 2007年,Google的几位大牛正在用C++开发一些比较繁琐但是核心的工作,主要是分布式集群,大牛觉得很闹心;
	- 此时C++委员会来他们公司做技术演讲,说C++将要添加35个新特性,大牛心里飘过一万个CNM,"C++特性还不够多吗";
	- 于是Rob Pike说要不自己搞个简单一点的语言吧,首先名字得简单好记,大腿一拍就叫"go";
	- 把事情搞复杂很容易,把事情搞简单才更深刻;
	
- 发展:
  - 2007年09月21日,开始雏形设计;
  - 2009年10月30日,Rob Pike宣布了Go语言的存在;
  - 2009年11月10日,以完全开源的方式公布了Linux和Mac OSX上的版本,11月22日公布了Windows版本;
  - 2010年01月08日,当选2009年内年度语言;
  - 2010年05月,谷歌投入使用;
  - 2011年04月,Google开始抽调员工全职开发Go语音,并于5月宣布Google APP Engine支持Go语音;
  - 2012年03月,Go语言1.0版本发布;
  - 2013年05月13日,Go语言1.1版本发布;
  - 2013年12月01日,Go语言1.2版本发布;
  - 2014年06月18日,Go语言1.3版本发布;
  - 2014年12月10日,Go语言1.4版本发布;
  - 2015年08月19日,Go语言1.5版本发布,本次更新中移除了"最后残余的C代码";
  - 2016年02月17日,Go语言1.6版本发布;
  - 2016年08月15日,Go语言1.7版本发布;
  - 2017年02月16日,Go语言1.8版本发布;
  - 2017年08月24日,Go语言1.9版本发布;
  - 2018年02月16日,Go语言1.10版本发布;
  - 2018年08月24日,Go语言1.11版本发布;
  - 2019年02月25日,Go语言1.12版本发布;
  - 2019年09月03日,Go语言1.13版本发布;
  - 2020年02月25日,Go语言1.14版本发布;
  - 2020年08月11日,Go语言1.15版本发布;
  - 2021年02月16日,Go语言1.16版本发布;
  - 2021年08月16日,Go语言1.17版本发布;
  - 2022年03月15日,Go语言1.18版本发布;
  - 2022年08月02日,Go语言1.19版本发布;
  - 2023年02月01日,Go语言1.20版本发布;
  - 2023年08月08日,Go语言1.21版本发布;
  - 2024年02月06日,Go语言1.22版本发布;
  - 2024年08月13日,Go语言1.23版本发布;
  - ...(每年发布2个版本,持续迭代!)
  
  参考链接:
  	https://golang.google.cn/doc/devel/release
  

	
	
总结:
	- Google公司开源;
	- 编译型语言;
	- 21世纪的C语言;
		2005年之前的电脑基本上都是单核的,在此之前诞生的语言也没有考虑到多核优化的问题哟~
		2007年在Golang语言诞生默认是跑满所有核心的!

3.Go语言的优劣势

优势:
	- 语法简单,易于学习,类C的语法,同时比C/C++简洁和干净;
	- 自带GC,方便使用(C++需要手动释放内存,很头痛...);
	- 快速编译,高效执行;
	- 简单的依赖管理(Java项目需要安装各种依赖包后才能正常运行起来...);
	- 并发编程,轻松驾驭;
	- 静态类型,同时有一些动态语言的特征(var 声明);
	- 标准类库,规范统一;
	
	
劣势:
	- 不支持泛型(官方说在未来的版本会支持泛型)
	- 不支持动态加载代码(各种Linux的"xxx.so"文件)
	- 发展时间短,生态不及Java,C++庞大(并不是说go的第三方库少,只不过各个第三库的选择数量可能没有其他语言多)


总结:
	- 简单易学习;
	- 开发效率高;
	- 执行性能高;

4.为什么要学习Go语言

- Go语言的用途:
	- 巨型中央服务器领域;
	- 高性能分布式领域;
	- 游戏服务端开发;
	- 复杂事件处理;
	- 对实时性要求很高的软件开发;
	- 可以在Inter和ARM处理器上运行,因此也可以在安卓上运行;
	
	
Go语言的应用领域:
	如下图所示。
	
	
Go微服务开发:
	- 零依赖,让我们可以最小化我们的镜像,节省存储与拉取镜像带宽;
	- Runtime使用更小的内存,对比Java的JVM;
	- 更好的并行能力,当你真的需求更多CPU的时候;
	- 更高的性能,对比解释性语言,在处理数据以及并发方面优势明显;
	- 简单,学习成本低,内部人员可以转入Go阵营;
	- 使用Go能更接近云原生生态,比如Docker,K8S,harbor都是用Go开发的;
	
	
总结:
	- 机会多;
	- 薪资高;
	- 发展好;

5.Go语言的前景

如上图所示,我们在Boss直聘上可以看到针对Go语言的工资薪资待遇还是非常可观的哟~

6.学习Golang语言方法

(1)与其他编程语言对比学习;
(2)多写代码;
(3)在实际工作中使用Go语言;
(4)培养自主学习能力,坚持;
(5)做笔记,写博客,将学会的内容讲解出来;

二.Go语言开发工具介绍

1.Visual Studio code

Microsoft产品(简称VSCode),一个运行于Mac OS,Windows和Linux之上的,默认提供Go语言的语法高亮。

安装Go语言插件,还可以支持智能展示,编译运行等功能。

下载地址:
     https://visualstudio.microsoft.com/zh-hans/

多版本选择:
    https://code.visualstudio.com/Download

2.Sublime Text

可以免费使用,默认也支持Go代码语法高亮。

只是保存次数达到一定数量之后就会提示是否购买,点击取消继续使用,和正式注册版本没有任何区别。

下载地址:
      https://www.sublimetext.com/download

3.Vim

Vim是vi发展出来的一个文本编辑器,代码补全,编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

4.Emacs

Emacs传说中的神器,她不仅仅是一个编辑器,因为功能强大,可称它为集成开发环境。

5.Eclipse

Eclipse是开源免费的IDE工具,并提供GoEclipse插件。

6.LiteIDE

LitelIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是中国人开发的。

7.JetBriains IDE

JetBrains公司的PhpStrom,WebStrom和PyCharm,Goland等IDE都需要安装Go插件。

只不过JetBrains产品基本上都是付费的产品,也有对应的社区版本。但功能相比于付费版本较少。
posted @ 2024-04-18 00:06  尹正杰  阅读(373)  评论(0编辑  收藏  举报