On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
My rudimentary knowledge of the D ecosystem tells me that there
is a GC in D, but that can be turned off. Is this correct?
Technically yes; you will lose core functionality, though, if you
do.
I don't have the complete list at hand, but e.g. dynamic and
associative arrays are one of the things you won't be able to use
without the GC IIRC. If you use the reference compiler (dmd), you
can use the flag `-vgc` to be shown all the GC allocations in a D
program.
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
Also, some threads online mention that if we do turn off GC,
some of the core std libraries may not fully work. Is this
presumption also correct?
Yes. Everything in Phobos that uses features depending on the GC
won't work anymore.
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
In this regard, I am curious to know if I would face any issues
(with my intent in mind), or will I do just fine?
If you don't turn the GC off you should be fine. The GC will -
AFAIK - only perform a collection cycle as a result of an
allocation call to it, so you can avoid slow collection cycles
without turning it off.
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
If you could share your experiences and domains of use, that
would also be very helpful for me.
I mostly use D for writing tools for my own use that have to
interact with C APIs.
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
Secondly, how stable is the language and how fast is the pace
of development on D?
The parts of the language I need are pretty stable, but I don't
think I use even half of what the language offers (D is very
complex).
Regarding speed, you can see the numbers (git tags) for yourself
here[0].
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
2. I am also curious as to what would be the best path for a
complete beginner to D to learn it effectively?
That's usually not something someone can tell you, since every
person learns differently.
Personally, when I started with D (back in D1 days) I read the
articles about it and then just tried writing tools in it, so I
suggest reading these[1]
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
I am a relatively fast learner (and I learn better by context,
as in, some core unifying idea described and then elucidated
through big examples instead of learning in bits and pieces).
I'd describe D's unifying idea as "allow people to write complex,
native software without all the C/C++ insanity". Though D comes
with it's own share of insanity, of course.
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
Are there any books/video tutorials that you would recommend
(aside from this site itself).
I personally would not recommend books at the very start of
learning a language (if one is already proficient with native
programming in general), but only after one has already gotten
comfortable with it and is looking for a comprehensive overview.
Regardless, I've heard good things about two books[2][3].
Since I loathe video tutorials I can't add anything on that point.
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
3. Are there some small-scale Open Source projects that you
would recommend to peruse to get a feel for and learn idiomatic
D?
Technically there's no such thing as idiomatic D as D is
multi-paradigm. You can see some sensible idioms here[4], but no,
I would not recommend reading anyone's D code just to get a
feeling for "idiomatic D".
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
4. I have heard good reports of D's metaprogramming
capabilities (ironically enough, primarily from a thread on the
Rust user group),
This doesn't surprise me, honestly, since Rust's (compile time)
metaprogramming capabilities are below D's and from my experience
people in both communities are well aware of that. There are
threads on Reddit about this topic if you have the time to dig
them up. D's advanced compile time features are one of the main
reasons I'm unlikely to switch to anything else for my tools (in
my experience there is no other native programming language that
let's me get things done as fast - in terms of development time -
as D).
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
and coming from a Common Lisp (and some Racket) background, I
am deeply interested in this aspect. Are D macros as powerful
as Lisp macros? Are they semantically similar (for instance, I
found Rust's macros are quite similar to Racket's)?
D does not have macros, it has compile time function
execution[5], templates[6],
mixins[7], and template mixins[8].
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
5. Supposing I devote the time and energy and get up to speed
on D, would the core language team be welcoming if I feel like
I can contribute?
I have never tried adding something to druntime or phobos myself,
so I'm not in a position to comment on this.
[0] https://github.com/dlang/phobos/releases
[1] http://dlang.org/articles.html
[2] The D Programming Language, Andrei Alexandrescu
[3] Programming in D: Tutorial and Reference, Ali Cehreli
[4] https://p0nce.github.io/d-idioms/
[5]
https://tour.dlang.org/tour/en/gems/compile-time-function-evaluation-ctfe
[6] http://dlang.org/templates-revisited.html
[7] http://dlang.org/mixin.html
[8] http://dlang.org/spec/template-mixin.html