D on quora ...

Walter Bright newshound2 at digitalmars.com
Sat Oct 7 18:42:24 UTC 2017


On 10/6/2017 1:39 PM, Laeeth Isharc wrote:
> Perception is so important when people are making decisions about something they 
> don't know.  (As Walter says, you have to write tens of sloc in a language to 
> really see it's benefits.  They won't be so evident if you write D like the 
> languages you know).

I've nearly finished converting the Digital Mars C++ front end from C++ to D. 
Amusingly, it looks line-for-line almost identical to C++ (the biggest change 
being exchanging "->" for "."). But I deliberately made as few changes as 
possible, because if I introduce a bug doing that, it will be much easier to 
find by comparing the C++ source with the D source.

To aid in this, I do it function-by-function, running the test suite after each 
function is converted. The idea is to use `git bisect` to isolate any conversion 
bugs not covered by the test suite.

So the end result has all the flaws of the C++ version. But once in D, I can 
start taking advantage of D (like nested functions) to structurally improve it. 
It'll always show its C++ inheritance, though.


> So I think the GC series has been very helpful.
> 
> But it might also be helpful to be very explicit on the functions that can and 
> can't be called with nogc (I mean a top level overview in the docs) because it's 
> one of the remaining sources of FUD that people say "yeah but you can't use 
> large parts of the standard library without the GC".
> 
> And for things that are useful and easiest done with GC it would be nice to have 
> an alternative that doesn't depend on the GC - if for no other reason than to 
> address objections.  So the answer is then "yes - you're right, these X 
> functions depend on the GC, but there are similar ones that don't".  (Walter 
> already started that for functions that use the GC for purely legacy reasons but 
> I mean for more difficult cases too.  I know Weka wrote their own versions of 
> some std.algorithm functions for example).  Many things aren't much work, but 
> when you have a lot to do, even small frictions can have big consequences.
> 
> So it's also a documentation question - it's not that easy from the outside last 
> time I looked to see just how easy std.experimental.allocator is to use.

One of the motivations for -betterC is to make D usable without any reliance 
whatsoever on the D runtime library, including the GC. You still get a long list 
of benefits from using D over C++. (The translation above is relying on -betterC.)


More information about the Digitalmars-d mailing list