文章图片
download:PHP+Go 开发仿简书,实战高并发高可用微服务架构
【PHP+Go 开发仿简书,实战高并发高可用微服务架构无密分享】Go(或Golang)语言起源于2007年,2009年正式发布。Go是一门非常年轻的语言,它的主要目标是“将Python等动态语言的开发速度与C/C++等编译语言的性能和安全性结合起来”。
Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进。它不仅允许您访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go语言有很多用途,比如网络编程,系统编程,并发编程,分布式编程。
Go语言的引入旨在不损失应用程序性能的前提下降低代码复杂度,具有“部署简单、并发性好、语言设计好、执行性能好”的优势。目前国内很多IT公司都采用Go语言开发项目。
Go语言有时被描述为“类C语言”或“21世纪的C语言”。Go继承了C语言的很多思想,比如相似的表达式语法、控制流结构、基本数据类型、调用参数、传递值、指针等。,以及C语言一直感兴趣的编译后机器码的运行效率及其与现有操作系统的无缝适配。
因为Go语言没有类和继承的概念,看起来和Java或者C++不太一样。但是它通过接口的概念实现了多态性。Go语言有清晰易懂的轻量级类型体系,类型之间没有层次关系。因此,可以说Go语言是一种混合语言。
此外,许多重要的开源项目都是用Go语言开发的,包括Docker、Go-Ethereum、Thrraform和Kubernetes。
Go语言创始人
在评价一门语言的时候,理解设计者的动机和这门语言要解决的问题是很重要的。《Go》的作者是肯·汤普森、罗布·派克和罗伯特·格里斯默,他们都是计算机科学领域的重要人物。
①肯·汤普森
贝尔Unix团队成员,C语言、Unix和Plan 9的创始人之一,在70年代设计并实现了最初的UNIX操作系统。仅从这一点来看,他对计算机科学的贡献怎么强调都不为过。他还与罗布·派克合作设计了UTF-8编码方案。
2)罗布·派克
Go语言项目总导演,贝尔实验室Unix团队成员,帮助设计了UTF-8,还开发了分布式多用户操作系统Plan 9、Inferno操作系统和Limbo编程语言,并合著了Unix编程环境,对UNIX的设计理念进行了正统的阐述。
3)罗伯特·格里斯默
曾就职于Google,参与过Java HotSpot虚拟机的开发,对语言设计有深刻的理解,负责Chrome浏览器和Node.js使用的Google V8 JavaScript引擎的代码生成
这些计算机界的重量级人物设计Go语言的初衷就是为了满足Google的需求。设计这款语言花了两年时间,融入了整个团队多年的经验和对编程语言设计的深刻理解。设计团队借鉴了Pascal、Oberon、C语言的设计智慧,同时让Go语言具备了动态语言的便利性。所以Go语言体现了经验丰富的计算机科学家的语言设计理念,是为世界上最大的互联网公司之一设计的。
所有Go的设计者都说,他们设计Go是因为C++给他们带来了挫败感。在Google I/O 2012的围棋设计团队会议上,Rob Pike是这样说的:
我们做了很多C++开发,已经厌倦了等待编译完成。虽然这是个笑话,但很大程度上也是真的。
Go是一种编译语言。
使用Go编译器编译代码。编译器将源代码编译成二进制(或字节码)格式;编译代码时,编译器会检查错误,优化性能,并输出可以在不同平台上运行的二进制文件。要创建和运行Go程序,程序员必须执行以下步骤。
使用文本编辑器创建Go程序;
保存文件;
编译程序;
编译后的可执行文件。
文章图片
这与Python、Ruby、JavaScript等不包含编译步骤的语言不同。Go自带编译器,不需要单独安装编译器。
为什么要学围棋语言?
如果你想创建系统程序或者基于网络的程序,Go语言是个不错的选择。作为一种相对较新的语言,它是由经验丰富和受人尊敬的计算机科学家设计的,以应对创建大规模并发网络程序的挑战。
在Go语言出现之前,开发者总是面临着一个非常艰难的选择,是使用一种执行速度很快但编译速度不尽人意的语言(比如C++),还是使用一种编译速度很快但执行效率很差的语言(比如。NET和Java),还是开发难度低但执行速度一般的动态语言?很显然,Go语言已经在这三个条件之间取得了最好的平衡:快速编译、高效执行和易于开发。
Go语言支持交叉编译。例如,您可以开发可以在运行Linux的计算机上运行Windows的应用程序。这是第一个完全支持UTF-8的编程语言,这不仅体现在它可以处理UTF-8编码的字符串,而且它的源文件格式也是UTF-8编码的。Go语言是真正的国际语言!
Go语言吉祥物
语言有吉祥物。在会议、文档页面、博客帖子中,大部分都会包含Go Gopher,如下图所示。这是由Renee French设计的,她是一位才华横溢的插画师,也是围棋设计师之一Rob Pike的妻子。