Adventures in D Programming

Matthias Klumpp via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu May 12 14:08:58 PDT 2016


On Monday, 9 May 2016 at 09:29:36 UTC, qznc wrote:
> On Sunday, 8 May 2016 at 22:22:08 UTC, Peter Häggman wrote:
>> [...]
>>
>> You've quoted the wrong part of the paragraph. The real 
>> problem he encountered was not the doc, it was the phobos bugs 
>> in the older version shipped with GDC/LDC:
>>
>> "For GDC, which I used to compile my code due to LDC having 
>> bugs at that time, this means that it is shipping with a very 
>> outdated copy of Phobos"
>>
>> The the doc thing is "just" a symptom. Older offline doc is 
>> always available in the release archive, it's easy to 
>> understand that so it's not the actual problem.
>
> You are correct, but can this be solved? Newer Phobos versions 
> fix bugs. GDC needs a newer Phobos? Well, this is translated 
> into GDC needs more manpower. Everything does. Nothing new.

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

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.

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


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.

Cheers,
     Matthias


[1]: https://tour.golang.org/welcome/1
[2]: https://doc.rust-lang.org/book/guessing-game.html


More information about the Digitalmars-d-announce mailing list