Go语言发展历史、核心、特性及学习路线
目录
- 知名编程语言发展简史
- Go语言主要发展过程
- Go语言设计初衷
- Go语言的优势
- Go语言的核心特性
- Go语言能开发什么?
- 采用Go语言的国内外企业
- Go语言学生路线
一、 Go语言的发展历史
(一)、知名编程语言或系统的发展简史
1、B语言之父:Ken Thompson(肯.汤普)。
2、C语言之父:美国著名计算机专家,Dennis Ritchie(丹尼斯.里奇)1969-1973年发明了C语言和Unix操作系统。
3、C++之父:Bjarne Stroustrup(本贾尼。斯特劳斯特卢普)。1982年Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的编程语言,它被命名为C++。
4、Python之父:Guido von Rossum(吉多.范.罗苏姆)1994年发布 1.0版本,1995年9月发布了Python3.5版。
5、Java:JamesGosling(詹姆斯.高斯林)。1991年开发Oak,1994年改名为Java,1995年5月正式发布。
6、Javascript:Brendan Eich(布兰登.艾奇)。1995年5月只用了10天时间把Javascript设计出来了。
7、Go语言:Go的三个作者分别是:Robert Griesemer(罗伯特.格利茨默),Rob Pike(罗伯.派克)和 ken Thompson(肯.汤普森)。
.Robert在开发Go之前是Goole V8 、Chubby和HotSpot JVM的主要奉献者;
.Rob主要是Unix 、UTF-8、 plan9的作者;
.ken主要是B语言、C语言的作者、Unix之父。
(二)、Go语言的发展过程
1、2007年9月,Rob Pike(罗伯.派克)正式命名为Go;
2、2008年5月,Google全力支持该项目;
3、2009年11月,Go将代码全部开源;
4、2012年3月28日,Go发布第一个正式的稳定版本。
二、Go语言的特点及优势
(一)、Go语言设计初衷(为什么设计Go语言)
1、设计Go语言是为了解决当时Google开发遇到的问题:
.大量的C++代码,同时又引入了Java和Python
.数以万行的代码
.分布式的编译系统
.数百万的服务器
2、Google开发中的痛点 :
.编译慢
.失控 的依赖
.每个店工程师只是用了一个语言里面的一部分
.程序难以维护
.更新的花费越来越长
.交叉编译困难
3、如何解决当前的问题和痛点?
.Go希望成为互联网时代的C语言。多数系统级语言(包括Java和C#)的根本编程哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也是足够简单。
.所以,他们当时设计Go语言的目标是为了消除各种缓慢和笨重、改进各种低效和扩展性。Go是有那些开发大型系统的人设计的,同时也是为了这些人服务的,它是为了解决工程上的问题,不是为了研究语言设计;它还是为了让我们的编程变得更舒适和方便。
4、Go语言的特色:
没有继承多肽的
强一致类型
Interface不需要显示声明(DuckTyping)
没有异常处理
基于首字母的可访问特性
不用的import或者变量引起编译错误
完整而卓越的标准库包
(二)、Go语言的优势
1、学习曲线容易
Go语言语法简单,包含了类C语法。
2、效率:快速的编译时间,开发效率和运行效率高
3、出身名门、血统纯正
4、自由高效:组合的思想、无侵入式的接口
5、强大的标准库
6、部署方便:二进制文件,Copy部署
7、简单的并发
8、稳定性强
(三)、Go语言的核心特性和优势
.Go主要有静态语言、天生并发、内置GC、安全性高、语法简单、编译快速这几个方面的特性。这些特性决定了Go的三个高富帅特性:运行快、开发快和部署快。
(四)、Go语言能开发什么?(做什么?)
1、服务器编程,以前你如果用C或者C++做的那些事情,用Go来做很合适,例如:处理日志,数据打包、虚拟机处理、文件系统等。
2、分布式系统
3、网络编程
4、数据库操作
5、开发云平台
(五)、采用GO语言的国内外知名企业
三、Go语言学习路线
一、第一章 初识Go语言
1 Go语言特性及发展过程、学习路线
2 安装Golang及设置环境变量、安装Goland开发环境
3 helloworld程序及go的程序结构
二、 第二章 Go基本语法
1 变量、变量类型及注意事项
2 打印格式化介绍
3 常量与枚举
4 Iota与常量注意事项
5 数据类型转换
6 表达式及运算符
7 键盘输入
三、 第3章 流程控制
1 if条件语句
2 if嵌套
3 switch选择语句
4 跳转语句及fallthrough、break、continue的用法
5 for循环
6 for双层循环
7 随机数及随机数种子
四、第四章 Go内容容器 数组及切片
1 数组元素访问
2 二维数组及多维数组
3 冒泡排序
4 切片slice的概念
5 slice的操作
五、第五章 Go内置容器 map字典
1 map声明、创建和遍历
2 map元素删除、查找
3 map案例
六、第六章 函数和指针
1 函数定义
2 函数调用
3 不定参数
4 函数多返回值
5 匿名函数和闭包
6 指针
7 深拷贝和浅拷贝
七、第七章 Go文件操作
1 内存存储
2 文件存储
八、第八章 错误处理
1 error接口
2 defer语句
3 panic和recover
九、第九章 Go单元测试
1 Go进行单元测试
2 Go进行HTTP测试
3 第三方Go测试库
4 Gocheck测试包
5 Ginkgo测试框架
十、第十章 Go面向对象编程
1 值类型和引用类型
2 结构体
3 方法
4 接口
5 函数式编程
十一、第十一章 Go安全编程(加密处理)
1 哈希算法
2 数据加密
3 数字签名
4 数字正式
5 pKI体系
6 加密通信
十二、第十二章 Go并发编程
1 并发法编程基础
2 多进程编程
3 多线程编程
4 Go的并发机制
5 协程及goroutine
6 Channel
7 同步锁及原子操作
十三、第十三章 Go网络编程
1 Socket编程
2 HTTP编程
3 RPC编程(Gob及RPC接口)
4 JSON处理
5 网站开发(net、http包)
十四、第十四章 Go数据库编程
1 MySQL介绍
2 MySQL noinstall安装
3 MySQL图形化方式安装
4 启动和停止MySQL服务
5 MySQL数据类型及客户端管理工具Navicat
6 SQL基础入门
7 SQL中元素符
8 SQL常用函数
9 DQL语句高级查询
10 事物及回滚
十五、第十五章 Go爬虫实战开发
四、 Go开发文档
https://www.studygolang.com/pkgdoc
有疑问加站长微信联系(非本文作者)