动态编程语言的定义说“这些语言是那些在运行时执行多种通用行为的语言,这与在编译时执行相同操作的静态编程语言相反。它可以通过添加新代码、扩展对象和定义来实现” .据我所知,许多编程语言都以 Java 等包或 C++ 等头文件的形式进行封装。因此,作为程序员,我将编写的代码肯定会在编译时扩展,并最终转换为汇编代码,最后转换为机器代码。那么每一种高级语言都变得动态了吗?
1 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
一般来说,可以通过类型系统来区分静态和动态编程语言。在动态类型系统中你可以有以下
var x = 2
x = "c"
意思是,给定变量的类型可能会在其生命周期内发生变化。静态类型系统不允许这样做。C#dynamic数据类型是此功能的一个示例。
注意不要将动态与推断或弱类型系统混淆。推断类型系统不需要变量的正式声明,但会根据分配的值推断类型。它不允许用不同的类型重新声明变量。
var x = 2 // the type of x is int
x = "C" // compile error: incompatible types!
弱类型系统允许与声明的变量类型不兼容的操作。C 允许将指针转换为任何类型:
foo(void *ptr) {
char *str;
strcpy(str, (char *)ptr);
int i = &(int *)ptr + 1;
}
类型系统的所有组合都存在,有时使用相同的编程语言:静态/动态、隐式(推断)/显式、弱/强。
添加回答
举报
0/150
提交
取消