数据类型的表示是否应严格按其语言规范指定?

时间:2013-10-20 19:25:37

标签: java c compiler-construction programming-languages semantics

我在阅读“编程语言”课程时遇到了这个问题,发现它很有趣。我想要别人的意见:

  

某些语言定义指定数据的特定表示   内存中的类型,而其他类型只指定语义行为   那些类型。

     

对于后一类中的语言,某些实现保证了   特别代表,而其他人保留选择权   不同情况下的不同表述。哪种方法   你觉得哪个更好,为什么?

我的观点是,后一种方法更好,因为我们可以定义自己的自定义数据类型,并在不同的地方和情况下以不同的方式使用它们。你觉得怎么样?

2 个答案:

答案 0 :(得分:1)

从答案的解释部分来看,看起来你完全误解了这个问题。

编程语言标准需要来自语言实现的数据类型的特定表示,即语言编译器,解释器或虚拟机。这些编译器,解释器和虚拟机的设计者可以在决定表示时给予选择,而不是相应语言的程序员。

“您认为哪种方法更好,为什么?”部分问题要求您从两个不同的角度分析设计语言的过程 - 构建语言的程序员和使用该语言编写程序的程序员。对一组程序员来说可能有用的可能对另一组程序不利。此外,一个群体可能认为好的可能实际上会产生持续的维护问题。

例如,如果规范说整数必须表示为32位,使用二进制补码表示负数,那么将语言移植到具有符号+值表示的硬件的编程语言设计者可能还有很多工作要做。另一方面,程序员使用不指定表示的语言编写并假设表示在所有平台上都相同可能会创建完全不可移植的程序。

答案 1 :(得分:0)

我取决于你要实施的目标。

某些语言(如C)直接表示内存中的数据,但Java表示Java虚拟机的数据。

如果您询问您想要操作数据的真实机器有多接近,问题可能更准确。