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

简介: 这篇文章介绍了Go语言的适合学习人群、发展历史、优劣势、学习原因、前景以及学习方法,同时概述了几种常用的Go语言开发工具。

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

一.Golang概述

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

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

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

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

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版本发布;
  - ...(每年发布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产品基本上都是付费的产品,也有对应的社区版本。但功能相比于付费版本较少。
目录
相关文章
|
4月前
|
数据挖掘 API Go
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)(下)
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)
59 1
|
15天前
|
Linux Go 开发工具
Golang各平台环境搭建实战
这篇文章详细介绍了如何在Windows、Linux和Mac平台上搭建Golang开发环境,包括下载和安装Go SDK、配置环境变量、安装开发工具如Visual Studio Code和Go扩展,以及如何编写和运行第一个Go程序。
43 3
|
15天前
|
NoSQL 关系型数据库 MySQL
Vgo-适合golang初学者的开源框架
# Vgo Vgo是一款基于Gin的开源服务端框架,集成了Redis、Mysql、JWT及队列等技术栈,适合Golang初学者。项目包括Vgo-Gitee和VgoAdmin-Gitee,可通过克隆仓库并按照安装指南进行部署。其目录结构清晰,涵盖路由、模型、后台接口等功能模块,更多功能持续开发中。
|
3月前
|
Go 开发工具 C语言
从零开始使用golang开发
【6月更文挑战第17天】本文介绍 Go 语言安装与配置等操作。包括.下载与安装从[Go官网](https://golang.org/dl/)下载对应平台的安装包,安装时可自定义路径。安装验证,使用 `go version` 检查版本。环境配置和变量设置,包管理等
43 1
|
3月前
|
Kubernetes Go 云计算
Golang 入门技术文档
**Golang 技术文档摘要:** Golang,由Google开发,是一种静态强类型、编译型语言,广泛应用于云计算、网络编程和分布式系统。本文档介绍了Golang的基础和特性,包括安装配置、 HelloWorld 示例、基本语法,如变量推导、函数多返回值和并发编程(goroutine、channel)。Golang的并发模型基于轻量级goroutine和channel,支持高效并发处理。此外,文档还提及了接口和多态性,展示了如何使用接口实现类型间的交互。Golang在Docker、Kubernetes等项目中得到应用,适用于后端服务开发。【6月更文挑战第9天】
33 1
|
4月前
|
监控 JavaScript 前端开发
《Go 简易速速上手小册》第8章:网络编程(2024 最新版)(下)
《Go 简易速速上手小册》第8章:网络编程(2024 最新版)
48 1
|
4月前
|
存储 JSON Go
《Go 简易速速上手小册》第8章:网络编程(2024 最新版)(上)
《Go 简易速速上手小册》第8章:网络编程(2024 最新版)
67 1
|
4月前
|
缓存 NoSQL Go
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)(上)
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)
108 1
|
4月前
|
安全 Java Linux
Golang深入浅出之-初识Go语言:语言特点与开发环境搭建
【4月更文挑战第20天】Go语言(Golang)由Google于2009年推出,以其简洁语法、高效执行、强大的并发模型和丰富标准库著称。主要特点包括:1) 代码结构清晰,易于阅读;2) 编译速度快,运行效率高,内置垃圾回收;3) 使用goroutines和channels实现并发;4) 标准库涵盖网络、并发等多个领域;5) 支持跨平台编译。要搭建开发环境,需下载Go SDK,配置环境变量,并验证安装。常见问题涉及导入包未使用、错误处理、并发安全和`defer`语句的使用。
92 0
|
4月前
|
Go 区块链 数据库
第一章 Golang开山篇
第一章 Golang开山篇
32 1