Dne 18.2.2017 v 21:15 timmyjose via Digitalmars-d-learn napsal(a):
Hello folks,
I am interested in learning D (just starting out, did a few of the
exercises on the D tour), and had some questions before I decide to
jump right in. My questions are genuinely motivated by my experiences
and expectations, so please forgive me if some questions don't come
across as well as my intentions!
1. I have some experience with both C and C++, and have been learning
Rust for a while, but a few things put me off about the whole business -
a). The core language appears to be simple enough, but becomes
increasingly complex as I begin writing larger programs.
b). The whole ownership system is easy to understand, but the APIs
become very complicated and unwieldy, and more time appears to be
spent on understanding and ensuring that memory is being used
correctly than on the core program logic.
c). The whole community seems infused with both the Feminism/SJW (I
don't care about those communities, but it feels weird having a
programming community get sidetracked by all that bullshit), and too
much of Ruby-on-Rails culture (probably started with Steve Klabnik) so
that it doesn't feel like any real systems programmers are focusing on
that language, and finally, d). The whole language feels like a bit of
patchwork of random ideas, and also the whole "safety" and "no
segfaults" guarantees seem to have lesser and lesser RoI as time goes by.
Sorry for the rant, I didn't realise I was quite that frustrated!
That's just to give some background about me and my recent
experiences! :D
In that regard, I suppose I'll get a better feel of the community here
as I interact more, but I have high hopes that it'll be much more
technical than purely social!
Hi, welcome in D community
2. I am more interested in learning D as a pure systems programming
language so that I can develop my own tools (not looking to develop an
OS, just some grep-scale tools to start off with). In that regard, I
have a few concerns about the GC. 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? 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? 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 could share your experiences and domains of use, that
would also be very helpful for me
Yes, by default D use GC. And yes there is a some part of D standard
library which uses GC. But it is something you can avoid if you want. I
am using D for many years and for almost anything and never have issue
with GC.
Secondly, how stable is the language and how fast is the pace of
development on D?
Again, sorry for my ignorance if I have been wrong-footed on some (or
all) points.
D stability is good, really good, for many of us too good :P. I have
been using D for many years (five or six). And right now there is a big
effort to never break anything until it makes really sense.
OTOH D development is quite fast. So there are many improvements with
every release
2. I am also curious as to what would be the best path for a complete
beginner to D to learn it effectively? 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). How did you folks learn D? I'm sure hearing your
experiences would be helpful too. Are there any books/video tutorials
that you would recommend (aside from this site itself).
I can't help here because I am using D for a long time, so I do not
remember how I have learned it.
3. Are there some small-scale Open Source projects that you would
recommend to peruse to get a feel for and learn idiomatic D?
It is maybe not small-scale but idiomatic D code is in phobos itself.
4. I have heard good reports of D's metaprogramming capabilities
(ironically enough, primarily from a thread on the Rust user group),
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)?
I do not know Lisp macros, but AFAIK there are not semantically similar.
OTOH D metaprogramming is really powerful and there has been some
proposals to improve that https://wiki.dlang.org/DIP50
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?
That's all off the top of my head at the moment. Perhaps I'll have
more questions as I read the responses. Thanks in advance!
Cheers.