1 在看书的时候无意中讲到编程语言分为解释型和编译型。我们知道软件的产生大都进过了这样的过程:(1)源程序----中间代码------机器代码;(2)源程序----机器代码。第一个过程应该是使用编译型程序设计语言,第二个过程应该用解释型程序设计语言。一过程分为编译,装配和链接,运行。二过程应该是解释,执行,两种还可以同步进行。编译型语言是说将源程序代码全部翻译成机器代码后,将机器代码保存在可执行的程序文件中。解释型语言是在编辑的时候就可以进行翻译,将它们变为可执行的代码。采用编译型环境开发软件一般要先把所有的源文件进行编译,然后装配和链接所有的源文件和库文件,形成一体化的可执行程序。在解释型环境下,在编辑代码后,保存程序文件,就可以直接运行得到结果,没有编译和链接的中间环节,方便编程开发。但由于要不断的解释器进行交互所以在开发的效率及性能上就有所下降。对于大型软件的开发,提出了较高的要求。(来源钱能C++)
2 静态语言"与"动态语言"
http://tech.it168.com/d/2008-01-27/200801272324341.shtml
我的理解:
静态类型语言(Statically typed language) 就是指在运行之前编译时要检查数据的类型的语言。如目前主流的开发语言C、C++,JAVA,C#.
动态类型语言(Dynamically typed language)就是指在运行的时候才去检查数据的类型的语言。如大部分脚本语言,ruby,Python。所谓动态就是在运行的时候根据给变量或者对象的值的类型来确定其类型。
静态编程语言(Statical programming language)就是指运行的时候不可以改变数据类型的结构。动态就是相反了哦。
区分静态和动态可以从语言语法和结构上区分。
3 http://www.kuqin.com/language/20090314/39854.html
来源)
1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
可以再去看看http://hi.baidu.com/kkwtre/blog/item/1402c410dec1cc03203f2e63.html 有他另外的看法。