rai*_*iph 7 rakudo metamodel raku nqp
在《启示录》#1 中,拉里写道,我还强调:
Raku 将支持映射到单个语义模型的多种语法。其次,该单一语义模型将依次映射到多个平台。
我对 Larry 在写“单一语义模型”时可能意味着什么有一些模糊的概念:
图灵完备的语言/自动机;和/或
什么变成了6model;和/或
什么变成了 NQP/nqp。
(我在谷歌上搜索并找到了一些讨论,例如slashdot 上的这个,但它们同样含糊不清。)
也许比回答他当时的想法更重要的是已经发生的事情。
他的表述听起来很像它可能映射到NQP 和/或 nqp(在 Raku/NQP/nqp/NQP 后端架构的中间)。
(如果是这样,大概那个模型是由 nqp 相当于 Raku 的烤肉“指定”的?)
或者,根据 Liz++、QAST 或 RAST?
我知道我认为谁能够最好地回答我的主要问题(在标题中),但也许其他人知道?
Jon*_*ton 14
Apocalypse #1 代表了 Larry 在将我们引导到我们今天所知道的 Raku 语言的过程中的一些最早的想法。在语言设计过程的早期,我并没有参与其中,因此我给出的任何答案自然都会涉及尝试想象当时已知的情况。有了这个相当重要的警告,让我们来看看。
语法是关于我们写的单词和符号。语义是关于事物的含义。例如,假设我们使用的语言有中缀运算符之类的东西,并且有一个拼写为 的运算符+。我们可能会写出表达式a + b。语义告诉我们这意味着什么。尽管许多编程语言都具有这种语法,但它们在与之相关的语义(即含义)上却大不相同。例如:
a和b。它可能意味着某种数字加法(有一大堆基于整数、整数等级、浮点数等的规则)。但是,如果a是一个指针并且b是一个整数,那么根据指针大小,实际上也有一个偷偷摸摸的乘法。infix:<+>,这意味着无论标准库决定它意味着什么。对我来说,语义模型是描述语义的系统方式。这可能以以下一种或多种形式存在:
正如我们观察到的语法a + b可能会映射到不同语言的许多不同语义,我们也可以将许多语法映射到同一组语义。即使在标准乐中也是如此。写作$a + $b和infix:<+>($a, $b).
虽然这可能提供了一些答案,但阅读您引用的部分之后的段落很有趣。以下是注解。
多种语法听起来像是一件坏事,但它们对于语言的发展来说确实是必要的。
我认为“进化”的使用在这里很重要,因为允许语言的语法以受控方式改变,实际上确实允许语言语法的不同突变共存。此外,适者生存可以适用(并且什么是合适的很可能是使用语言的上下文的函数)。鉴于语法是语言的接口,例如,什么值得霍夫曼化,可以随时间或在上下文中改变,期望它可能会发展,同时仍然提供对相同底层行为集的访问并不是不合理的。
无论如何,我认为我们可以将其视为预见功能,例如用户定义的运算符和俚语。
在某种程度上,我们在 Perl 5 中已经有了一个多语法模型;每次使用 pragma 或模块时,都在扭曲正在使用的语言。
我觉得这部分有点奇怪,因为“语言”不仅是句法,也是语义,实际上很多 pragma 改变了语义而不是(只是)语法。另一方面,它确实说“在某种程度上”,这是一个很好的避险手段。:-)
只要从模块顶部的声明中清楚地表明您使用的是哪个版本的语言,这不会造成什么问题。
这意味着语言突变是有范围的事物。它们最终是词法范围的,而不仅仅是文件范围的。这并不完全令人惊讶。在设计过程中似乎越来越多地意识到词汇范围的实用性。
从 Perl 5 到 Perl 6 本身的迁移是一个特别有力的例子,说明对多种语法的支持将如何允许持续发展。
这表明当时的想法是 Perl 5 和 Perl 6(现在的 Raku)有足够的共同点,它们可以共享一个语义模型,并运行在同一个运行时之上。正如我们所知,事情并没有这样发展,但是在编写启示录 #1 的时候,我可以想象这是一个假设。事实上,它可能在很长一段时间内保持不变。例如,PONIE(尝试在 Parrot VM 上运行 Perl 5 的项目)在数年后仍在进行中。
实际上,随着语言设计的出现,允许这样做的单一语义模型变得不切实际。出于这个原因,将 Perl 6 中的特性引入 Perl 5 的各种努力都在努力。智能匹配是这方面的典型代表,问题根本不是因为语法,而是因为语义:在 Raku 中,事物总是知道它们的类型,而在 Perl 5 中,标量可能同时包含字符串和数字表示,取决于直到那时该值的使用方式。该功能基于 Raku 语义模型中的某些内容,而 Perl 5 语义模型中没有直接对应的内容。
另一个有趣的点是,目前正在进行的 RakuAST 工作将提供 Raku 语言的文档对象模型形式。我们可以将其视为表示为对象图的 Raku 的替代语法。鉴于它也将是编译器前端用于 Raku 代码的表示,我们也可以将其视为一种与语法无关的 Raku 语义模型网关。而且,当我们真正达到拥有俚语时,可以预期它们将通过将与附加俚语语法相关联的语义表达为 RakuAST 节点的组合来实现 - 因此最终将根据单个 Raku 提供新语法语义模型。
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |