D.NET 编译器源码发布了

  • Jonathan Allen
  • 张龙

2009 年 5 月 18 日

话题:.NET语言 & 开发架构

D 语言是一门相对来说比较新的语言,就像 ObjectiveC 一样,它试图解决 C++ 中的一些严重问题。下面的内容来自于对 Cristian Vlasceanu 的采访

D 语言在很多方面都鼓励采取“正确”的行为。比方说在 C 和 C++ 中,如果你写“"int i;”,那么 i 这个变量就是没有初始化的,这时程序员就需要敲入额外的代码“int i = 0;”来实现“正确”的行为,但 D 语言却与之不同:“int i;”会安全地将变量 i 设为其默认值(也就是 0)。要想不对 i 进行初始化,你需要额外的输入“int i = void;”来表示你是有意不对 i 进行初始化而不是因为疏忽大意。

D.NET 是 D 语言到 CLR 的移植,目前还处在试验阶段。其包含两部分,一个前端组件及一个后端组件。前端组件用来解析源码并生成抽象语法树。后端编译器接收生成的抽象语法树并生成实际的机器码或 IL 代码。虽然前端及后端组件的代码都在 CodePlex 上,但其只维护后端组件。前端组件已经超出了D 2.0 语言编译器的范围之外了。

需要注意的是:

后端组件代码的质量还不足以用在产品中,目前只是用作研究及学习目的。D 语言是一门相当复杂的语言,一些非凡的特性比如 TLS 和闭包是如何生成 IL 代码的呢?这些都很值得我们去研究。

查看英文原文:Source for the D.NET Compiler is Now Available

.NET语言 & 开发架构