Go 学习笔记 1

Go 学习笔记 1

我是一个有5年 Python 开发经验的混迹在量化交易行业的后端程序员,这个系列开个坑学习 Golang。为什么选择 Go?

“A language that doesn’t affect the way you think about programming is not worth knowing.” —Alan J. Perlis (1922-1990)

图灵奖的第一任得主,图灵说如是:一个语言如果不能影响你对编程的看法,那么这个语言不值得学习。所以这些年接触了奇奇怪怪的语言:Clojure,Ocaml,Erlang等等。Go 我刚开始看到的时候觉得另类:看起来是 C 系的,不赶时髦,支持的功能异常少。但是有理由相信这是一个工程导向的,年轻的语言,没有沉重的历史包袱,出生在多核并发时代。

我觉得他会改变我对并发和现代软件工程的看法。

这是第一篇,主要记录一下我学习语言的几个角度:

  • 语法
  • 语义
  • 该语言的最佳实践
  • 标准库
  • 工具链
  • 语言实现细节

语法,这是最基础的层面,即写出合法的表达式。这其实也是不同计算机语言中最千差万别的部分,即 Lexer 部分。想想看 Clojure 的满屏括号对比 C 的满屏分号可见一斑。

语义,是下一个层次即符合语法的表达式的意义。通常对于静态类型语言,可以分成动态语义和静态语义。动态语义即程序在运行时的行为;而静态语义通常就是编译阶段的类型检查。

最佳实践,在熟悉上面两个的基础上,还应该学习该门语言的业界最佳实践。即给出一个逻辑,在该语言下的通常写法。

标准库,避免重复造轮子,同时也熟悉他们的工程性能。

工具链,包括编译器、编辑器、测试环境、部署环境等等。

语言实现细节,包括编译器、运行时、垃圾回收机制等等。

tags: Go