Go语言最初的源代码是用C语言和汇编语言编写的。 Go1.5版本之后,完全用Go语言本身编译。 早在 2014 年初,Google 就已经开始准备从 Go 语言的源码中彻底剔除 C 语言,也就是说,让 Go 语言真正完成自举,重新绘制 Go 语言编译器初始版本。
本教程的运行环境:windows7系统,GO1.18版本,DellG3笔记本。
Go语言已经实现了bootstrapping,这意味着Golang现在是由Golang自己编译的。 早期,Go是用汇编语言和C语言实现的。 后来,当Go成熟后,Go语言开始以初始版本引导和重绘Go语言编译器。
Go1.5版本之后,完全用Go语言本身编译。 Go语言的源码对于理解Go语言的底层调度具有很大的参考意义。 建议想要深入了解Go语言的读者阅读。
项目链接:
Google逐步实现Go语言“去C语言”
很多编程语言的核心都是C语言。 甚至可以说,现代计算机的核心基础是基于C语言和Unix的。 Ken Thompson 和爷爷 Dennis Ritchie 创建了 C 语言和 Unixgo 源码 编译,然后 C 和 Unix 重新生成了一切。 JVM、PHP core、GCC、Emacs、Vim、Unix、Linux等都是用C语言编写的。
Go 语言也不例外。 Go语言编译器最初是用C语言编写的。 Go语言的作者之一是著名的祖父Ken Thompson。 早在2014年初,Google就已经开始准备从Go语言的源代码中彻底删除C语言,也就是说,让Go语言真正完成自举。
Google 引导 Go 语言的具体计划
Go语言是一种非常高效的编程语言。 它比基于虚拟机和解释型语言的Java、C#、PHP、Python具有更好的性能和更高的资源使用效率。 基本上,除了C/C++之外,Go语言是性能最好的中间语言。 与C、C++、Go语言相比,它在句型上有很大的优势。
Java 和 PHP 都只能部分引导。 Java的JVM还是得用C语言实现,PHP的核心也必须用C语言编写。 能够实现bootstrap的编程语言必须是图灵完备的,所以HTML、CSS是没有办法实现bootstrapping的,它们并不是真正的编程语言。
Google的具体实施步骤:开发一个C-to-Go编译器,将现有的C编译器翻译成Go语言; 转换编译器源码树,得到Go语言编译器; 将C风格的Go编译器转换为彻底的Go语言风格的Go编译器; 优化Go编译器,主要优化处理器和内存性能问题,添加并行机制,优化去除冗余检测和边界检测能力; 使用最新版本的 go/parser 和 go/ types 替换编译器后端。
Google 为什么要做 Go 语言 bootstrap?
bootstrapping主要有3个含义: 测试被引导的编程语言; 实现更中间、更具体的编程语言的编译器; 编程语言也可以从语言本身的发展中受益。
可以自举证明至少这个编程语言是图灵完备的,这就证明了编程语言本身有这么强大的能力go 源码 编译,这本身也是对编程语言的一种宣传,至少证明了编程语言有通用能力强,底层能力特别强。 在bootstrapping的过程中,本质上是对编程语言的考验。 在这个过程中,核心开发人员可以积累大量编程语言本身的经验和教训,并且可以及早发现编程语言本身的缺点和设计缺陷。 及时进行调整和优化。
因此,如果编程语言想要引导,那么越早完成越好。 引导过程也是建立编程语言的过程。 在编程语言最终确定之前,引导程序越早完成,编程语言就会越早成熟。 C/C++之所以能经久不衰这么多年,就是因为它们足够成熟。 其他编程语言的发展都依赖于这两种编程语言。 Go语言现在也有这样的可能。
Go语言是一门非常优秀的编程语言,具有现代的设计理念、强大的能力和良好的性能。 虽然Go语言缺少宏和泛型,但是你的代码会高度重复,而且Go语言大多抛弃了C/C++的缺点,是吸收了很多编程语言的优点而发展起来的一门比较年轻的编程语言。 Go语言的大量工程实践已经证明这是一门非常强大的编程语言。
发表评论