锁定老帖子 主题:D语言编译器DMD开源了!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-07
引用 经过试验,我已经在WindowsXP Sp2下成功编译出DMD的Release版本!
能把试验过程给出来吗?我也想试试。 |
|
返回顶楼 | |
发表时间:2009-03-08
简单说下:
1.先下载 http://ftp.digitalmars.com/dmd.1.041.zip ,DMC 2.解压DMC,设置路径,然后到src目录,运行 make -fwin32.mak即可. 3.win32.mak可能要设置下:就是把路径设置正确,设置为你DMC中的路径 |
|
返回顶楼 | |
发表时间:2009-03-13
night_stalker 写道 突然想到:为什么不用D来写DMD呢?
C是移植性最好的语言, D现在有三个平台的实现, 用C来做是很自然的. 实际上如果能够用OCAML/Haskell等来写的话, 代码量会少得多. 毕竟用C写程序, 需要处理的琐碎事情太多了. |
|
返回顶楼 | |
发表时间:2009-03-19
最后修改:2009-11-04
C++的编译器也不是C++写的啊。追求这种东西,个人觉得没有太大的意义。
|
|
返回顶楼 | |
发表时间:2009-03-24
怎么又个
idgen not found 的错误啊 编译不果去啊 |
|
返回顶楼 | |
发表时间:2009-03-25
enderhml 写道 怎么又个 idgen not found 的错误啊 编译不果去啊 1.屏蔽path中其他c++编译器. 2.设置好make文件中的路径. 已经给你回短信了,发给你我修改过的make文件. |
|
返回顶楼 | |
发表时间:2009-06-28
今天看了龙书的自举(bootstrapping),觉得 D 语言编译器应该用 D 写才对(至少大部分)……
大部分成熟编译器都是自举的 —— 优化开发过程,并显示语言的优点和设计者对语言的信心。 Lisp 一开始只有一个耗费巨大工程手写汇编弄出来的阳春的编译器,后来大神发明了 eval 函数,于是出现了解释器,后来一群大神用 Lisp 写了编译器,然后用解释器运行编译器的代码,来编译 编译器的代码 —— Lisp 自举编译器就这么神奇的诞生了 …… C 的跨平台移植,就是用 C 写编译器,然后交叉编译。 最初的 Pascal 编译器使用 Fortran 写的,后来改用 Pascal 写了。 我觉得 Ruby MRI 的 miniruby 也是一种 bootstrap 技术,Rubinius 就几乎全用 Ruby 写了 …… |
|
返回顶楼 | |
发表时间:2009-06-28
night_stalker 写道 今天看了龙书的自举(bootstrapping),觉得 D 语言编译器应该用 D 写才对(至少大部分)……
大部分成熟编译器都是自举的 —— 优化开发过程,并显示语言的优点和设计者对语言的信心。 Lisp 一开始只有一个耗费巨大工程手写汇编弄出来的阳春的编译器,后来大神发明了 eval 函数,于是出现了解释器,后来一群大神用 Lisp 写了编译器,然后用解释器运行编译器的代码,来编译 编译器的代码 —— Lisp 自举编译器就这么神奇的诞生了 …… C 的跨平台移植,就是用 C 写编译器,然后交叉编译。 最初的 Pascal 编译器使用 Fortran 写的,后来改用 Pascal 写了。 我觉得 Ruby MRI 的 miniruby 也是一种 bootstrap 技术,Rubinius 就几乎全用 Ruby 写了 …… 个人觉得这是一种骚包的做法。。 pypy就属于这种小骚包么 |
|
返回顶楼 | |
发表时间:2009-06-28
最后修改:2009-06-28
不是骚包 …… 编译器非常的复杂,全部用 C 写会很累很复杂。(Fortran 编译器是手写汇编的做出来的,弄了十几年)
譬如用 python 写了 python 编译器,然后解释执行编译自己(这步比较慢)。 编译后的编译器性能比解释执行好,用来编译其它 python 代码就很快了。 |
|
返回顶楼 | |
发表时间:2009-06-30
最后修改:2009-06-30
C的优势主要在于从模块化到ISA这一步,只要计算机还存在ISA为基础的架构设计标准C就永远不会淘汰。所以操作系统绝对不可能用C以外的语言来挑大梁,scheduler/syscall/ipc等东西只可能用C或者同样抽象程度的语言来实现。甚至于很多vm的gc,虽然C# gc是C++的,但是就我听到的,"it can almost compile as c"。总之从ISA开始的第一层抽象是C的舞台。
编译器总的来说是个算法多于效率的东西,用c写个ll(k)paser都是让人很郁闷的事情,更别说后面的一大堆IR,DFA,CodeGen,都需要大量合适的算法来表达。我觉得自举编译器确实有些烧包的成分,比如对于一个主要优势不在表示算法的语言来说,现在选择这么多不一定非要自举才算完成一个语言。但是确实也不是非要用C,我觉得一门新语言的设计用脚本语言之类应该就不错。 |
|
返回顶楼 | |