A few notes on choosing between Go and D for a quick project

Florin Mihaila via Digitalmars-d digitalmars-d at puremagic.com
Fri Mar 13 08:18:31 PDT 2015


Hi everyone,

I'm the guy who threw the rock in the pond. I should probably
clarify a few things about the notes (which Andrei posted with my
permission).

They are stream-of-consciousness scribbles, which I took down
while I was going through the process (I actually sent Andrei a
photo of my notebook pages). I wrote them because I thought he
would be interested to know what went through this programmer's
head when looking at D for a small project, with no prior
exposure to the language. The experiment took one day. I was
planning to discuss it over the phone with Andrei (which we did),
and I wanted to make sure I wouldn't forget anything. It was
definitely not crafted as a well-thought-out critique, but that
was the point. People learn languages one misconception at a
time, and I wanted to give Andrei the raw material. This makes
certain things confusing as written, so I'd like to add a bit
more context.

1) When I wrote "focus on one [feature]", I wasn't suggesting
that features be removed from the language. Instead, I was
referring to the presentation of the language to newcomers. The
thing is, I wasn't visiting the D website to learn D; I was there
because I needed to write a small, self-contained server with a
minimum of fuss. I had a single purpose in mind and a very
limited time budget. Go made it easier for me to zoom in on my
goal, and the main factor was its (perceived) simplicity. This
led to the phrase "designers think of features, users think of
purpose", but it applied to _presentation_. It was like I wanted
to rent a car for one specific day trip, and D was trying to sell
me the car. In contrast, Go was light and easy; I felt I could
catch it after minimal contact, like a dog catches fleas (those
who dislike Go will think of other metaphors here).

D absolutely should not be robbed of its richness to become
"simpler". It's not the language that needs fixing (well, it
might, but only to make it even better). Rather, I look at it
through a newbie's eyes: every person visiting the dlang site has
some purpose in mind. Topical articles/tutorials showing how to
accomplish one thing only (for relevant values of "thing") could
go a long way in lowering the barrier to entry. For those who
want an overview, an interactive tutorial like the one on the Go
playground would be excellent.

2) "Go is a condo in a hip, trendy area". This could be taken to
mean that I was led to Go's neighbourhood because I wanted to be
hip. Instead, that note was in contrast with an adjacent one,
where I saw D like a new house (spacious, comfortable, all
appliances included) that sits empty. I didn't write it down, but
I was thinking it sat empty because the neighbourhood was empty.
As a new user, I want to be where everybody is, because that's
where my community needs are likely to be satisfied. There will
be bakeries, coffee shops, independent bookstores, bike lanes,
parks, theaters, and a subway. It's not the prestige, it's the
livability. This is where those libraries make a difference, and
why Stackoverflow is overflowing, as it were, with Go questions
and answers: that's what all those latte drinkers type away on
their Macbooks. (Yes, I know there are D questions answered on
Stackoverflow; work with me here.)

3) "IDEs". Here, Go isn't doing that great, either. The most
glaringly missing piece is a proper debugger. GDB is unusable
with Go (I'm comfortable with using GDB itself). That was
actually something I was planning to ask Andrei about on the
phone; it wasn't a statement about the current state of D.

4) "Not feeling smart enough for D". As in, to pick up in one day
and get on with my life and my little server. I was actually
thinking of the Wikipedia article on D. I simply could not
understand the example just by looking at that page, and without
opening Andrei's book that sits on my bookshelf. That might be
more a comment about me, but I really think it's the article.
(For context, I write routinely in C++, Java, Scheme, Prolog,
Unix shell, etc., and when those languages don't suffice for my
projects, I write new ones.)

Finally, I feel I should respond to this:

On Friday, 13 March 2015 at 02:28:53 UTC, bachmeier wrote:
> If you want to be Rob Pike Jr., Go is great. If you want to 
> program your way, not so much.

I have no reason to take this personally, seeing as I'm pretty
secure in my non-Rob-Pike-ness, but from a product design (and
selling) standpoint, blaming or insulting the user is, of course,
missing the point. I felt equally put-off by the dismissive tone
of some of the creators of Go towards those who "don't
understand" Go's ethos. I still ended up using their language,
but it wasn't for their persuasion skills. Thankfully, it seems
this isn't the general tone of D's community, and the level of
healthy, open debate over here appears to be much higher than for
Go.

This note is getting too long, so if some of what I wrote needs
more clarification, feel free to ask. I'm glad my humble notes
are sparking discussion, and I hope D continues to grow.

--Florin


More information about the Digitalmars-d mailing list