论坛首页 编程语言技术论坛

D语言编译器DMD开源了!

浏览 14365 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-07  
引用
经过试验,我已经在WindowsXP Sp2下成功编译出DMD的Release版本!

能把试验过程给出来吗?我也想试试。
0 请登录后投票
   发表时间:2009-03-08  
简单说下:

1.先下载 http://ftp.digitalmars.com/dmd.1.041.zip ,DMC
2.解压DMC,设置路径,然后到src目录,运行 make -fwin32.mak即可.
3.win32.mak可能要设置下:就是把路径设置正确,设置为你DMC中的路径
1 请登录后投票
   发表时间:2009-03-13  
night_stalker 写道
突然想到:为什么不用D来写DMD呢?


C是移植性最好的语言, D现在有三个平台的实现, 用C来做是很自然的.

实际上如果能够用OCAML/Haskell等来写的话, 代码量会少得多. 毕竟用C写程序, 需要处理的琐碎事情太多了.

0 请登录后投票
   发表时间:2009-03-19   最后修改:2009-11-04
C++的编译器也不是C++写的啊。追求这种东西,个人觉得没有太大的意义。
0 请登录后投票
   发表时间:2009-03-24  
怎么又个

idgen not found

的错误啊

编译不果去啊
0 请登录后投票
   发表时间:2009-03-25  
enderhml 写道

怎么又个 idgen not found 的错误啊 编译不果去啊


1.屏蔽path中其他c++编译器.
2.设置好make文件中的路径.
已经给你回短信了,发给你我修改过的make文件.
0 请登录后投票
   发表时间:2009-06-28  
今天看了龙书的自举(bootstrapping),觉得 D 语言编译器应该用 D 写才对(至少大部分)……

大部分成熟编译器都是自举的 —— 优化开发过程,并显示语言的优点和设计者对语言的信心。

Lisp 一开始只有一个耗费巨大工程手写汇编弄出来的阳春的编译器,后来大神发明了 eval 函数,于是出现了解释器,后来一群大神用 Lisp 写了编译器,然后用解释器运行编译器的代码,来编译 编译器的代码 —— Lisp 自举编译器就这么神奇的诞生了 ……
C 的跨平台移植,就是用 C 写编译器,然后交叉编译。
最初的 Pascal 编译器使用 Fortran 写的,后来改用 Pascal 写了。
我觉得 Ruby MRI 的 miniruby 也是一种 bootstrap 技术,Rubinius 就几乎全用 Ruby 写了 ……
0 请登录后投票
   发表时间:2009-06-28  
night_stalker 写道
今天看了龙书的自举(bootstrapping),觉得 D 语言编译器应该用 D 写才对(至少大部分)……

大部分成熟编译器都是自举的 —— 优化开发过程,并显示语言的优点和设计者对语言的信心。

Lisp 一开始只有一个耗费巨大工程手写汇编弄出来的阳春的编译器,后来大神发明了 eval 函数,于是出现了解释器,后来一群大神用 Lisp 写了编译器,然后用解释器运行编译器的代码,来编译 编译器的代码 —— Lisp 自举编译器就这么神奇的诞生了 ……
C 的跨平台移植,就是用 C 写编译器,然后交叉编译。
最初的 Pascal 编译器使用 Fortran 写的,后来改用 Pascal 写了。
我觉得 Ruby MRI 的 miniruby 也是一种 bootstrap 技术,Rubinius 就几乎全用 Ruby 写了 ……

个人觉得这是一种骚包的做法。。 
pypy就属于这种小骚包么
0 请登录后投票
   发表时间:2009-06-28   最后修改:2009-06-28
不是骚包 …… 编译器非常的复杂,全部用 C 写会很累很复杂。(Fortran 编译器是手写汇编的做出来的,弄了十几年)
譬如用 python 写了 python 编译器,然后解释执行编译自己(这步比较慢)。
编译后的编译器性能比解释执行好,用来编译其它 python 代码就很快了。
0 请登录后投票
   发表时间: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,我觉得一门新语言的设计用脚本语言之类应该就不错。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics