计算机科学与技术这个工业大类与传统工业类别相比还很“年轻”,并且由于历史原因,整个计算机科学与技术学科的奠基都是由欧美人完成的,因此但凡诞生一门新IT技术或新编程语言,我们首先参考的都是来自欧美的外文技术书籍(影印或翻译)。

以Go为例,笔者最先接触的Go技术书籍资料是《The Way To Go》[1]

这也是笔者早期学习Go语言时最喜欢翻看的一本书,也是我目前见到的、最全面详实的讲解Go语言的书籍了,可以说是Gopher们的第一本“Go语言百科全书”。可能是由于这本书出版太早了,等国内出版社意识到要引进Go语言方面的书籍的时候,这本书使用的Go版本已经太老了。不过,这本书中绝大部分例子依然可以在今天最新的Go编译器下通过编译并运行起来。

另外一本不得不提的就是由K&R C中的K:Brian W. Kernighan老爷子[2]参与编写的《The Go Programming Language》[3]

这本书模仿并致敬《The C Programming Language》[4]的经典结构,从一个"hello, world"示例开始带领大家开启Go语言之旅。作者行文十分精炼,字字珠玑,这与《The C Programming Language》的风格保持了高度一致。而且,书中的示例在浅显易懂的同时,又极具实用性,还突出Go语言的特点(比如并发web爬虫、并发非阻塞的缓存系统等)。读完这本书后,你会有一种爱不释手,马上还要从头再读一遍的感觉,这也许这就是“Go语言圣经”的魅力吧!

不过,随着Go语言在国内的扎根和广泛应用[5],国内接纳Go较早的一批Gopher以及国内大厂“身经百战”的Gopher开始将Go语言沉淀下来,并陆续上线了自己的作品。从2020年开始,国内作者出版的Go语言相关书籍已经逐渐多了起来,并且质量也在逐渐提升。就像我在《Go语言第一课》[6] 的加餐文章《我“私藏”的那些优质且权威的Go语言学习资料》[7]中预测的那样:将有更多Gopher加入Go技术书籍的写作行列,从2021开始的3年,国内Go语言技术书籍也会迎来一波小高峰

6.18购物节前夕,我就来简单评点一下2021年至今出版的口碑还不错的Go语言新书(按出版时间顺序),大家可以趁打折力度较大的窗口按需从电商平台购买纸版书或电子书渠道购买电子书阅读^_^。


1. 《Go语言底层原理剖析》[8] 2021.8

Go语言是带有GC与运行时的语言,这就意味着很多东西不是“表面”看到的那样,比如string、切片、map等类型在运行时的表示与我们在源码中看到的有很大不同。要想玩转Go语言,不下沉到“原理”这一层还真不行。

《Go语言底层原理剖析》这本书显然也是定位了那些对Go原理有述求的这部分gopher群体。书的作者郑建勋老师是滴滴的高级研发工程师。大家知道,滴滴公司内部使用Go技术栈实现的服务比例是很高的,因此这本书也是郑老师在滴滴“摸爬滚打”后的实践检验的沉淀与总结。

这本书从Go编译构建原理起步,然后过渡到Go的几种常见复合类型(数组、字符串、切片、map)的实现原理的讲解,再到对Go核心语法函数、接口、异常处理的原理说明,最后是Go的精华,也是最难啃的部分:goroutine调度、内存分配与GC。如果从覆盖的内容全面性上,应该说基本都包含到了。

笔者在微信读书上对整本书做了阅读,从阅读体验来看,郑老师的技术十分扎实,讲解也很到位。美中不足的是,有些内容刚刚引发你想继续深入的兴趣时,书籍内容却在这里戛然而止了。如果能继续展开就更好了,也许这是基于书籍篇幅上的考量。

✩豆瓣评分:8.5 ✩微信读书推荐值:57.7%

本书在豆瓣口碑与微信读书推荐上存在一些分化,原因这个还不得而知。

2. 《Go语言设计与实现》[9] 2021.11

《Go语言设计与实现》一书是作者左书祺(Draven)在其同名开源电子书《Go语言设计与实现》[10]的基础上进一步系统整理和丰富而成。左老师的开源电子书在国内Gopher圈内有着相当好的口碑,他擅长以精美插图的方式对技术细节进行细致入微的讲解,作者甚至还专门出过一篇《技术文章配图指南》[11]来说明其文章中插图制作使用的工具以及方法。

和《Go语言底层原理剖析》一样,《Go语言设计与实现》同样聚焦在Go编译器、类型系统与运行机制的原理层面,两本书对原理的说明角度和风格各有特点,就看读者喜欢哪种。更好的方法是主题阅读,两个相互参照的看。

