我在阅读我的课程“编程语言”时遇到了这个问题,发现它很有趣。我希望其他人对此发表意见:
一些语言定义为内存中的数据类型指定了特定的表示,而其他语言定义只指定了这些类型的语义行为。
对于后一类的语言,一些实现保证特定的表示,而另一些则保留在不同情况下选择不同表示的权利。您认为哪种方法更好,为什么?
我的观点是,后一种方法更好,因为我们可以定义自己的自定义数据类型,并在不同的地方和情况下以不同的方式使用它们。你怎么看?
我在阅读我的课程“编程语言”时遇到了这个问题,发现它很有趣。我希望其他人对此发表意见:
一些语言定义为内存中的数据类型指定了特定的表示,而其他语言定义只指定了这些类型的语义行为。
对于后一类的语言,一些实现保证特定的表示,而另一些则保留在不同情况下选择不同表示的权利。您认为哪种方法更好,为什么?
我的观点是,后一种方法更好,因为我们可以定义自己的自定义数据类型,并在不同的地方和情况下以不同的方式使用它们。你怎么看?
从您答案的解释部分来看,您似乎完全误解了这个问题。
编程语言标准要求来自语言实现的数据类型的特定表示,即语言编译器、解释器或虚拟机。这些编译器、解释器和虚拟机的设计者可以在决定表示时做出选择,而不是相应语言的程序员。
“您认为哪种方法更好,为什么?” 问题的一部分要求您从两个不同的角度分析设计语言的过程 - 构建语言的程序员和使用该语言编写程序的程序员。对一组程序员可能有益的事情可能对另一组程序员不利。此外,一个小组可能认为好的东西实际上可能会造成持续的维护问题。
例如,如果规范规定整数必须表示为 32 位,并使用二进制补码表示负数,那么将语言移植到具有符号+值表示的硬件的编程语言设计人员可能还有很多工作要做。另一方面,程序员使用一种没有指定表示的语言编写并假设表示在所有平台上都是相同的,可能会创建完全不可移植的程序。
我取决于你要实施什么。
某些语言(例如 C)将数据直接表示到内存,而 Java 将数据表示到 Java 虚拟机。
如果您询问要操作数据的距离与真实机器的距离,这个问题可能会更准确。