Using D

Mike via Digitalmars-d digitalmars-d at puremagic.com
Fri Jul 11 18:18:05 PDT 2014


On Friday, 11 July 2014 at 17:15:36 UTC, H. S. Teoh via 
Digitalmars-d wrote:

> - 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.
>

Great list,  I'll add a couple more:

  - GDC & LDC - D on ARM and other platforms is possible thanks to 
talent donated to these efforts.

  - D is universal -  I don't know how to articulate this, but I'm 
sick of learning so many languages for different purposes and 
different platforms.  I'm beginning to use D for just about 
everything, and I don't have to worry so much about whether I'm 
on Windows or Linux.  I'm even using D to write low-level drivers 
for my micrcontroller.  I use it for my build scripts, automating 
my builds in the same language I'm building.  D, one language to 
rule them all.


Mike


More information about the Digitalmars-d mailing list