编程语言的选择
昨天我想写这篇文章,但我不喜欢我的方式。昨天晚上,我和我的一个好朋友谈起这件事,他鼓励我写这篇文章,但换一种方式。我觉得这种方式更好,所以谢谢你,老兄。
前几天,微软宣布他们正在用 Go 重写 TypeScript 编译器。很多人对此颇有微词。我也有同感,但与很多人不同。
人们最大的疑问是 “为什么不是 C#?”和 “为什么不是 Rust?”。说白了,我确实认为询问某人选择编程语言的原因是有价值的;作为专业人士,我们需要经常做出这类决定,而了解其他人是如何做出这些决定的,对于了解其他人是如何考虑这些事情的,是很有帮助的。
但这也可能……我不知道。有时,我觉得人们在选择特定技术栈时缺乏想象力。
的确,有时一些硬性要求意味着选择某种技术是不合适的。但我发现,与抽象的要求相比,这类要求往往更符合实际情况。例如,如果你愿意,可以用 Lisp 编写操作系统。但实际上,你可能不会使用这种硬件,也不愿意将环境移植到裸机上。
但同样的情况是,你往往不知道别人的实际情况是怎样的。我从未想过微软选择 Go 的主要原因,大致是 “我们正在移植现有的代码库,而不是重新编写,而且我们现有的代码看起来有点像 Go,所以移植起来很容易”。这是一个非常好的理由!我以前还真没从这个角度考虑过移植和重写的区别,现在我觉得非常有道理。
同时,
,人们在这里做得太过分了。
这里需要达成某种平衡。但同时,我也讨厌 “选择合适的工具 ”这种建议。除了艺术项目,有人会故意选错工具吗?通常情况下,之所以选择了看似错误的工具,只是因为对话者你并不清楚背景要求。
我认为,这种情况让我感觉复杂的原因还有两个。第一个是 RIIR,第二个是很久以前的一个情况,它改变了我的生活。
很多人可能都听说过 “用 Rust 重写 ”的说法。这种说法的意思是,有一些程序员总是建议每件事情都需要用 Rust 重写。虽然我相信这种情况时有发生,但我还没有看到真正的证据表明这种情况确实普遍存在。我甚至差点为此写了一篇博文,试图量化这种影响。但在某种程度上,感知就是现实,如果人们相信它是真的,那么它在某种程度上就是真实的,即使实际情况并非如此。无论提出这种观点的人有多少,在每一个关于拉斯特的主题中,人们最终都会抱怨这种效应,因此无论如何,它都会对整个讨论产生影响。虽然我不认为这种影响是真实存在的,但它绝对发生在这种特定的情况下。很多人咄咄逼人地建议,这应该用 Rust 而不是 Go,我明白他们的想法,但我也要问:真的吗?Go 绝对是个不错的选择。是不错。你们为什么非要强化这种刻板印象呢?真让人沮丧。
第二个问题是我十多年来一直在想的,但我只是在与好友聊天之外的场合才开始谈论这个问题。老读者可能还记得有一次我是个混蛋。我是说,我这辈子当过不止一次混蛋,但这次可能是对我影响最大的一次。总体情况是这样的:
有人用 Node 写了 grep。
我在网上嘲笑它,因为为什么会有人用 Node 写 CLI 工具?
作者发现我这么做了,觉得很抱歉。
回想我的道歉,我觉得这并不一定是最好的道歉。它比我写的第一、二稿要好,但从那以后,我在道歉方面已经做得更好了。无论如何,这件事改变了我的人生轨迹,如果你碰巧读到这篇文章,海瑟,我真的非常非常抱歉。
这里发生了几件事。第一件事很简单,在 2013 年,我不明白我说的话有什么意义。我讨厌谈论这件事,因为这会让我显得比自己更重要,但承认这一点也很重要。当时,我把自己看作是史蒂夫(Steve),一个随随便便的人。如果我在网上说了什么,就好像我在现实生活中和朋友聊天一样,我的话只是随便说说而已,我也是人,也是什么。它就是它。
但在我当时的生活中,情况并非如此。我是 Rails 团队的一员,我在各种会议上发言,人们阅读我的博客和推文。无论好坏,我都是一个 “有影响力的人”。但我还没有真正内化生活中的这种变化。因此,我并不真正明白,如果我批评了什么,成千上万的人都会看到。对我来说,我只是史蒂夫。这种情况发生在我们谈论 “取消文化 ”之类的东西之前,但当暴徒来找我时,我意识到:他们其实是对的。我是个混蛋,我不该这么做。我决心再也不做那样的混蛋了。
要做到这一点,我必须认真思考自己为什么会那样。我喜欢编程语言!我喜欢人们编写他们觉得有趣的程序!我不认为用一种我不希望用的语言编写工具是愚蠢的!那么,在这种情况下,我为什么觉得有理由取笑它呢?
答案是什么?一个非常典型的情况:和我混在一起的人影响了我,而且当我仔细审视时,我并不太喜欢这种方式。
你看,在当时的 Rails 世界里,存在着巨大的鄙视文化,尤其是围绕 JavaScript 和 Node 的鄙视文化。而且,当你身边的人总是在说废话时,你会发现自己也在说废话。一旦我意识到这一点,我就想阻止它。但有一个大问题:我的整个职业生活和大部分社交生活都是围绕 Ruby 和 Rails 展开的。所以,如果我想摆脱这种文化……我该怎么办?
如果你点击了我上面的道歉链接,你可能没有注意到日期:2013 年 1 月 23 日。2012 年 12 月,我刚刚经历了一些事情: 我决定试试我听说过的一种叫做 Rust 的编程语言。
当时的 “Rust 社区 ”就像一个 IRC 会议室里的四十多个人,他们给我留下的印象之一就是他们人都很好。当我在编译 Hello World 时遇到困难,并输入 /join #rust 时,我完全以为他们会给我一个 RTFM 和火焰。但相反,我却受到了热烈欢迎。大家都很热情。这真的很不错。
就这样,一个月零一天后,我意识到我的生活正朝着什么方向发展,而且我并不为此感到高兴。我想到了我对 Rust 的喜爱……再加上其他一些因素(也许有一天我会写出来),这就是我决定要把 Rust 做成一件事,并致力于实现这一目标的时候。
其中一部分原因是我意识到了文化、文化的发展以及文化随着时间的推移而演变的方式。我不希望 Rust 以 Rails 的方式结束。这意味着要做几件事,但首先是真正内化我必须改变的意识。并且明白我必须有意识地去做和说。除其他事项外,这还促成了一种 “我们根据 Rust 本身的优点来谈论 Rust,而不是对其他语言品头论足 ”的文化。(这部分也是尼采的功劳,但我已经离这篇文章的主题很远了,也许有一天吧)。
总之,永恒的九月即将到来。如果说 “Rust社区 ”曾经是一个连贯的概念的话,那么现在它已经没有任何意义了。它也绝非完美无缺。我对事情的结果有很多批评意见。但我认为,“Rust 让你变性 ”成为一个流行语并非巧合。我为我们所做的一切深感自豪。
所以,无论如何,人们选择编程语言进行项目的原因是多种多样的。当然,可能有更好或更差的选择。但你的背景可能与别人不同,所以当别人做出了你不同意的选择时,你没必要对此大惊小怪。
本文文字及图片出自 Choosing Languages
你也许感兴趣的:
- Julia 的新天地
- 【程序员搞笑图片】数据类型简明指导
- 33 种编程语言的 UUIDv7 实现
- 【外评】Rust,你错了
- 【外评】为什么人们对 Go 1.23 的迭代器设计感到愤怒?
- 华为自研编程语言“仓颉”来了!鸿蒙应用开发新语言,性能优于 Java、Go、Swift
- 【外评】JavaScript 变得很好
- 【外评】华为发布自己的编程语言 “仓颉”
- VBScript 废弃:时间表和后续步骤
- 【外评】BASIC 编程语言 60 岁了
你对本文的反应是: