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