专栏名称: 无垠王垠
分享
今天看啥  ›  专栏  ›  无垠王垠

5 年多以前,我写过一篇文章分析 Go 语言的各种设计问题,包括-20200215131115

无垠王垠  · Wei  · 程序员  · 2020-02-15 13:11

2020-02-15 13:11

5 年多以前,我写过一篇文章分析 Go 语言的各种设计问题,包括「没有 generics」。网页链接 我在 Sourcegraph 的时候改过他们的后端 Go 代码,我知道那种同一个函数写几遍,看面条代码的滋味。Go 语言的社区终于意识到这个问题,并且试图把 generics 加入到 Go 语言。到目前为止,这个努力还没有实现成功。

这个 YouTube 的讲座解释了 Go 语言的 generics 设计:网页链接。我看了那些加进 generics 的代码,眼睛都花了。[允悲]

实际上 Go 语言这种「基于 interface」的设计,是我在 IU 的时候有一段时间着迷的方向。我试图设计出这样的一个语言,它的类型系统完全基于 interface。然而在进一步思考,通盘考虑之后,我发现 interface 设计并不能简单直观的对事物进行建模,并不是正确的模型,所以后来就丢弃了这个想法。没想到过了不久,这个想法被 Go 语言当成了伟大的发明,以为可以取代一切。

Go 语言要想加入 generics,必须让已有的 interface 系统与它无缝融合。这不是一个简单的事情,因为 interface 的设计里面已经有很多复杂,绕弯的地方。Go 语言的语法设计,也使得加进 generics 变得丑陋。一开头就没考虑过 generics,鄙视 generics,现在要加进去不但困难,而且语法很碍眼。

我真的非常不欣赏 Go 语言。最早的时候因为某些人的自大,拍脑袋想出了个基于 interface 的设计,然后目空一切,声称「我们看不到 generics 有什么用」,到现在才会到了这样的局面。

Go 语言的问题不仅在于技术层面,而且在于它的社区。Go 的社区充满了浮夸的,文革一样的风气。屁大点东西就当成了不起的发明,开大会要讲一讲,下面的人一窝蜂的吹捧。真的很看不惯这种风气。

我完全不想看 Go 语言的代码。Go 语言唯一的优势 goroutine,包含的本质性东西并不难,已经出现在几乎所有的语言里面。我已经看不到任何理由使用 Go 语言。

今天看啥 -
本文地址:http://www.jintiankansha.me/t/64YpEQhhIO