问题标签 [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 投票
4 回答
220 浏览

c# - X 是枚举 - 这是根据规范吗?

测试对象是否为枚举讨论了测试对象is Enum以查看它是否包含枚举值。

这是在规范中的任何地方指定的吗?(版本 4.0 中的 7.10.10)上的条目is列出了以下可能的右手值:

  • 匿名函数
  • 方法组
  • 空值
  • 引用类型**这可能是一个枚举?
  • 可空类型
  • 不可为空的值类型 ** 这可能是一个枚举?

假设枚举值与上面列表中的“引用类型”匹配 - 规范声明如下:

...如果 D [RHS 的动态类型)] 和 T [LHS] 是相同类型,如果 D 是引用类型并且存在从 D 到 T 的隐式引用转换,或者如果 D 是存在值类型和从 D 到 T 的装箱转换。

在 的情况下,这些条件中的任何一个都严格正确is Enum吗?没有编译器支持,比如说,is classis struct

那么是is Enum根据规范支持,还是实现决策?

0 投票
1 回答
5353 浏览

python - python在哪里存储全局变量和局部变量?

几乎和问题一样local, global, static, auto, register, extern, const, volatile 变量存储在哪里?,不同的是这个线程在询问 Python 语言是如何实现的。

0 投票
5 回答
364 浏览

python - 同一种语言的语言实现如何比该语言更快?

例如,如果我用 Java 制作一个 JVM,是否有可能使我制作的实现实际上比我用来构建这个实现的原始实现更快,即使我的实现是在原始实现之上构建的,甚至可能依赖于在那个实施?

(令人困惑……)

看看PyPy。这是一个用 Python 制作的用于 Python 的 JIT 编译器。没关系,但它怎么能声称比它正在使用和依赖的 Python 的原始实现更快呢?

0 投票
1 回答
177 浏览

python - 如何向用 python 实现的语言添加回溯/调试功能?

我正在使用 python 来实现另一种名为 'foo' 的编程语言。foo 的所有代码都会被翻译成 python,并且也会在同一个 python 解释器中运行,所以它会 JIT 翻译成 python。

下面是一小段 foo 的代码:

这将转化为:

“看门狗”是一个greenlet(生成的代码也在greenlet上下文中运行),它将监控/限制资源使用,因为该语言将运行不受信任的代码。

从示例中可以看出,在生成 python 代码之前,将对解析树进行小幅更改,以便添加看门狗开关并对函数标识符进行小幅更改。

为了满足所有要求,我还必须在语言中添加回溯/调试功能,这样当 python 运行时抛出异常时,用户将看到的是 foo 的代码回溯(而不是显示生成的 python 代码回溯)。

假设用户创建了一个名为“program.foo”的文件,其内容如下:

这将转化为:

然后,“program.foo”的输出应该是这样的:

有没有简单的方法可以做到这一点?我更喜欢不涉及检测 python 字节码的解决方案,因为它是解释器实现的内部,但如果没有别的,那么检测字节码也可以做到。

0 投票
3 回答
491 浏览

java - java中的移位操作实现

我最近在 Java 中使用了移位运算符,并注意到该>>运算符与 C 中的含义不同>>。在 Java>>中是有符号移位,它使第一位保持相同的值。在 Java 中,相当于 C 的 shift 是>>>运算符。左移运算符 ( <<) 与 C 中的相同,只是移动忽略第一位。

我想知道的是

  • 为什么要做这个改变?
  • 为什么符号不一致,所以 >> 和 << 是有符号移位而 >>> 和 <<< 是无符号的?
  • 有符号的班次运算符有什么用吗?
0 投票
2 回答
1599 浏览

python - inspect.currentframe() 在某些实现下可能不起作用?

根据文档

inspect.currentframe()

返回调用者堆栈框架的框架对象。

CPython 实现细节:此函数依赖于解释器中的 Python 堆栈帧支持,并不保证在所有 Python 实现中都存在。如果在不支持 Python 堆栈框架的实现中运行,则此函数返回 None。

为什么只有这个函数被标记为“依赖于实现”?如果这个功能不起作用,是不是类似的功能,例如inspect.traceinspect.stack等也不能使用?

另外,“堆栈框架支持”是什么意思,为什么会不存在?

0 投票
1 回答
590 浏览

ruby - 线程安全的 Ruby 解释器是什么意思?

2000 年的一次采访中(也就是 YARV 之前),Matz 说

Matz:我想让它更快更稳定。我计划完全重写 Ruby 2.0 的解释器,代号为“Rite”。它将更小、更容易嵌入、线程安全且速度更快。它将使用字节码引擎。我可能需要数年时间才能实现,因为我正忙于维护当前版本。

在这种情况下,“线程安全”是什么意思?允许您使用绿色线程的解释器?允许您使用本机线程的解释器?没有全局解释器锁的解释器(YARV Ruby 术语中的 GVL)?

0 投票
1 回答
2171 浏览

java - java中优先级队列的默认大小

我想知道为什么Java 中 PriorityQueue的默认大小是11. 我查看了实现,它让我更加困惑。

优先级队列被实现为一个堆。使用此功能调整其容量:

我不明白11容量的初始值。我认为容量应该永远是2级别的数量。任何澄清?

0 投票
2 回答
11243 浏览

c# - C#中的foreach是如何实现的?

foreach在 C# 中究竟是如何实现的?

我想象它的一部分看起来像:

但是我不确定到底发生了什么。enumerator.Current每个周期使用什么方法返回?它是返回 [for each cycle] 还是需要一个匿名函数或其他东西来执行它的主体foreach

0 投票
1 回答
322 浏览

vector - 为什么`vector`实现有多种情况?

这是clojure的定义vector

为什么会有这么多案例?或者,如果有这么多,为什么没有更多?

我的猜测是它在实现效率和概率之间取得了平衡,但我不太明白这会如何更有效。