Go 语言的概述

Go语言的核心开发团队(三个大牛)

Ken Thompson(肯·汤普森)

肯尼斯·蓝·汤普逊(英语:Kenneth Lane Thompson,1943年2月4日-)小名肯·汤普逊(英语:Ken Thompson),美国计算机科学学者和工程师。黑客文化圈子通常称他为“ken”[1]。在贝尔实验室工作期间,汤普逊设计和实现了Unix操作系统。他创造了B语言——C语言的前身,而且他是Plan 9操作系统的创造者和开发者之一。2006年,汤普逊进入Google公司工作,与他人共同设计了Go语言。他与丹尼斯·里奇同为1983年图灵奖得主。

罗勃·派克(Rob Pike)

罗勃特·派克(Robert C. Pike,1956年-),昵称为罗勃·派克(Rob Pike),来自加拿大的程序员,曾经加入贝尔实验室,为 UNIX小组的成员。曾经参与过贝尔实验室九号计划Inferno,与编程语言 Limbo的开发。

他与肯·汤普逊共同开发了UTF-8

目前为 google的工程师,参与编程语言GoSawzall的研发工作。

其中Golang的吉祥物又他老婆设计

罗勃·派克(Rob Pike)

Robert Griesemer

Robert Griesemer(生于 1964 年 6 月 9 日)是瑞士计算机科学家。他最出名的是他在Go 编程语言方面的工作。在 Go 之前,他从事谷歌的V8 JavaScript 引擎Sawzall 语言、Java HotSpot 虚拟机和 Strongtalk 系统的工作。

Go的吉祥物

顺便说一下,罗勃·派克(Rob Pike)的媳妇 Renee French 就是 Go 语言吉祥物的设计人,想不到吧,真是全家齐动手。

Go之所以叫Go,是想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。

gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物, 它的中文名叫做囊地鼠,他们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。

Go语言的诞生

  • 2007 年 9 月 20 日的下午,在谷歌山景城总部的一间办公室里,谷歌的大佬级程序员 Rob Pike在等待一个 C++ 项目构建的过程中和谷歌的另外两个大佬级程序员 Robert Griesemer和 Ken Thompson进行了一次有关设计一门新编程语言的讨论。
  • 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
  • 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
  • 企业运行维护很多c/c++的项目,C/C++程序运行速度虽然很快(因为采用静态编译),但是编译速度却很慢,同时还存在内存泄露的一系列困扰需要解决。

Golang语言的特点

Go语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言:Go= C + Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的开发。

主要特点:

  1. 从C语言继承了很多理念,包括表达式语法、控制结构、基础数据类型、调用参数传值、指针等等,也保留了和C语言一样的编译执行方式及弱化的指针。
  2. 引入包的概念,用于组织程序的结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
  3. 垃圾回收机制,内存自动回收,不需开发人员管理。
  4. 天然并发(重要特点)
    1. 从语言层面支持并发,实现简单。
    2. goroutine,轻量级线程,可实现大并发处理,高校利用多核。
    3. 基于CPS并发模型(Communicating Sequential Processes)实现。
    4. 吸收管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同goroutine之间的相互通信。
    5. 函数可以返回多个值。
    6. 新的创新:比如切片slice、延时执行defer

Go 语言的核心优势

一、高速的效率

首当其冲的,就是效率问题。

Go 语言在保证了快速编译的同时,也保证了高效的开发效率程序运行性能

开发过程中相较于 Java 和 C++ 呆滞的编译速度,Go 的快速编译时间是一个主要的效率优势。

Go 语言的特性也不多,更容易上手,摒弃了其他语言关键特性的问题,使开发变得更快和更加容易。

并且除了追求快速的编译和开发之外,还需要保证语言带来的性能问题,Go 语言可以让程序员的开发速度更快、更容易,并且带来的可以和 C 和 C++ 差不多的性能。

这也是为什么国内 Go 流行的主要原因。

二、易学习、成本低

Go 语言语法简单,包含了 类C 语法。因为 Go 语言容易学习,所以一个普通的大学生,只要有基础的 C 语言基础,花几个星期就能写出来可以上手的、高性能的应用。

并且,对于快速发展的互联网来说,技术不断的更新迭代,学习周期可能给我们的越来越短,所以学习一门新的技术的时间成本也是主要考虑的一个因素。

三、强大的标准库

Go 里面的标准库基本上已经是非常稳定了,特别是网络层、系统层的库非常实用。

Go 语言的 lib 库麻雀虽小五脏俱全。

由于 Go 语言诞生在互联网时代,因此它天生具备了去中心化、分布式等特性,具体表现之一就是提供了丰富便捷的网络编程接口

Go 语言的 lib 库中基本上有绝大多数常用的库,虽然有些库还不是很好,但我觉得不是问题,因为我相信在未来的发展中会把这些问题解决掉。

四、简单高并发

Go 语言的 Goroutine 和 Channel 这两个神器简直就是并发和异步编程的巨大福音。像 C、C++、Java、Python 和 JavaScript 这些语言的并发和异步方式太控制就比较复杂了,而且容易出错,而 Go 解决这个问题非常地优雅和流畅

这对于编程多年受尽并发和异步折磨的编程者来说,完全就是让人眼前一亮的感觉。Go 语言是一种非常高效的语言,高度支持并发性

五、部署方便

编译后直接是计算机可执行文件,部署这块就不用多说了吧?粘贴复制总会吧?

什么,你说 Linux 下 copy 命令不熟悉的,不好意思,你可以自己回去恶补一下基础了。

六、出生名门,血统纯正

有人说编程语言的出生并不重要,重要的是好不好用,符不符合程序员们的思想,能不能带来什么样的价值。

此言差矣,诚然,一款优秀的事物面世,不问出身在哪里,正所谓英雄不问出处,编程不分快慢。

但好的先天资源,自然是比别人跑在前面。从 Go 语言的创造者,到 Go 语言的富爸爸 Google 公司,那可以说是占尽了先机。

Google 在业界的知名度和实力自然不用多说,Google 公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。

而且从Go语言的发展态势来看,Google对它这个新的宠儿还是很看重的,Go自然有一个良好的发展前途。

最后从社区的维护、组织和发展都是要给以后的未来 Go 语言的发展提供了很大帮助的,这些都是它的创造者和 Google 带来的价值。

七、规范性

这也是笔者比较中意的一项优势,因为审核代码真是一件痛苦的事情。每天都看着不同的人写着不同风格的代码,那真是相当难受的一件事,虽然有代码规范,但是还是需要靠自觉的去维持。

当然有些人可能觉得这让我们少了很多自由发挥的地方,但是有利也有弊吧,所以这项优势放在了最后一条。

除了 Go 语言带来的代码规范之外,还有强大的编译检查、完整的软件生命周期工具,具有很强的稳定性。Go提供了软件生命周期(开发、测试、部署、维护等等)的各个环节的,如 go tool、gofmt、go test。

相关文章

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