问题标签 [language-implementation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
8937 浏览

linux - 如何实现一个实用的光纤调度器?

我知道使用协程作为基础和实现玩具调度程序的基础知识。但我认为这是对整个异步调度程序的过度简化的看法。我的想法中缺少一整套漏洞。

如何防止 CPU 运行空闲/等待的调度程序?一些纤程只是休眠,另一些则等待操作系统的输入。

0 投票
7 回答
7589 浏览

c++ - C++的多重继承是如何实现的?

单继承很容易实现。例如,在 C 中,继承可以模拟为:

但是对于多重继承,编译器必须在新构造的类中安排多个父级。它是如何完成的?

我看到的问题是:父母应该安排在AB还是BA,或者甚至其他方式?然后,如果我进行演员表:

编译器必须考虑是否改变原始指针。虚拟机也需要类似的棘手事情。

0 投票
1 回答
368 浏览

java - 私有内部类合成了意想不到的匿名类

当您使用私有内部类编译 Java 类时,由于某种原因,匿名类似乎与它一起自动合成。这个类足以重现它:

编译时,这会生成预期的SynthesizeAnonymous.classSynthesizeAnonymous$InnerClass.class文件,但它也会生成一个奇怪的文件,该文件对应于已合成SynthesizeAnonymous$1.class的匿名子类。java.lang.Object如果你用 来查看反汇编javap,它的默认构造函数似乎InnerClass获得了这个匿名类型的隐藏参数,并null在调用时传递给它new InnerClass()

为什么要创建这个类?即使InnerClass它不是静态的,它也会被创建,但如果InnerClass它不是私有的或没有创建任何实例,InnerClass则不会创建它。它是某种形式的访问控制吗?这是如何运作的?

0 投票
2 回答
1539 浏览

parsing - Lisp 更擅长解析什么?

我想在 Lisp 方言中实现一个 Lisp 解释器,主要是作为一个学习练习。我被甩掉的一件事就是这个领域有多少选择。首先,我对了解一些已经存在了一段时间的 Lisp(如 Scheme 或 Common Lisp)更感兴趣。我不想使用 Clojure 来执行此操作,因为我已经使用过它。:-)

那么其中一种口味在解析方面是否比其他口味更好?你认为在 Common Lisp 中实现 Scheme 是个好主意吗(反之亦然)?或者两者之间会有足够的差异让我失望吗?

如果它有什么不同,我想要一些跨平台的东西。我有一台 Windows PC、一台 Mac 和一个 Linux 机器,我最终可以在其中任何一个上写这个。

0 投票
7 回答
13934 浏览

c - C: `const` 关键字的行为

有人告诉我,如果我在 ANSI C 中编码以按使用变量的顺序声明,则断言指针不为空且索引在界限内,并在使用变量之前进行初始化。

如果我声明一个const,我可以在一段断言和代码之后初始化它吗?

在 Java 中,最终初始化必须在声明时进行,但是通过 ANSI C 实现是否一致,我可以初始化const一次,但不一定在声明时进行?

0 投票
1 回答
3093 浏览

javascript - IE8 JavaScript:select.options 行为

我今天在 IE8 的 DOM 选择元素的 JavaScript 'options' 属性的实现中发现了一些奇怪的行为。

给定以下 HTML:

和javascript:

显然,在 IE8 上编写 select 实现的聪明人已经在 select 元素上编写了一个索引器,然后让它作为自己的“选项”属性暴露给 JavaScript。

我的问题是:根据 JavaScript 语言规范,这是预期的功能吗?这是一个已知的错误?我是否应该继续将“选项”属性视为对象,而不是专门的数组?

这不是在 Firefox 3.5、Chrome 1.0 或 Safari 3.1 下 select DOM 元素的行为方式,其中 'options' 属性作为 JavaScript 数组公开......

作为参考,当我将 'options' 属性传递给 jQuery 构造函数以包装其元素时,我遇到了这个问题。与带有 X 元素的 jQuery 对象的预期结果不同(使用 Firefox、Chrome 和 Safari),我返回了一个带有 1 个元素(选择元素本身)的 jQuery 对象。

0 投票
7 回答
97841 浏览

java - 为什么接口中的所有字段都是隐式静态和最终的?

我只是想了解为什么接口中定义的所有字段都是隐式staticfinal. 保留字段的想法static对我来说很有意义,因为您不能拥有接口的对象,但为什么它们是final(隐式)?

任何人都知道为什么 Java 设计人员会在界面中制作字段staticfinal

0 投票
6 回答
5038 浏览

python - 究竟什么是“注册机”?

http://code.google.com/p/unladen-swallow/wiki/ProjectPlan我引用:

“使用 JIT 还可以让我们将 Python 从基于堆栈的机器转移到注册机器,这已被证明可以提高其他类似语言的性能(Ierusalimschy 等人,2005 年;Shi 等人,2005 年)。”

在大学里,我为带有递归过程的语言构建了一个简单的编译器——它为每个调用的过程维护堆栈帧——这样它们就可以被递归调用,这样参数和返回值就可以工作......

2件事:

1)考虑到上面引用中使用的术语,我认为我实施的东西将被视为“基于堆栈的机器”是否正确?

2) 如果我在第 (1) 点的假设是正确的,那么“注册机”是如何工作的?即它与基于堆栈的机器有何不同?

谢谢!

0 投票
9 回答
47902 浏览

java - java.util.HashMap 和 HashSet 的内部实现

我一直在尝试了解java.util.HashMapand的内部实现java.util.HashSet

以下是我脑海中浮现的疑问:

  1. @Override public int hashcode()HashMap/HashSet 中的重要性是什么?这个哈希码在内部使用在哪里?
  2. 我通常看到 HashMap 的键是Stringlike myMap<String,Object>。我可以将值映射到someObject(而不是字符串)myMap<someObject, Object>吗?我需要遵守哪些合同才能成功实现?

提前致谢 !

编辑:

  1. 我们是说键的哈希码(检查!)是哈希表中映射值的实际事物吗?而当我们在myMap.get(someKey);内部调用 javasomeKey.hashCode()来获取哈希表中的数字以查找结果值时呢?

回答:是的。

编辑2:

  1. 在 ajava.util.HashSet中,从哪里生成 Hash 表的键?是否来自我们正在添加的对象,例如。mySet.add(myObject);那么myObject.hashCode()将决定将其放置在哈希表中的哪个位置?(因为我们不在 HashSet 中给出键)。

答:添加的对象成为键。价值是虚的!

0 投票
4 回答
6048 浏览

c++ - C/C++ 控制结构限制?

我听说 VC++(不确定哪个版本)对嵌套if语句的数量(大约 300 个)有限制。代码的形式为:

我惊讶地发现这种事情是有限制的,而且限制是如此之小。我不是在寻找关于编码实践以及为什么要完全避免这种事情的评论。

这是我认为可能有一些限制的事情的列表:

  • 范围(全局、类或命名空间)中的函数数。
  • 单个语句中的表达式数量(例如,复合条件)。
  • 开关中的案例数。
  • 函数的参数数量。
  • 单个层次结构中的类数(继承或包含)。

还有哪些其他控制结构/语言功能有这样的限制?语言标准是否说明了这些限制(可能是实现的最低要求)?有没有人在使用特定的编译器/实现时遇到过这样的特定语言限制?

编辑:请注意,上述形式的if陈述确实是“嵌套的”。它相当于: