BitC has tried to become a verified system language, but its author has decided 
to stop its development because of some problems that he has described in a 
post.

This is a thread of discussions about that post:
http://news.ycombinator.com/item?id=3749860

One of the most interesting comments is from a developer of the Rust language 
(pcwalton), that currently is at the top of the thread. It also shows how much 
design work is going into Rust (a system language developed by Mozilla), that 
is going to become quite different from D. It will be hard to translate Rust 
programs to D.

One advantage of D over Rust is that you know Java, C, Python and C++, it 
doesn't take too much time to learn D. While Rust contains several less 
commonly known things (typeclasses, region inference, etc).


Two quotations from the first post by pcwalton:

>I think that one of the most important things to underscore is that we would 
>have never found these things so early unless we had written the Rust compiler 
>in Rust itself. It forces us to use the language constantly, and we quickly 
>find pain points. I highly encourage all languages to do the same; it's a 
>great way to find and shake out design issues early.<

Eating your own dog food is quite important for a language, especially if it's 
a low-level language. D has chosen the pragmatic approach of using almost-C++ 
as its implementation language, but this has caused (and it is causing) some 
disadvantages too.

One more disadvantage of not using D (or a language safer than C/C++) to 
implement a safe language as D is that the compiler will have many more bugs, 
so while you program in the implemented language (D) you will find many D 
compiler bugs. Today I think that it's very hard to create a reliable language 
writing its compiler in a not reliable language. You can't write the SPARK 
compiler in something different than SPARK and hope that SPARK will come out as 
a reliable language :-) Because reliability is not just in the programs written 
in the language, it also comes from the compiler used to compile it.


>So we moved to a "monomorphization" scheme for Rust 0.2, which is basically 
>like C++ template instantiation, only without the overhead of reparsing all 
>the code from scratch.<

What are doing D/DMD regarding this?

Bye,
bearophile

Reply via email to