Using D

Remo via Digitalmars-d digitalmars-d at puremagic.com
Fri Jul 11 11:30:04 PDT 2014


On Friday, 11 July 2014 at 17:15:36 UTC, H. S. Teoh via 
Digitalmars-d wrote:
> On Fri, Jul 11, 2014 at 03:30:15PM +0000, Chris via 
> Digitalmars-d wrote:
>> I have followed the recent discussions about D and I can see 
>> the usual
>> pattern, to wit GC, Go (or whatever) is so much better, 
>> everyone
>> blaming each other for not contributing, not being allowed to
>> contribute blah.
>
> Well, this forum *is* for discussing ways of improving D, so it
> shouldn't be surprising that we constantly find things to 
> nitpick about.
> :-) It doesn't mean at all that D is lousy or the community is 
> bad, 'cos
> if it were so, we wouldn't even be here to begin with. We're 
> here 'cos
> we care, and we complain 'cos we care enough to want things to 
> improve.
>
>
>> First of all, I am in no position to criticize anyone who is
>> contributing to the language. I don't contribute, because I 
>> don't have
>> the time to do so.  Indeed I have huge, massive respect for 
>> everyone
>> who contributes to D. The only thing I do is to actually use 
>> the
>> language and tell everyone about it.  I have developed a 
>> screen reader
>> plug in in D (using C libraries) that was ridiculously easy to
>> integrate on Windows as a DLL. I used vibe.d to create a 
>> lightning
>> fast online version of the screen reader. Believe me, D's 
>> supposed
>> sluggishness as regards GC is not so important for most 
>> applications.
>> I dare say 90% of all applications are fine with the current 
>> GC. I
>> compiled both applications with dmd (testing phase) not with 
>> ldc or
>> gdc and they are very fast.
>
> I agree. I'm still convinced that GC phobia is blown out of 
> proportion
> -- I used to be in that camp, so I totally sympathize with 
> where they're
> coming from -- but as you say, only a small percentage of 
> applications
> actually need to squeeze every last cycle out of the CPU such 
> that the
> GC actually starts to make a significant difference in 
> performance. Most
> applications work just fine with the GC, and in fact, I'd argue 
> that
> they work *better* with the GC, because manual memory 
> management is
> *hard* (just look at how many security exploits are caused by 
> memory
> management mistakes) and tedious (look at how often the same 
> memory bugs
> are repeated over and over).  GC-supported code is cleaner to 
> read,
> easier to write, and in many cases, the simpler design of the 
> code
> reduces the likelihood of bugs and eliminates a whole class of 
> bugs.
> Sure you pay for that by short pauses every now and then, but 
> seriously,
> 90% of applications don't even *care* about such pauses.
>
> For applications with slightly higher performance demands, gdc 
> -O3 (or
> whatever the LDC equivalent is) generally improves performance 
> by about
> 20% or so above dmd. In my own compute-intensive projects, I 
> have
> consistently noted about a 20-30% performance improvement when 
> compiling
> with gdc, compared to dmd. That's pretty significant, because 
> GC pauses
> are generally nowhere near that percentage, so just by 
> recompiling with
> gdc already eliminates the perceived GC performance issue for 
> 95% of
> applications. Besides, avoiding frequent small allocations also 
> reduces
> most of the workload of the GC, so you can still get pretty far 
> without
> totally turning it off.
>
> So it's really only the remaining 5% of applications that 
> really,
> absolutely, *have* to go GC-less (or control it very tightly). 
> They do
> happen to have supporters of the rather vocal kind, so we tend 
> to hear
> from them a lot more, but that by no means is representative of 
> the
> grand scheme of things as far as the GC is concerned!
>
>
> [...]
>> Let's first make a list of things that have been achieved with 
>> D and
>> that are on a par with or even bettar than in other languages 
>> (C, C++,
>> C#, Go, Rust ...).
>
> I don't know C#, Go, or Rust, so I can't really say much on 
> that front,
> but at least as far as C/C++ are concerned, D totally beats 
> them flat in
> the following points IMO:
>
> - Metaprogramming. Templates in C++ scarred many for life. 
> Templates in
>   D are actually a pleasure to use.
>
> - CTFE. Coupled with metaprogramming, this is a total killer 
> combination
>   that I've yet to see another language beat.
>
> - Slices. Finally, a systems-level language whose string 
> support isn't
>   crippled (C), maimed (C++), or otherwise handicapped (Java). 
> And this
>   extends to arrays in general. While there *are* other 
> language with
>   nice string/array manipulation support, D is the only one I 
> know of
>   that does it without sacrificing performance.
>
> - Ranges. It can totally revolutionize the way you approach 
> programming.
>   And, with metaprogramming/CTFE, they can still perform as 
> fast as
>   non-range-based code. Total win!
>
> - Extended meaning of purity: IMO it's a total stroke of genius 
> to
>   define "weak purity" that allows you to implement pure 
> functions (in
>   the Haskell sense) using mutating primitives (loops and 
> assignments,
>   etc.). While the current compilers don't really do that much 
> with this
>   presently, there is a lot of potential here that may turn 
> this into a
>   killer feature.
>
> - Built-in unittests. Sounds trivial, but I can testify to its 
> value in
>   dramatically improving the quality of my code. I've worked 
> with large
>   C/C++ codebases, and most of them don't even bother with any 
> kind of
>   unit testing -- it's up to the programmer to test everything, 
> and we
>   just take his word for it -- and simply accept the countless 
> stream of
>   bugs that come thereafter as a fact of life. Of the rare few 
> that
>   actually do have tests, the tests are usually (1) outdated, 
> (2)
>   commented out 'cos nobody cares to update them, (3) ignored 
> by the
>   coders anyway 'cos they can't be bothered to switch to another
>   language in another framework just to write tests that nobody 
> will run
>   while having their hands tied behind their back. D's built-in 
> unittest
>   blocks is a total game changer in this area, in spite of its
>   simplicity (which some people have complained about).
>
>    - Along these lines, static assert totally rawkz. It 
> ensures, at
>      *compile-time*, that assumptions in your code haven't been 
> violated
>      by a careless code change, forcing the person who made the 
> change
>      to fix it (rather than introducing a possibly subtle error 
> that
>      will only be uncovered months down the road on the 
> customer's
>      production site).
>
> - The fastest regex library known on the planet (thanks to, 
> guess what?
>   metaprogramming and CTFE!). I'm a regex aficionado, and this 
> is a
>   total big deal in my book.
>
> - Built-in Unicode support. Compiler-level support for Unicode 
> is
>   something C/C++ sorely lacks, and that immediately puts them 
> in the
>   "legacy" category. LibICU is a nightmare to use. D, however, 
> lets you
>   treat Unicode directly in the language. (Full Unicode 
> compliance isn't
>   quite there yet, but we're getting pretty close.) Modern 
> languages
>   like Java/C# also have built-in Unicode support, so D is at 
> least on
>   par with them. C/C++ is definitely behind in this category, 
> though.
>
> These are just language-level cool stuff. At a higher level, we 
> also
> have:
>
> - rdmd: run your D programs like scripts, yet with native 
> compiled
>   performance. Rawkage!
>
> - Dustmite: a totally revolutionary tool IMO, that changes 
> finding
>   heisenbugs from an impossible game of chance to something that
>   actually has hope of being fixed within reasonable amounts of 
> time.
>
> - vibe.d: I haven't used it myself, but from what I hear, it's 
> extremely
>   awesome.
>
> I'm sure there are many other items that can be added, but this 
> should
> be a good start. :)
>
>
> T

Great description! Even if I do not agree to everything 
especially C++ related :)

I think all this advantages should visible for everyone why is 
new to D!
For example here:

http://www.slant.co/topics/25/viewpoints/11/~what-is-the-best-programming-language-to-learn-first~d



More information about the Digitalmars-d mailing list