编写面向Go底层原理的书是有一定“风险”的,很容易随着时间的流逝而变得“outdated”,这是因为Go语言还在快速演进中,其底层实现也在不断变化,远没有Java那样成熟,所以很难像神作《深入理解java虚拟机》那般“稳定”,需要不断更新。在这一点上,纸板书反倒没有开源电子书优势明显,后者可做到以快速持续的迭代更新。

不过笔者觉得:要想对一个语言机制的底层原理理解透彻,光是掌握其当前的实现机制还不够,了解其实现机制的历史演进过程将大有裨益,而上面的两本书的价值恰恰还可以体现在这个方面,尤其是当书中的实现机制在将来过时的时候。

✩豆瓣评分:8.5 ✩微信读书推荐值:未上架

3. 《Go语言精进之路》[12] 2021.12.17

写Go语言语法方面的书风险小,Go书籍的寿命都很长,这是因为Go1兼容性[13]承诺的存在,这也是Go书籍作者的幸运。

《Go语言精进之路》[14]是笔者的作品[15],该作品主要面向一个刚刚Go入门后的Go新手,就像副标题描述的那样,聚焦于告诉一个Go入门新手如何能像Go开发团队那样写出符合Go思维和语言惯例的高质量代码。书中也有一部分底层原理的介绍,但这些介绍也都是为了配合主线的讲解。由于是偏思维、方法与技巧方面的讲解,里面的绝大部分知识点,即使是几年后,依然是有效的。这就像出版于2015年的Go语言圣经《The Go Programming language》目前看毫不过时一样。

笔者自己的书不好自作点评,下面是近期一位读者在weibo上主动at我的评价[16]

其他评价/评论大家也可以在书籍的豆瓣页面或微信读书页面上自行查看。

✩豆瓣评分:8.9 ✩微信读书推荐值:84.1%

4. 《Go语言定制指南》[17] 2022.2.1

《Go语言定制指南》是国内Go技术专家柴树衫老师既《Go语言高级编程》[18]后的又一力作,这次内容更加聚焦:围绕Go语法分析树学习Go词法分析、语法分析、语义分析以及中间代码生成的原理,并基于Go语法树对Go语言进行二次改造,基于Go语言语法裁剪出一个极小子集——凹语言,并实现其的解释执行。

更具体来说,书中主要讲解的是go/ast和go/types等Go编译器相关包的用法,比如:结合Go语言的文法、语法[19]与go/ast包输出的语法树的对应关系;使用go/types进行语义检查的方法等。

这也是目前国内第一本以Go编译器前端为中心的Go语言技术书籍,即便放眼全世界,这也是稀有的。如果你对Go编译器的工作原理、对定制Go语言十分感兴趣,那么此书是你的不二之选。

不过编译器和语言开发是门槛较高的领域,不免会出现“曲高和寡”的境遇,这本书注定是本已是小众的Go社区中的小众群体的菜。

✩豆瓣评分:暂无 ✩微信读书推荐值:暂无

5. 引进版新书简评

在豆瓣图书搜索Go技术书籍,看到下面几本刚刚出版不久(可能尚未上架)以及即将出版的几本引进版的新书,这里顺便说说。

  • 《Go语言学习指南:惯例模式与编程实践》[20] 2022.4.29

这是O'Reilly出版社于2021年3月出版的《Learning Go: An Idiomatic Approach to Real-World Go Programming》的中译版,中文版我还没有来得及读,不过原版我是粗略读过的。这本书面向Go入门群体,同时结合一些实战的例子,与《The Go Programming Language》的受众群体相似度很高。

这本书(原版)整体质量很高,语言精炼,讲解全面,更重要的是它似乎也是第一个包含Go泛型内容的Go入门书,只不过出版时,Go泛型尚未正式发布。今年3月份Go 1.18泛型落地[21]后,该书作者还对泛型章节做了修订,并在网上提供电子版供读者下载。

  • 《用Go语言自制解释器》[22] 和《用Go语言自制编译器》[23] 2022.6.1

这两本都是索斯藤·鲍尔(Thorsten Ball)在2018年自出版的书!作者使用Go语言手把手教你实现了一门类C语法的Monkey语言,从词法分析、语法分析、建立语法树并进行语法分析,到生成字节码,并实现可以执行该字节码的虚拟机,实现Monkey语言的真实执行。这本书在国外颇受好评。

