ANSI标准化过程的注释

发布于 2025-02-03 00:11:22 字数 146 浏览 2 评论 0 原文

在某个地方,我看到了ANSI委员会中有人的一些个人笔记。我以为是肯特·皮特曼(Kent Pitman),但搜索他的网站并没有任何事情。 Google也没有。

我对决定不将条件系统与CLOS集成的背景感兴趣。 Cltl2将其作为既成的成就,我很好奇为什么它没有发生。

Somewhere I saw some personal notes from someone who was on the ANSI committee. I thought it was Kent Pitman, but a search of his site doesn't turn up anything. Neither does Google.

I'm interested in the background of the decision not to integrate the condition system with CLOS. CLtL2 speaks of it as a fait accompli, and I'm curious as to why it didn't happen.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神经暖 2025-02-10 00:11:22

条件系统没有与CLOS集成,因为存在与未基于关闭的现有状态系统的实现(在至少一种情况下是基于风味的),因为直到标准化中很晚才完全不存在CLOS过程。由于条件系统在任何实施中都具有很深的根源,因此要求这些实现将其肠道的很大一部分剥夺并用一些基于闭合的胆量代替它们,这将使它们置于这些方面 - 这是实现的目的首先使复杂的条件处理成为可能 - 处于巨大的劣势。这样做本来是愚蠢的,并且本来会脱轨,因为这些实施的代表将对这样的决定有很大的影响。因此做出了正确的决定。

目前尚不清楚可以在库存硬件上真正表现出色(也许仍然不清楚,但是库存硬件现在如此之快,我们都很高兴地使用其他语言的实现,这些语言比良好的CLOS CLOSSHITATION都慢得多。可能是问题不再重要)。 CL也被认为是非常大的(很难记住我成熟的毛茸茸的CL IDE包含整个高度启发的且所有自己的文档都是我的Web浏览器的大小的2/3),因此人们考虑了不包含CLOS的子集实现的考虑但确实需要包含条件系统。

特别是值得研究的是CLHS问题(不是规格的一部分),以下文本来自于此:

条件系统不应太紧地集成到关闭中,原因有两个:某些实现已经具有不基于关闭的天然条件系​​统,并且应该有可能整合天然条件和ANSI CL条件。有些人想定义一个不包含关闭但确实包含条件的ANSI常见LISP子集。

问题领域是使用Defclass,Make-In-Insance和Defthod来定义和创建条件,而不是使用更抽象的宏来隐藏条件的实施,以及将条件插槽实施的实施暴露为关闭插槽。如果用户代码以更抽象的方式编写,则可以使用不包含关闭的子集语言运行。

这不是规范性的文字,但您可以看到人们在想什么。

The condition system was not integrated with CLOS because there were implementations with existing condition systems which were not CLOS-based (they were, in at least one case, flavors-based), because CLOS did not exist at all until pretty late in the standardisation process. Since a condition system has really deep roots in any implementation, requiring those implementations to rip out a great part of their guts in and replace them with some CLOS-based guts would have placed them – the very implementations which had gone out of their way to make sophisticated condition handling possible in the first place – at a huge disadvantage. Doing that would have been both stupid and would have derailed the standardisation process, since the representatives of those implementations would have been considerably antagonised by a decision like that. So the right decision was made.

It was also unclear at the time that CLOS could be made really performant on stock hardware (perhaps this is still unclear, but stock hardware is now so fast and we all happily live with implementations of other languages which are hugely slower than a good CLOS implementation can be so the problem no longer matters). CL was also considered really big (hard to remember when my fully-fledged hairy CL IDE containing the entire hyperspect and all its own documentation is 2/3 the size of my web browser), so people thought about subset implementations which might not contain CLOS but really needed to contain the condition system.

In particular it is worth looking at the CLHS issue (not part of the spec) CLOS-CONDITIONS-AGAIN, from which comes the following text:

The condition system should not be too tightly integrated into CLOS, for two reasons: Some implementations already have a native condition system that is not based on CLOS, and it should be possible to integrate the native conditions and the ANSI CL conditions. Some people would like to define an ANSI Common Lisp subset that does not contain CLOS but does contain conditions.

The problem areas are the use of DEFCLASS, MAKE-INSTANCE, and DEFMETHOD to define and create conditions, rather than using more abstract macros that conceal the implementation of conditions in terms of CLOS, and exposure of the implementation of condition slots as CLOS slots. If user code was written in a more abstract way, it could run in a subset language that did not contain CLOS.

This is not normative text but you can see what people were thinking.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文