Dne 12.5.2016 v 23:08 Matthias Klumpp via Digitalmars-d-announce napsal(a):
First of all, that blogpost generated way more buzz than I expected -
looks like D is highly interesting to people, which is great news :-)
To elaborate a bit more on the version incompatibilities thing: E.g.
me as a new user reads about std.concurrency.Generator, wants to use
it, and it turns out that the standard library doesn't contain it yet
(in GDC). Same for std.experimental.logger.
Okay, means I can't use these.
This is something I do not like. It would be awesome if I could use new
version of phobos (dub package for eg.) in a dmd, ldc or gdc. Having
language which is so unstable so is almost impossible to use standard
library with older frontend is really anoying.
Then, I wanted to use std.getopt - turns out the semantics have
changed and new stuff has been added there too, which I can't use.
Meh, if the docs would have at least told me that.
I knew it :). I end up with same problem with std.getopt. It was a
reason for this post:
http://forum.dlang.org/post/[email protected]
std.getopt has been backward compatible but it was not forward
compatible. So because there is only latest docs available you are
doomed :(.
Then, I want to use D-YAML, which depends on std.stream. But
std.stream is completely deprecated, with no clear path for me to see
to replace it. That's really bad, and it also means I can't compile my
code with making the use of deprecated stuff fail the compilation.
I am not sure what exactly this deprecation message say, but you
definitely should not used std.stream at all in a first place ;-).
That was by far the most frustrating things I experienced in D. So
ideally the docs would be split for different Phobos versions, that
would already be a great help.
Yes this would help a lot.
Then, when deprecating stuff, showing a thing that replaces it or the
proper way to write code using it would also be really nice.
E.g. wile I welcome the deprecation of std.net.curl in principle
(having to link against an external library in the standard lib is
odd), announcing to drop it before any replacement which offers
feature-parity is written is bad (sidenote: IMHO the advanced net
stuff shouldn't be in the standard library, because it's harder to
update in case of security updates and bad crypto).
It would actually be really awesome if Phobos wasn't tied to a
compiler, and all D compilers which are standard-compliant could
compile it. Then, one could assume that people have the most recent
Phobos. But it looks like it will take a longer time to get there, if
at all.
I hope it would not take so much time. This is really important if D
want to succeed.
Another thing that I didn't mention in the blogpost, but which might
be interesting is that D - unlike Rust and Go - doesn't have a way
that lets developers do a shallow-dive into the language by giving
practical examples.
For example, Go has the really awesome Go Tour[1] which lets you
explore and learn the basic concepts of the language by example.
For me, going through the tour was enough to actually start writing Go
code, and while it certainly isn't complete, it is a nice way to show
off the language and give people a taste of how it looks like. Rust
has something similar with its tutorial[2]. For D, I haven't found an
"in a nutshell" tutorial, and needed to read a bit more documentation
and employ my existing C/C++ knowledge in some cases.
Having something like the Go tour for D would IMHO be an wesome way to
attract people to try D.
There is already http://tour.dlang.io, but I do not have yet time to try
it so I can't speak about maturity and so on. Other problem is with
complexity of D. I believe even I can write book about D, which make
people able to write almost anything in D. But they will not be able to
read all D code. Go is OTOH really easy language so you need book with
around 200 pages to explain everything. But with D I am not sure that
even 1000 of pages would be enough :(.
Cheers,
Matthias
[1]: https://tour.golang.org/welcome/1
[2]: https://doc.rust-lang.org/book/guessing-game.html