所谓动态和静态语言
静态、动态是相对的,这里动态语言指的是不需要在编译时确定所有的东西,有些工作挪到了运行时完成,可以在运行时动态的添加或修改类、变量和方法。
动静态语言定义:
(1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
(2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
Objective-C为什么是动态语言
Objective-C 是在C语言基础上添加了面向对象特性,它的数据类型检查是在运行时检测的,所以说Objecttive-C是一门动态的语言。利用Runtime运行时机制,可以在运行时动态的添加变量、方法、类等。
Objective-C 使用的是 “消息结构” 并非 “函数调用”:使用消息结构的的语言,其运行时所应执行的代码由运行期决定;而使用函数调用的语言,则由编译器决定。
补充
Java具有一些动态特性,但它的数据类型检查是在编译时完成的,所以java是一门静态语言。