编译型语言和解释型语言
高级语言—>机器语言(必须经过翻译)
翻译的方式有两种:编译和解释
- 编译型语言是把代码直接翻译为二进制机器语言并进行保存,执行时直接执行二进制文件。(翻译一次)
- 解释型语言是是在程序运行时进行的,边翻译边运行,再次运行时必须重新进行翻译。(重复翻译)
- 混合型语言:同时具有编译和解释两个步骤,如Java,先编译为java字节码,然后通过虚拟节对字节码进行解释。(同时兼顾速度和灵活性)
动态语言和静态语言
【动态语言是一种在运行时执行静态语言在编译时做的事情的高级语言,这些事情可以包含【通过添加新代码,通过扩大对象和定义,或者通过改变类型系统】的扩展程序,尽管类似的事情所有语言都能够【通过不同难度,复杂度,性能开销】进行模拟,但是动态语言可以直接提供工具来利用它们,许多这些特性第一次被实现为本地特性是在Lisp编程语言中】
【许多动态的语言同时也是动态输入的,但并不是所有都是,动态语言经常被称为“脚本语言”,尽管“脚本语言”这个术语在最狭义情况下指的是那些特定于给定运行时环境的语言】
【eval】【许多动态语言提供eval函数,这个函数接受一个包含这种语言代码的字符串变量,然后执行它,如果这个代码代表一个表达式,结果就会有一个返回值】
【运行时对象改变】【一个类型或者对象系统在动态语言中通常可以在运行期被改变,这也就意味着【从运行期定义或者基于已经存在的类型或对象的混合类型】产生了新的对象,这也同样涉及到改变继承或者类型树,因此改变了已有类型的表现形式【特别是对方法的调用】】
【函数式编程】
【闭包】【闭包是动态语言的函数式编程被利用最广泛的点之一,它允许创建一个新的【保留使用它所创建的上下文的权利】函数实例,闭包是函数式编程的核心工具之一,并且许多语言在函数式编程中都至少支持到这种程度】
【延续】【一些动态语言的另一个特性就是延续,延续表明着执行状态可以被重复唤醒。】
【反射】
【宏】
静态语言是运行时结构不可变的语言。
网友评论