作者在书中采用的是手写词法分析器和语法分析器的方式,而不是借助像ANTLR这样的parser生成工具[24],这可以让读者更加深刻的理解和认知一门编程语言的实现过程,酷感十足。

6. 小结

我们看到,2021年来出品的Go技术书籍都获得了不错的口碑,这也说明国内Go语言的整体水准在提升,对于刚刚加入Go社区的小伙伴们,这是真金白银般的好消息,看好书可以避免走弯路,节省大量时间与精力!

挑一本适合你的,该出手时就出手吧!

注意:以上豆瓣评分与微信读书推荐值都是2022.5.31的快照值,不代表后续不会发生变化


“Gopher部落”知识星球[25]旨在打造一个精品Go学习和进阶社群!高品质首发Go技术文章,“三天”首发阅读权,每年两期Go语言发展现状分析,每天提前1小时阅读到新鲜的Gopher日报,网课、技术专栏、图书内容前瞻,六小时内必答保证等满足你关于Go语言生态的所有需求!2022年,Gopher部落全面改版,将持续分享Go语言与Go应用领域的知识、技巧与实践,并增加诸多互动形式。欢迎大家加入!


Gopher Daily(Gopher每日新闻)归档仓库 - https://github.com/bigwhite/gopherdaily

我的联系方式:

  • 微博:https://weibo.com/bigwhite20xx

  • 博客:tonybai.com

  • github: https://github.com/bigwhite

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。

参考资料

[1]

《The Way To Go》: https://book.douban.com/subject/10558892/

[2]

Brian W. Kernighan老爷子: https://www.cs.princeton.edu/~bwk/

[3]

《The Go Programming Language》: http://www.gopl.io

[4]

《The C Programming Language》: http://en.wikipedia.org/wiki/The_C_Programming_Language

[5]

Go语言在国内的扎根和广泛应用: https://tonybai.com/2022/01/16/the-2021-review-of-go-programming-language

[6]

《Go语言第一课》: http://gk.link/a/10AVZ

[7]

《我“私藏”的那些优质且权威的Go语言学习资料》: https://time.geekbang.org/column/article/468213

[8]

《Go语言底层原理剖析》: https://book.douban.com/subject/35556889/

[9]

《Go语言设计与实现》: https://book.douban.com/subject/35635836/

[10]

《Go语言设计与实现》: https://draveness.me/golang/

[11]

《技术文章配图指南》: https://draveness.me/sketch-and-sketch/

[12]

《Go语言精进之路》: https://book.douban.com/subject/35720728/

[13]

Go1兼容性: https://go.dev/doc/go1compat

[14]

《Go语言精进之路》: https://item.jd.com/13694000.html

[15]

笔者的作品: https://tonybai.com/2022/01/15/go-programming-from-beginners-to-masters-is-published

[16]

近期一位读者在weibo上主动at我的评价: https://weibo.com/7541535351/LuUSQlY58

[17]

《Go语言定制指南》: https://book.douban.com/subject/35852237/

[18]

《Go语言高级编程》: https://book.douban.com/subject/34442131/

[19]

Go语言的文法、语法: https://tonybai.com/2022/05/24/an-example-of-implement-dsl-using-antlr-and-go-part1

[20]

《Go语言学习指南:惯例模式与编程实践》: https://book.douban.com/subject/35902219/

[21]

Go 1.18泛型落地: https://tonybai.com/2022/04/20/some-changes-in-go-1-18

[22]

《用Go语言自制解释器》: https://book.douban.com/subject/35909085/

[23]

《用Go语言自制编译器》: https://book.douban.com/subject/35909089/

[24]

像ANTLR这样的parser生成工具: https://tonybai.com/2022/05/10/introduction-of-implement-dsl-using-antlr-and-go

[25]

“Gopher部落”知识星球: https://wx.zsxq.com/dweb2/index/group/51284458844544

