哈斯凯尔2020年已死,但所有希望都没有丧失(2019年)

2022-02-18 23:54:20

Haskell 2020是人们期待已久的Haskell 2010的续集,Haskell 2010是Haskell语言的正式规范标准,所有实现都应该遵守。今天,我们有两个以前的标准,Haskell 2010和Haskell 98,但这两个标准都不符合当今时代的语言。Haskell 2020的目标是使这些旧标准符合语言的实际使用方式。

如今,Haskell只有一个真正的实现:格拉斯哥Haskell编译器(GHC)。GHC是一个兼容Haskell 2010的编译器,但通过语言扩展扩展Haskell,即明确选择偏离标准的功能。在GHC 8.6.5中,有125种不同的语言扩展名,一项分析显示,10%的Haskell文件支持10个或更多扩展名。

所有这一切都意味着,在现实世界中编写的Haskell中有很大一部分与Haskell 2010不兼容。情况只会变得更糟。

你可能不会马上明白为什么这是件坏事。尽管GHC是一款优秀的软件,但将我们的语言与单个实现捆绑在一起是不明智和短视的。只要Haskell是通过GHC中的实现隐式定义的,就没有其他实现有机会——它们将永远在追赶。

C++在早期调皮中处于类似的情况;事实上C++编译器GCC是镇上唯一的重击者。虽然它完成了这项工作,但它有一些非常糟糕的人体工程学——如此糟糕,以至于它催生了一个家庭手工业,试图产生最糟糕的错误信息。2007年,另一种工业强度编译器Clang发布,它努力与GCC兼容,但也极大地改善了人体工程学。这种友好的竞争促使这两个项目都取得了显著的进步。

在哈斯克尔的世界里,我们也看到了类似的有益竞争(尽管肯定不那么友好)。五年前,阴谋集团完成了哈斯克尔项目的建设工作,但有一个叫做“阴谋集团地狱”的东西让每个人都感到痛苦。如果你知道它是如何工作的,它就完成了任务,所有的开发者都是这样做的,但是其他人都感受到了痛苦。然后,斯塔克被释放了,这优雅地解决了阴谋集团的地狱问题,并发挥了作用。这并不完美,但我的天哪,这是对世界状况的改善。在最近的记忆中,阴谋集团在其易用性方面取得了前所未有的进步,在多年的可用性抱怨中苦苦挣扎。

我的观点?竞争是一件好事,不仅对用户,而且对整个生态系统的健康也是如此。从广义上讲,我们应该用怀疑的眼光看待当今哈斯克尔世界的现状。对哈斯凯尔的定义有一个好的、规范性的说明,这将大大有助于缓解这个问题。

那我为什么要提起这些?我的印象是,目前的努力几乎名存实亡。在过去24个月中,官方邮件列表中有12个月没有看到任何活动。在确实出现活动的月份中,有几个月份的数据量是以字节为单位的。在撰写本文时,官方网站Haskell 2020的证书已过期,已过期两周。

所有这些都不是要妖魔化标准委员会。但无论出于何种原因,很明显,Haskell 2020不会在其当前的化身中发生。毕竟,2020年即将到来!

请原谅这场闹剧,但我真的相信这种情况对我们热爱的语言和社区来说是一种生存风险。已经有人抱怨不满,也有很多人抱怨缺少好的工具(尽管很遗憾,我现在找不到任何链接)

那么这里真正的问题是什么?作为一个彻头彻尾的局外人——从我与Haskell 2020委员会一些成员的讨论中可以看出——我的猜测是:缺乏领导力。不是委员会成员不关心,而是没有人足够关心克服这种势头,推动事情完成。此外,这些人忙于自己的酷项目,委员会的工作总是吃力不讨好。

好消息是:缺乏领导力是一个很容易解决的问题。如果你关心这个问题,那就接受统治吧。这就是全部。任何人都能做到。是的,即使是你,温柔的读者!没有人需要把你提升到权力的位置。没有招生程序。你不需要被赋予任何权力来领导这里。这是每个人都想做的事情,但有一个协调问题,唯一没有做的原因是没有人做过。

如果你想得到更多的保证:作为GHC指导委员会的成员,我将亲自批准Haskell 202x的任何合理标准草案,并投票支持GHC遵守该标准。我得到委员会至少另外两名成员的确认,他们也将这样做。

粗略估计,Haskel202x涉及的工作量约为半年。其中大部分将用于做一些不体面的行政工作,比如设定最后期限、诱骗合适的人征求意见,以及写一份又大又无聊的文件。当然不是很有趣,但非常可行。这里唯一的挑战是在六个月内不要失去动力。

如果你还有疑问,我想举另一个例子:GHC指导委员会。尽管有一些(公平的)批评,但从各方面考虑,指导委员会是一个相当成功的组织。但从字面上说,取得成功的唯一原因是约阿希姆对成功的不屈不挠的渴望。如果没有他每月的电子邮件提醒每个人要做的工作,以及谁对什么负责,委员会将在三个月内崩溃。没有人给约阿希姆这个责任,他只是承担了并拥有了它。在我看来,整个哈斯凯尔社区在这方面深深地感谢约阿希姆。

如果所有这些听起来都很鼓舞人心,我敦促你承担起责任,让这件事发生。这是朝着一个更好的哈斯克尔世界迈出的第一步,也是一个令人惊讶的可行的步骤。你可以帮助世界变得更好,当你成功的时候,我们都会感激你。