Go语言

Go语言 是Google公司 在2007开发一种静态类型编译语言,并在 2009 年正式对外发布

Go语言以其近C的执行性能和近解析语言开发效率,以及近乎于完美的编译速度,已经风靡全球。很多人将Go语言称为21世纪的C语言,因为Go不仅拥有C的简洁性能,而且针对处理器系统应用程序编程进行了优化,很好的提供了21世纪互联网环境服务端开发的各种实用特性

在这里插入图片描述

Go语言的诞生

事件起源于2007年9月,当时 C++委员会正在 Google 对 C++ 语言新增加的35个新的特性进行一场分享演讲

Google技术大神们也在认真听讲座,其中就有Go语言的三个创作者,分别是: Robert Griesemer(罗伯特.格利茨默),Rob Pike(罗伯.派克),Ken Thompson(肯.汤普森)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w44wRMr4-1659185899448)(assets/image-20210601130737782.png)]

随着会议的中场休息,大家开始了对这些 C++ 语言新特性是否带来更多的价值进行吐槽。Rob Pike他们认为:简化语言的成就远大于添加功能。于是,一门新的语言,Go,在这个思路下应运而生。

2007 年 9 月 25 号,Rob Pike在回家的路上得到关于新语言名字的灵感,于是给另外两人发了邮件

img

邮件正文大意为:

在开车回家的路上我得到了些灵感。

1.给这门编程语言取名为“go”,它很简短,易书写工具可以命名为:gocgol、goa

交互式调试工具可以直接命名为“go”。语言文件后缀名为 .go 等等

这就是 Go 语言名字的来源,自此之后 Robert、Rob 和 Ken 三个人开始在 Google 内部进行了研发,一直到了 2009 年,Go 正式开源了,Go 项目团队将 2009 年 11 月 10 日,即该语言正式对外开源的日字作为其官方生日源代码最初托管在 http://code.google.com 上,之后几年才逐步的迁移到 GitHub 上。

在这里插入图片描述

Go语言的版本

Go 1.0 — 2012 年 3 月:Go 的第一个版本,带着一份兼容说明文档来保证与未来发布版本兼容性,进而不会破坏已有的程序

Go 1.1 — 2013 年 5 月:这个 Go 版本专注于优化语言(编译器gcmapgo 调度器)和提升它的性能

Go 1.3 — 2014 年 6 月:这个版本对栈管理做了重要的改进。栈可以申请[连续的内存片段,提高分配的效率

Go 1.4 — 2014 年 12 月:此版本带来了官方对 Android支持,让我们可以只用 Go 代码就能写出简单的 Android 程序

Go 1.7 — 2016 年 8 月: 这个版本发布context 包,为用户提供了处理超时任务取消方法

Go 1.11 — 2018 年 8 月: Go 1.11 带来了一个重要的新功能:Go modules

Go语言的优势

在这里插入图片描述

在这里插入图片描述

Go语言的应用领域

在这里插入图片描述

使用Go的大型互联网公司

在这里插入图片描述

Go语言的强项在于它适合用来开发网络并发方面的服务比如消息推送监控容器等,所以在高并发的项目上大多数公司优先选择 Golang 作为开发语言。另外一个应用就是对一些pythonphp或者java项目进行重构。

介绍完Go语言,那么接下来我们可以正式进入Golang学习了。

一、计算机基础

计算机computer)俗称电脑,是现代一种用于高速计算电子计算机器,可以行数计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行自动、高速处理海量数据的现代化智能电子设备

计算机是20世纪最先进的科学技术发明之一,对人类的生产活动和社会活动产生了极其重要的影响。它的应用领域从最初的军事科研应用扩展到社会的各个领域,已形成了规模巨大的计算产业,带动了全球范围技术进步,由此引发了深刻的社会变革。

在这里插入图片描述

1.1、计算硬件组成

  • CPU

其中,CPU包括运算器和控制器,相当于计算机的大脑,是计算机的运算核心控制核心

在这里插入图片描述

(1) 运算器是用来行数运算加工的。

(2) 控制器是是计算机的指挥中心负责决定执行程序顺序,给出执行指令机器部件需要操作控制命令用于协调和控制计算机的运行

存器分为内储存器和外储存器部分内存属于内储存器内存是CPU与硬盘之间的桥梁,只负责在CPU与硬盘之间做数据预存加速的功能。断电后即会被清除输入设备数据是从设备接口进去到端口缓冲器的,再经主板的输入输出总线(I/O总线)直接到CPU的,不经过内存

在这里插入图片描述

外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据常见的外存储器硬盘、软盘、光盘、U盘等。

在这里插入图片描述

输入设备就是键盘鼠标麦克风扫描仪等等,向电脑输入信息输入设备则相反,电脑外部输出信息,如显示器打印、音像、写入外存等。

1.2、冯-诺伊曼计算机

提到计算机,就不得不提及在计算机的发展史上做出杰出贡献的著名应用数学家冯诺依曼(Von Neumann,是他带领专家提出了一个全新的存储程序的通用电子计算机方案。这个方案规定了新机器由5个部分组成:运算器、逻辑控制装置、存储器输入输出。并描述了这5个部分的职能和相互关系

早期的ENIAC有一个致命的缺点就是程序与计算两分离。在埃历阿克ENIAC尚未投入运行前,冯·诺依曼就已开始着手起草一份新的设计报告,要对这台电子计算机进行脱胎换骨的改造。他把新机器方案命名为“离散变量自动电子计算机”,英文缩写译音是“埃德瓦克”(EDVAC)。1945年6月,冯·诺依曼与戈德斯坦、勃克斯等人,为埃德瓦克方案联名发表了一篇长达101页纸洋洋万言的报告,即计算机史上著名的“101页报告”。这份报告奠定了现代电脑体系结构坚实的根基,直到今天,仍然被认为是现代电脑科学发展里程碑式的文献。报告明确规定出计算机的五大部件**(输入系统输出系统存储器运算器、控制器,并用二进制替代十进制运算**,大大方便了机器电路设计。埃德瓦克方案的革命意义在于**“存储程序”**──程序也被当作数据存进了机器内部以便电脑自动依次执行指令,再也不必去接通什么线路。
  人们后来把根据这一方案思想设计机器统称为“诺依曼机”。自冯·诺依曼设计的埃德瓦克始,直到今天我们用“奔腾”芯片制作多媒体计算机为止,电脑一代又一代的“传人”,大大小小千千万万台计算机,都没能够跳出诺依曼机的掌心。在这个意义上,冯·诺依曼是当之无愧的“计算机之父”。而

总线(Bus)是计算机各种功能部件之间传送信息公共通信干线,它是由导线组成的传输线束, 按照计算机所传输信息种类,计算机的总线可以划分数据总线地址总线控制总线,分别用来传输数据、数据地址控制信号总线是一种内部结构,它是cpu内存输入输出设备传递信息的公用通道主机各个部件通过总线连接外部设备通过相应的接口电路再与总线连接,从而形成了计算机硬件系统

二、编程语言介绍

2.1、什么编程语言

编程语言是用来控制计算机的一系列指令(Instruction),它有固定格式词汇(不同编程语言的格式词汇不一样)。就像我们中国人之间沟通需要汉语,英国人沟通需要英语一样,人与计算机之间进行沟通需要一门语言作为介质,即编程语言。

编程语言的发展经历了机器语言(指令系统)=>汇编语言=>高级语言(C、java、Go等)。

010010101001-》ADD

2.2、编译型语言与解释性语言

计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换方式分为编译和解释两种。由此高级语言也分为编译型语言和解释型语言。
在这里插入图片描述

  • 编译型语言

使用专门的编译器针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式

编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。

1、一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;

2、与特定平台相关,一般无法移植到其他平台;

使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释一行动态翻译和执行,而不是在执行之前就完成翻译

1.解释型语言每次运行都需要源代码解释称机器码并执行,执行效率低;

2.只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;

原文地址:https://blog.csdn.net/weixin_44190790/article/details/126077642

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_25722.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注