评点2021-2022年上市的那些Go语言新书相关推荐

  1. 2021—2022学年面向中小学生的全国性竞赛活动名单

    2021-2022学年面向中小学生的 全国性竞赛活动名单 序号 竞赛名称 主办单位 竞赛面向学段 自然科学素养类 1 第五届全国青少年人工智能创新挑战赛 中国少年儿童发展服务中心 小学.初中.高中.中 ...

  2. 奥飞娱乐:贝肯熊和镇魂街盲盒产品计划于2021年下半年上市

    12月26日消息,近两年,盲盒生意可谓是风靡国内市场.日前,奥飞娱乐在互动平台上回复投资者称,公司的<贝肯熊2-金牌特工>大电影计划将于2021年第二季度上映. 与此同时,奥飞娱乐还表示, ...

  3. 李宏毅2021/2022春机器学习课程(机器学习基本概念简介)

    (强推)李宏毅2021/2022春机器学习课程_哔哩哔哩_bilibili 目录 1.机器学习是什么? 2.机器学习任务 2.1 regression回归问题 2.2 classification分类 ...

  4. 第二届中国Rust开发者大会(RustChinaConf 2021~2022)线上大会正式开启报名

    | 转载自:Rust语言中文社区 | 编辑:李佳阳 | 责编:王玥敏 经过紧锣密鼓的筹备后,我们高兴地向大家宣布,第二届中国Rust开发者大会(RustChinaConf  2021~2022)线上大 ...

  5. 2021星巴克月饼全新上市;上海名品奥特莱斯二期项目于9月正式亮相 | 知消

    美味与环保同行,2021星巴克月饼全新上市.星巴克今年在月饼口味上进行了大胆创新与尝试,集结多个享誉全球的美食圣地的代表风味,演绎月饼这一具有悠久历史的传统食物.无论是甜党还是咸派,无论是经典口味的忠 ...

  6. 2018/2019/2020/2021/2022/2023年度计划阅读书籍(持续更新)

    2018/2019/2020/2021/2022/2023年度计划阅读书籍 1. Java加密与解密的艺术(第二版) 作者:梁栋 在读 2. Spring源码深度解析 作者:郝佳 在读 3. 深入理解 ...

  7. 二维和三维CAD设计Autodesk AutoCAD中文2021/2022/2023

    Autodesk AutoCAD 是全球著名的专业计算机辅助设计软件,用于二维绘图.详细绘制.设计文档和基本三维设计,广泛应用于机械设计.工业制图.工程制图.土木建筑.装饰装潢.服装加工等多个行业领域 ...

  8. 2021星巴克月饼全新上市;万豪旗下源宿品牌入驻中国东南区;现代汽车承诺到2045年实现碳中和 | 美通社头条...

    要闻摘要:2021星巴克月饼全新上市.万豪旗下源宿品牌入驻中国东南区.爱茉莉太平洋集团通过元宇宙举办创立76周年纪念仪式.高合汽车80万HiPhi X 4座正式交付.现代汽车承诺到2045年实现碳中和 ...

  9. 2021~2022年全国考试/考证时间表(最全)

    由于疫情原因,部分考试的时间有调整,请用[微信扫码]查看最新"考试变动通知" 2021~2022年全国考试/考证时间表(最全) 2021年1月 : 托福(TOEFL) 1月9.10 ...

最新文章

  1. 【java】httpclient的使用之java代码内发送http请求
  2. Android Hook (2) Java2java
  3. 【讨论】拿什么来维护原创作者的权益?
  4. 如何从云功能调用外部REST API
  5. php 导出txt 缩进,indent - 缩进文本
  6. hibernate 简单笔记(一)
  7. Intel 64/x86_64/x86/IA-32处理器标志寄存器详解(4) - 32位EFLAGS - 状态标志与控制标志
  8. python 不定参数_人生苦短,我学不会Python。——函数中不定长参数的写法
  9. python pep8_Python 代码风格 和 PEP8
  10. vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...
  11. python判断数组中是否有重复元素_python经典面试算法题4.1:如何找出数组中唯一的重复元素...
  12. vue + el-menu 实现菜单栏无限多层级分类
  13. foreign 磁盘阵列_RAID组中的“Foreign”状态磁盘
  14. coon's patch
  15. NOI2015 小园丁与老司机
  16. js 实现html网页简繁体切换
  17. node mysql实现登陆注册_使用 NodeJs 链接 mysql 的实现登录与注册
  18. 【工业大数据】工业大数据层层深度解析!
  19. PMI-ACP练习题(15)
  20. AT+CPSMS/AT+CEDRXS - NB网络PSM 和 eDRX配置参数说明

热门文章

  1. 日文發音中的PTK法則
  2. vue 过滤器 首字母大写
  3. 最近非常火的电子木鱼流量主小程序源码
  4. android用什么更新应用程序,如何在Android上更新应用程序 教你如何更新安卓手机APP...
  5. python绘制地图的第三方库,geopandas,用python画地图原来这么简单!
  6. webrtc 中的scoped_refptr
  7. MySQL基础~多表查询分类与SQL92和99语法如何实现内连接和外连接
  8. 12.2 两个重要级数
  9. Asp.Net Mvc基于Fleck开发的多人网页版即时聊天室
  10. Vue中如何关闭语法检查