本文首发于我的博客

很多人将GO语言称为21世纪的C语言,因为GO不仅拥有C的简洁和性能,而且还很好的提供了21世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东西。

GO语言的历史

Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。

在学习Go语言之前,明白设计者的动机以及语言要解决的问题很重要。Go语言出自 Ken Thompson 和 Rob Pike、Robert Griesemer 之手,他们都是计算机科学领域的重量级人物。

  1. Ken Thompson
    图灵奖获得者,贝尔实验室 Unix 团队成员,C语言、Unix 和 Plan 9 的创始人之一,在 20 世纪 70 年代,设计并实现了最初的 UNIX 操作系统,仅从这一点说,他对计算机科学的贡献怎么强调都不过分。他还与 Rob Pike 合作设计了 UTF-8 编码方案。

  2. Rob Pike
    Go语言项目总负责人,贝尔实验室 Unix 团队成员,除帮助设计 UTF-8 外,还帮助开发了分布式多用户操作系统 Plan 9、Inferno 操作系统和 Limbo 编程语言,并与人合著了《The Unix Programming Environment》,对 UNIX 的设计理念做了正统的阐述。

  3. Robert Griesemer
    就职于 Google,参与开发 Java HotSpot 虚拟机,对语言设计有深入的认识,并负责 Chrome 浏览器和 Node.js 使用的 Google V8 JavaScript 引擎的代码生成部分。

这些计算机科学领城的重量级人物设计Go语言的初衷是为了满足 Google 的需求——当时的谷歌内部主要使用 C++ 语言构建各种系统,但 C++ 的巨大复杂性、编译构建速度慢以及在编写服务端程序时对并发支持的不足,让三位大佬觉得十分不便,他们就想着设计一门新的语言。在他们的初步构想中,这门新语言应该是能够给程序员带来快乐、匹配未来硬件发展趋势并适合用来开发谷歌内部大规模程序的。

经过2007年对多次讨论,Go语言的三位作者在语言设计上达成初步一致,之后便开启了Go语言迭代设计和实现的过程。以下是Go语言的发展历程:

2007年,谷歌工程师Rob Pike,Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
2009年11月10日,Google将Go语言以开放源代码的方式向全球发布。
2012年3月28日 go1 —— 稳定版版的发布
2015年8月19日 go1.5 —— 实现的架构变化,同时保留了和旧版本的兼容性,本次更新中移除了”最后残余的C代码”—》自举
2018年8月24日 go1.11 —— modules支持,摒弃掉go path的包管理
2020年2月 go 1.14— — 现在 Go Module 已经可以用于生产环境
2022年2月 go 1.18 开始支持泛型

GO语言的特性

Go语言之所以被称为21世纪的C语言,不仅在于它精简的语法和高效的开发,更在于它具有原生支持和易于使用的高并发的特性。

  • 简单好记的关键词和语法。轻松上手,简单易学。
  • 更高的效率。比Java,C++等拥有更高的编译速度,同时运行效率媲美C,同时开发效率非常高。
  • 生态强大,网络上库很丰富,很多功能使用Go开发非常简单。
  • 语法检查严格,高安全性。
  • 严格的依赖管理,go mod命令。
  • Go拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具,具有很强的稳定性,稳定压倒一切。
  • 跨平台交叉编译,windows就可以编译出mac,linux上可执行的程序。
  • 异步编程复杂度低,易维护,GO 语言中 Channel 设计,异步程序写起来非常自然。
  • 语言层面支持并发,go关键字(协程)使得go的并发效率极高。
  • 严格的语法规范,所有程序员写出来的代码都是一样的,对大团队来说,非常友好。
  • Go 的并发、性能、安全性、易于部署等特性,使它很容易成为“云原生语言”。容器和云的使用上非常广

Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发速度和易维护性。有人形容Go语言:Go = C + Python, 说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

GO语言的使用

Go语言主要用于服务端开发,其定位是开发大型软件,常用于:

  • 服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
  • 分布式系统,数据库代理器等。
  • 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用。
  • 内存数据库,如google开发的groupcache,couchbase的部分组建。
  • 云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。

目前国内外使用Go语言的公司非常多,比如Google、微软、facebook、paypal、uber、amazon、字节跳动、阿里巴巴、百度等。

小结

Go 拥有 C/C++ 一样的高性能,Java 一样的超高效并发处理,Python/Perl 一样的有趣语法。现在就开始你的Go语言学习之旅吧!人生苦短,let’s Go.

