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

标签 java c compiler-construction programming-languages semantics

<分区>

我在阅读我的类(class)“编程语言”时遇到了这个问题,并发现它很有趣。我想要其他人对此的意见:

Some language definitions specify a particular representation for data types in memory, while others specify only the semantic behavior of those types.

For languages in the latter class, some implementations guarantee a particular representation, while others reserve the right to choose different representations in different circumstances. Which approach do you think is better and Why?

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

最佳答案

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

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

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

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

关于java - 数据类型的表示是否应由其语言规范严格指定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481778/

相关文章:

generics - 为什么 F# 泛型结构有额外的 __dummy 字段?

java - 多线程应用程序中原子 boolean 值的使用

c - C语言中如何复制到数组?

c - “BMSerial”未命名类型

c++ - 如何从安装的文件夹中读取文件c/c++

c++ - 使用汇编加速位测试操作

java - 如何在桌面应用程序中实现 java 身份验证

部署到 weblogic 时出现 Java LinkageError

java - 如何在 Eclipse 中以 Android 4.1 Jelly Bean 为目标

c++ - Qt 的 pragma 指令