Life in the Fast Lane (@nogc blog post)

via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Sat Jun 17 00:03:53 PDT 2017


On Friday, 16 June 2017 at 13:51:18 UTC, Mike Parker wrote:
> I've been meaning to get this done for weeks but have had a 
> severe case of writer's block. The fact that I had no other 
> posts ready to go this week and no time to write anything at 
> all motivated me to make time for it and get it done anyway. My 
> wife didn't complain when I told her I had to abandon our 
> regular bedtime Netflix time block (though she did extract a 
> concession that I have no vote in the next series we watch). 
> Thanks to Vladimir, Guillaume, and Steve, for their great 
> feedback on such short notice. Their assistance kept the blog 
> from going quiet this week.
>
> The blog:
> https://dlang.org/blog/2017/06/16/life-in-the-fast-lane/
>
> Reddit:
> https://www.reddit.com/r/programming/comments/6hmlfq/life_in_the_fast_lane_using_d_without_the_gc/

Thanks for the nice write-up, Mike! Posts like this one really 
help clear many misconceptions about the language. Keep them 
coming!

I think the next blog should address what's possible without the 
GC and what features of the language/library make it more 
productive than languages like C and C++ even in @nogc code. I'm 
getting the impression that people on Reddit (and in general 
people inexperienced with language) see this:
1. Yes, it's *technically* possible to use D without the GC.
2. However, there's this long list of things that you have to 
avoid.
3. So while this "@nogc" is technically possible you loose so 
much of the language that you're better of with C++ (where e.g. 
"cout" just works*).

* For some unspecified meaning of working.

And also comments like:
> Reading this article makes me realize how naturally C++ 
> (particularly C++11) does without a GC. It's the right tool for 
> the job if your program must not have a GC.

Which obviously can't be further from the truth. That's why we 
need a systematic answer to how to use D effectively without the 
GC.

The right answer is three fold:
A) Examples of idiomatic D code - generic functions agnostic 
about the memory management strategy like range algorithms;

B) Having solid tools at the language-level for implementing 
correct and relatively easy-to-use library primitives like smart 
pointers and containers - @safe + pure + scope.

C) Maintaining a list of functions/modules/third-party libraries 
that are usable in @nogc land.

But most of all, the focus should be on productivity and 
ease-of-use, because otherwise people tend to get the impression: 
TL;DR this is too complicated for me -> I can't use D without the 
GC -> Using D without the GC is not feasible.


More information about the Digitalmars-d-announce mailing list