主要观点:Go 语言被认为是最遭人讨厌的编程语言,它以 20%的复杂度提供 80%的效用,人们往往想要 81%、85%或 97%的效用,而增加这些效用会带来更多工作。Go 语言的一些设计如 struct tags、testing support、goroutines 等体现了 80/20 设计原则,很多语言追求 100%设计但成本过高。同时,语言的新增功能会增加用户学习成本,80+%的语言需要编码指南,语言的实现者也会面临工作,如 Swift 开发多年但编译器仍存在问题,而 Go 语言从 1.0 版本起就快速、跨平台且健壮。
关键信息:
- Go 以 20%复杂度提供 80%效用,人们常追求更多效用但需更多工作。
- Go 的 struct tags、testing support、goroutines 等体现 80/20 设计。
- 多数语言追求 100%设计成本高,如 C#、Swift、Rust 等。
- 语言新增功能增加用户学习成本,80+%语言需编码指南。
- Swift 开发多年但编译器问题多,Go 从 1.0 版本起就表现良好。
重要细节:
- 在 HN 上有人抱怨 Go 的 struct tags 不如注释或宏强大,作者解释这是 80/20 设计。
- Go 的标准库测试支持代码几百行,多年未变却提供基本测试功能,Java 的 jUnit 库则代码数万行且不断开发。
- Go 最初没有用户定义泛型,但内置类型如数组/切片、映射、通道是泛型的,这种 80/20 设计服务 Go 十多年。
- 语言用户学习新增功能有工作,如学习函数作为头等概念需学习新编码模式等,还需学习何时使用强大功能。
- Google 有 C++编码指南以降低 C++复杂度,Swift 开发多年但编译器仍存在问题,Go 1.0 版本起就快速、跨平台且健壮。
- 作者昨天对 Edna 进行了很多修改,包括支持代码块折叠、跨会话持久化及重构加载过程,今天在测试这些变化,若无重大问题将部署新版本。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。