2.1.5 Go语言编译器简介2020 中国 上海 / 2020-11.21-22 Go语言编译器简介 ’ alt=‘OCR图片’/> 关于我 Contributors to golang/go · GitHub 给Go编译器提交过127个补丁,累计六万余行; 拥有Go官方git仓库提交权限; 全球贡献者排名长期处于前50名; 世界上90%的gopher都用过我写的代码; 编译器的重要性 只有1%的程序员懂汇编语言 汇编语言无法构建大型系统 汇编语言无法构建大型系统 操作系统内核也需要编译器才能运行起来 编译理论是图灵奖大户,仅次于计算复杂度理论 操作系统有后门,编译器的后门更致命 编译器的难题:任务爆炸 N种语言 * M种机器 = N*M 个任务 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 两个方案 $$ N \mathrm {种 语 言} + M \mathrm {种 机 器} {个 任 务} $$ 其它语言 -> C -> 各个机器 各个语言 -> x86 -> 其它机器 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 通用(非专用)编译器的方案 AST = Abstract Syntax Tree抽象语法树 SSA = Single Static Assignment单静态赋值 IR = Intermediate Representation中间表示0 码力 | 36 页 | 1.63 MB | 1 月前3
KCL: Rust 在编译器领域的实践与探索## RUST CHINA CONF 2023 第三届中国Rust开发者大会 6.17-6.18 @Shanghai ## KCL: Rust 在编译器领域的实践与探索 张正 蚂蚁集团 ## 😍 01 KusionStack 与 KCL 02 用 Rust 重写 KCL 03 Rust 重写后的收益 04 更多的探索 ## 01 KusionStack 与 KCL ## KusionStack是什么  有赞 ## KCL ## R = GO KONFIG > I@ .github > .kclvm > apps > clickhouse-operator > base > crd > prod add1b5abffd9fb8525138fc88bca0/p9_2.jpg) ## 2 KCL 编译器架构升级 Python 代码翻译 Source Code Python code 栈式虚拟机 Source Code AST Bit code VM Rust 编译器 Source Code AST LLVM IR Native/WASM ## R ## 我们遇到了哪些问题?0 码力 | 25 页 | 3.50 MB | 2 年前3
Go 入门指南(The way to Go)Go入门指南 书栈(BookStack.CN) ## 目录 致谢 阅前必读 内容介绍 前言 第1章:Go 语言的起源,发展与普及 1.1 起源与发展 1.2 语言的主要特性与发展的环境和影响因素 第2章:安装与运行环境 2.1 平台与架构 2.2 Go 环境变量 2.3 在 Linux 上安装 Go 2.4 在 Mac OS OS X 上安装 Go 2.5 在 Windows 上安装 Go 2.6 安装目录清单 2.7 Go 运行时(runtime) 2.8 Go 解释器 第3章:编辑器、集成开发环境与其它工具 3.1 Go 开发环境的基本要求 3.2 编辑器和集成开发环境 3.3 调试器 3.4 构建并运行 Go 程序 3.5 格式化代码 3.6 生成代码文档 3 3.7 其它工具 3.8 Go 性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 常量 4.4 变量 4.5 基本类型和运算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 时间和日期 4.9 指针 第5章:控制结构0 码力 | 466 页 | 4.44 MB | 2 年前3
Go 入门指南(The way to Go)1986bf1/p1_3.jpg) The Way to Go Go入门指南 Ivo Balbaert 著 陈佳桦 译 ## 前言 原文出处:https://github.com/Unknwon/the-way-to-go_ZH_CN ## 用更少的代码,更短的编译时间,创建运行更快的程序,享受更多的乐趣 对于学习 Go 编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这里包 开发出的软件能够很好地在现代的多核计算机上工作 - 开发出的软件能够很好地在网络环境下工作 • 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你在学习 Go 语言之前需要具备一些关于编程的基础知识和经验,并且拥有合适的学习环境,但你并不需要对 C 或者 Java 或其它类似的语言有非常深入的了解。 对于那些熟悉 C 或者面向对象编程语言的开发者,我们将会在本书中用 Go 和一些编程语言的相关概念进行比较(书中会使用大家所熟知的缩写0 码力 | 380 页 | 2.97 MB | 2 年前3
1.3 Go coding in go wayprint $ sieve [2..n] [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97] sieve.go//并发组合 (borrowed from Rob Pike’s slide) func generate(ch chan<- int) { for i := 2; ; i++ { channel. go generate(ch) // Start generate() as a subprocess. for { prime := <-ch fmt.Print(prime, "\n") ch1 := make(chan int) go filter(ch, } sieve.go (cont.) From divan’s blog (http://divan.github.io/posts/go_concurrency_visualize/) ’ alt=‘OCR图片’/> 思考 面对同一个问题,来自不同编程语言的程序员给出了思维方式截然不同的解决方法 一定程度上印证了前面的假说:编程语言影响编程思维 避免Go coding in0 码力 | 69 页 | 1.24 MB | 1 月前3
Go vs. GoPlus(Go+)## GCN ### Go vs. GoPlus(Go+)  许式伟 x@goplus.org 2021-6-27 北京 ## 话外:模板 ## Go 篇 ## 谁是最成功的语言? • 1970 – 至今 - 什么语言是最成功的 什么语言是最成功的? • C (1970) • C++ (1979) • Objective-C (1986) • Java (1994) • C# (2002) • Go (2009)  |Position Aug 2012|Position Aug 53%| |13|10|✓|R|1.38%|-0.46%| |14|38|A|Groovy|1.25%|+0.96%| |15|13|✓|MATLAB|1.23%|+0.06%| |16|12|✓|Go|1.22%|-0.05%| |17|23|A|Delphi/Object Pascal|1.21%|+0.60%| |18|11|✓|Swift|1.14%|-0.65%| |19|18|✓|Perl|10 码力 | 54 页 | 1.82 MB | 2 年前3
The Go Handbook## GO HANDBOOK # Table of Contents Preface The Go Handbook Conclusion ## Preface The Go Handbook follows the 80/20 rule: learn in 20% of the time the 80% of a topic. In particular, the goal is to to get you up to speed quickly with Go. This book is written by Flavio Copes. I publish programming tutorials on my blog flaviocopes.com and I organize a yearly bootcamp at bootcamp.dev. You can reach @flaviocopes. Enjoy! ## The Go Handbook • 1. Preface • 2. Getting started with Go • 3. Install Go • 4. Setup your editor • 5. Hello, World! • 6. Compiling and running the Go program • 7. The workspace0 码力 | 44 页 | 4.30 MB | 2 年前3
Exporting Go## Exporting Go Robert Griesemer GopherCon Singapore, 2017 ## I ntro ## • Go package o Namespace Interface (export) o Import ## • Implementation ☐ Export/import (this talk) ☐ Linker (not this 2^2 * 3 ... 996 == 2^2 * 3 * 83 997 == 997 prime 998 == 2 * 499 999 == 3^3 * 37 1000 == 2^3 * 5^3 ## Go package main import "fmt" type List struct { Factor, Power int Link *List } func [Image](/uploads/documents/1/6/4/5/16456415890ad5304784a63d5c72f275/p17_1.jpg) #### lib.o before Go 1.7 go object darwin amd64 go1.5 X:none $$ package lib import runtime "runtime" import fmt "fmt"0 码力 | 34 页 | 2.29 MB | 2 年前3
The Expressiveness of Go[Image](/uploads/documents/f/b/c/8/fbc8faeb9182189853827de4c2f92561/p1_1.jpg) ## The Expressiveness of Go Rob Pike JAOO Oct 5, 2010  ## Why Go? A response to Google’s internal needs: - efficient large scale programming - speed of compilation pick one.” - complexity, weight, noise (C++, Java) vs. - no static checking (JavaScript, Python) Go is statically typed and compiled, like C++ or Java (with no VM), but in many ways feels as lightweight0 码力 | 49 页 | 839.26 KB | 2 年前3
Go ProgrammingGoogle $ ^{™} $ 10  ## Go Programming Russ Cox and Rob Pike May 20, 2010  ## Go is different Go is more unusual than you might first think. Programming in Go is different Java $ ^{*} $ programs in Go, you may become frustrated. If you write Go programs in Go, you will be much more productive. Our goal today is to teach you to think like a Go programmer. *Sometimes we'll0 码力 | 60 页 | 1.04 MB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













