在《启示录1》中,拉里写道,我更加强调:
Raku将支持映射到单个语义模型的多个语法。其次,单一语义模型将映射到多个平台。
我对拉里在写“单一语义模型”时可能的意思有一些模糊的理解:
>
什么变成了6Model;和/或
什么变成了NQP/nqp。
(我在谷歌上搜索了一下,捕捉到了一些讨论,例如关于slashdot的讨论,但它们同样含糊不清。)
也许比回答他当时的想法更重要的是发生了什么。
他的公式听起来很像NQP和/或NQP(在Raku/NQP/NQP/NQP后端架构的中间)。
(如果是这样的话,大概这个模型是由nqp的相当于Raku烤肉的“指定”的?)
或者,根据莉兹,QAST,或者RAST?
我知道我认为谁能最好地回答我的主要问题(在标题中),但也许其他人知道?
启示录1代表了拉里最早的一些想法,在这个过程中,我们找到了今天我们所知道的拉库语。在语言设计过程的早期,我并不在场,所以我给出的任何答案都会自然而然地涉及到想象当时已知的情况。有了这个相当重要的警告,让我们看看。
语法是关于我们写的单词和符号。语义学是关于事物的意义。例如,假设我们使用的语言中有中缀操作符,并且有一个操作符拼写为。我们可以编写表达式
ab
。语义学告诉我们它的意思。虽然许多编程语言都有这种语法,但它们在与之相关的语义(即含义)上有着巨大的差异。例如:
a
和b
的类型。它可能意味着某种数字加法(使用一系列基于整数、整数秩、浮点等的规则)。然而,如果a
是一个指针,而b
是一个整数,那么根据指针的大小,实际上也有一个秘密的乘法
对我来说,语义模型是描述语义学的系统方式。可能存在的一个或多个:
正如我们观察到语法a b
可能映射到不同语言的许多不同语义学一样,我们也可以有许多语法映射到同一组语义学。即使在标准的Raku中也是如此;编写$a$b
和内缀之间没有语义区别:
虽然这可能提供了一些答案,但阅读你引用的部分后面的段落是很有趣的。下面是注释的内容。
多重语法听起来像是一件坏事,但它们对于语言的进化来说确实是必要的。
我认为“进化”的使用在这里很重要,因为允许语言的语法以受控的方式改变,事实上,允许语言语法的不同突变共存。此外,适者生存也适用(适者生存很可能是语言使用环境的函数)。给定的语法是语言的接口,例如,值得发火的东西可以随着时间或上下文而改变,期望它可能会进化,同时仍然提供对相同的潜在行为集的访问,这并不是不合理的。
无论如何,我认为我们可以将其视为用户定义运算符和俚语等预见性功能。
在某种程度上,我们在Perl5中已经有了一个多语法模型;每次使用pragma或模块时,都会扭曲所使用的语言。
我觉得这一部分有点奇怪,因为“语言”不仅是语法,而且是语义,事实上很多pragma改变了语义,而不仅仅是语法。另一方面,它确实说了“在某种程度上”,这是一个很好的避险手段
只要从模块顶部的声明中可以清楚地看出您使用的语言版本,这就不会有什么问题。
这意味着语言突变是有范围的事情。它们最终是词汇范围,而不仅仅是文件范围。这并不完全令人惊讶;在设计过程中,词法范围界定的效用似乎越来越被认识到。
从Perl5到Perl6本身的迁移就是一个特别有力的例子,说明了支持多个语法将允许继续发展。
这表明当时的想法是Perl 5和Perl 6(现在的Raku)有足够的共同点,可以共享一个语义模型,并在同一个运行时运行。正如我们所知,事情并没有这样发展,然而在《启示录1》写的时候,我可以想象这是一个假设。事实上,它可能在相当长的一段时间内仍然是一个;例如,PONIE(尝试在鹦鹉虚拟机上运行Perl 5的项目)在几年后仍在进行。
事实上,随着语言设计的出现,原本可以实现这一点的单一语义模型变得不切实际。为此,将Perl6的特性引入Perl5的各种努力都遇到了困难。Smart match是这方面的典型代表,问题根本不在于语法,而在于语义:在Raku中,事物总是知道它们的类型,而在Perl 5中,标量可能同时包含字符串和数字表示,这取决于直到那时为止值的使用方式。该特性是基于Raku语义模型中的某个东西预测的,在Perl5语义模型中没有直接的等价物。
另一个有趣的地方是,目前正在进行的RakuAST工作将提供Raku语言的文档对象模型形式。我们可以将其视为表示为对象图的Raku的替代语法。鉴于它也将是编译器前端用于Raku代码的表示,我们也可以将其视为Raku语义模型的一种与语法无关的网关。而且,当我们真正拥有俚语时,可以预期它们将通过将与附加俚语语法相关的语义学表达为RakuAST节点的组合来实现——因此最终,将在单个Raku语义方面提供新的语法模型。
TF-IDF TF(term frequency),表示一个词在一个文档中出现的频率;IDF(inverse document frequency),表示一个词出现在多少个文档中。 它的思路是这样的:同一个词在短文档中出现的次数和在长文档中出现的次数一样多时,对于短文档价值更大;一个出现概率很低的词一旦出现在文档中,其价值应该大于其他普遍出现的词。 这在信息检索领域的向量模型中做相似度计算非常有效
我尝试在浏览控制台中测试此语法,但遇到错误: 对于上面的代码,我关心的是是否会引发任何错误。
问题内容: Go中的 Value语义 和 Pointer语义 是什么意思?在本课程中,作者在解释数组和切片的内部时曾经多次提到上述术语,而我对此并不完全理解。 问题答案: 当您调用一个函数或方法并将参数传递给它时,将根据值创建一个副本,并且该函数只能访问这些副本。 这意味着,如果函数尝试修改/更改副本,则不会更改原始值。 例如: 输出(在Go Playground上尝试): 即使修改了其参数,调用
问题内容: 我迅速在Google上找到了答案,但找不到/认为准确的搜索参数。 我正在自学Java,但似乎找不到某种语法的含义。 这意味着什么?我模糊地记得箭头括号与向量有关,但是根据上面的代码,我感觉到它与枚举有关。 任何帮助或澄清将不胜感激。谢谢。 问题答案: 这些称为泛型。 通常,这些在定义类,接口和方法时使 类型 (类和接口)成为参数。 与使用非泛型代码相比,使用泛型有很多好处,如Java教