DLR 基础:运行时、编译时、动态与静态语言解析
1. DLR 与 CLR 的关系及优势
DLR(动态语言运行时)构建于 CLR(公共语言运行时)之上,这使得基于 DLR 的应用程序能自动受益于 CLR 的服务。例如,在 DLR 托管 API 中利用了 .NET 应用程序域和远程处理功能,允许在单独的进程或远程机器上托管动态语言。同时,CLR 的垃圾回收机制也可供基于 DLR 构建的动态语言使用。若不借助 DLR、CLR 或 JVM 来实现一门语言,实现垃圾回收器等功能将是一项艰巨的任务。
以 IronPython 为例,它是一个解释 Python 代码的运行时,且基于 DLR 构建。当运行 IronPython 代码时,会有 CLR、DLR 和 IronPython 这三个语言运行时协同工作。
2. 运行时(Runtime)与运行时间(Run Time)的区别
为避免混淆,需明确“运行时(Runtime)”和“运行时间(Run Time)”的区别。在本文语境中,运行时是一个软件组件,而运行时间指的是代码运行的时间。例如,说“我的程序在运行时间抛出异常”,人们能理解为“你的程序在运行时抛出异常”;但说“我的程序在运行时抛出异常”就不太合适。在其他书籍或文章中,这两个词可能看似可以互换,但本文为便于讨论,对它们进行了区分。
3. 运行时间与编译时间的对比
“运行时间”和“编译时间”常用来表示某件事是在程序执行时还是编译时发生。运行时间指代码运行的时间,编译时间指代码正在被编译的时间。下面通过典型的活动流程来对比两者。
3.1 编译时间活动流程
编译时,编译器将源代码作为输
超级会员免费看
订阅专栏 解锁全文
4

被折叠的 条评论
为什么被折叠?