Go语言学习之路——Go语言简介相关推荐

  1. C语言学习之路--C语言中的格式输出

    一.前言 在我们初学C语言的过程中,会有一些类似%d之类的格式输出,我在此做个汇总,供大家学习. 二.分类 1.%u 十进制无符号整数. 2.%f 表示输出浮点数. 可以通过输出格式说明符来指定精确到 ...

  2. Go语言学习之路(二)

    Go语言学习之路(二) 面对对象编程思想 抽象 封装 继承 接口 文件 命令行参数 Json 序列化 反序列化(unmarshal) 单元测试 Redis Redis简介 Redis基本使用 Go连接 ...

  3. 12天学好C语言——记录我的C语言学习之路(Day 12)

    12天学好C语言--记录我的C语言学习之路 Day 12: 进入最后一天的学习,用这样一个程序来综合考量指针和字符串的关系,写完这个程序,你对字符串和指针的理解应该就不错了. //输入一个字符串,内有 ...

  4. C语言-学习之路-01

    C语言学习之路-01 目录 关键字 数据类型 常量 变量 声明和定义 进制 sizeof关键字 整型:int short.int.long.long long 字符型:char ASCII对照表 转义 ...

  5. Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法

    Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...

  6. C语言学习宝典下载,C语言学习宝典

    C语音学习宝典手机版是一款很好用的C语音移动学习工具,为用户带来了C语音真题联系及学习课程,让用户可以充分利用碎片时间进行联系.C语音学习宝典手机版还提供了非常强大的手机编程工具,很多代码手机上就能完 ...

  7. c语言注释语句执行吗,C语言学习笔记之C语言概念解析(附资料分享)每一个语句都必须以分号结尾但预处理命令函数头和花括号“}”之后不能加分号...

    [[怪兽爱C语言]C语言学习笔记之C语言概念解析(附资料分享)]https://toutiao.com/group/6582429294901854728/?iid=15906422033&a ...

  8. C语言学习之路--计算机系统组成以及工作原理,进制之间的转换和机器数及其表示范围

    目录 一.前言 二.计算机系统组成以及工作原理简介 1.硬件系统基本组成原理及工作原理 2.硬件各部分详解 1.运算器 2.控制器 CPU 3.存储器 1.内存储器 2.外存储器 3.拓展 4.存储器 ...

  9. C语言学习之路--函数,从知识到实战

    目录 一.前言 二.函数是什么? 三.C语言中函数的分类 1.库函数 1.为什么会有库函数? 2.如何学习库函数? 3.学习库函数举例 1.strcpy 2.memset 3.库函数学习工具总结 2. ...

最新文章

  1. 浅谈图网络在视觉任务中的应用
  2. 【c语言】蓝桥杯算法训练 十进制数转八进制数
  3. ubuntu系统安装mysql(deb-bundle包)
  4. sed是linux命令吗,Linux命令 sed
  5. Leet Code OJ 7. Reverse Integer [Difficulty: Easy]
  6. 【51Nod - 1432】独木舟 (贪心,思维,好题)
  7. lm_license_file 冲突怎么办_【微课+语音】孩子一个多月没有上学了怎么办?
  8. 面向对象编程方法-抽象
  9. cuda10安装——在CentOS上安装的艰难过程
  10. 计算机培训三下乡实践报告,大学生暑假三下乡社会实践报告优秀范文
  11. 转载:C64x的GPIO中断——简单原理介绍
  12. OXY OPENCART 商城自适应主题模板 ABC-0020-01
  13. 《私募股权基金投资基础知识》---第六章
  14. 玉米稻风波被中途扼杀 国稻种芯-何登骥:生物育种风险机制
  15. HTML-----第二章表格及样式
  16. 用户体验五要素_【产品经理】如何理解“用户体验要素”5层模型?
  17. python 中文转拼音原理_Python中文转拼音
  18. Redis的多路复用机制
  19. Windows 8 客户端预览版(Consumer Preview)抢先体验
  20. 【C++算法模板】日期类型题目:节假日

热门文章

  1. python爬取中国大学_Python 3爬取全国高校基本信息
  2. ATTCK实战系列—红队实战-4
  3. 在word文档表中插入图片不变形
  4. 第2章-Bluetooth® LE audio架构
  5. WebGIS支持国内各地方坐标系数据展示的方案
  6. Python手记-1:Windows10、macOS、CentOS7平台下Python3环境搭建简介
  7. gradle瘦身/删除没有用的文件
  8. QQ并没有和我们一起成长
  9. Redisson_布隆过滤器
  10. 关于XP和win7前置音频插孔无声音的解决办法