go语言编译器设计器 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++ 看起来并不相同 。但是它通过接口(interface)的概念来实现多态性 。Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说 。因此可以说Go语言是一门混合型的语言 。
此外,很多重要的开源项目都是使用Go语言开发的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes 。Go 是编译型语言,Go 使用编译器来编译代码 。编译器将源代码编译成二进制(或字节码)格式;在编译代码时 , 编译器检查错误、优化性能并输出可在不同平台上运行的二进制文件 。要创建并运行 Go 程序,程序员必须执行如下步骤 。
使用文本编辑器创建 Go 程序;
保存文件;编译程序;运行编译得到的可执行文件 。
这不同于 Python、Ruby 和 JavaScript 等语言,它们不包含编译步骤 。Go 自带了编译器,因此无须单独安装编译器 。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站 。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革 , 构建应用型、复合型人才培养体系 。
Go语言编译器TinyGo , 基于LLVM,在微控制器和小系统上编译和运行 TinyGo是一个为微控制器、WebAssembly(Wasm)和命令行工具等小型场景设计的Go语言编译器 。TinyGo重用了Go语言工具和LLVM使用的库,以编译用Go语言编写的程序 。目前,该项目在GitHub上已经积累了10.1k的Star 。
如下为一个示例程序,当运行在任何支持的带板载LED的主板上时 , 则会点亮内置LED 。
上述程序可以在单片机、Adafruit ItsyBitsy M0微控制器或任何支持的带内置LED的板上进行编译和不需要修改的运行,只要设置正确的TinyGo编译器目标即可 。例如,设置如下目标可以编译和点亮 单片机 。
项目概述
TinyGo项目旨在将Go语言引入到具有单进程或核心的微控制器和小系统 。TinyGo类似于emgo,但主要的区别在于作者想要保留Go内存模型 。另一个区别在于TinyGo在内部使用LLVM , 因而可以获得更小更高效的代码以及更高的灵活性 。
创建TinyGo项目的初衷是,如果Python可以在微控制器上运行,Go语言当然也应该能够在更低级微设备上运行 。
支持设备
你可以为微控制器、WebAssembly和Linux编译TinyGo程序 。目前,TinyGo支持以下85种微处理器板 。
更多技术细节请参阅原项目 。

推荐阅读