On Friday, 13 March 2015 at 00:20:40 UTC, Andrei Alexandrescu
wrote:
A friend of mine needed to complete a small project and thought
of using a language he didn't know for it. He already knew I
work on D so he considered it alongside Go. He ended up
choosing the latter, and documented his decision making process
in a few notes that he subsequently shared with me. I'll paste
below a sort of transcript of his handwritten notes.
I think this is valuable information from a relatively unbiased
potential user, and good ideas and action items on how we can
improve our curb appeal. Even mistaken perceptions are good
signal - it means our materials weren't explicit enough to
dispel them.
====================
* Golang: simple!
+ very small language, very concise & simple
+ playground/tutorial
+ easy to start using it, no-nonsense
+ vast libraries
+ no inheritance
+ one binary to distribute
+ good for servers
+ feels like a better C (mostly)
- can't write generic code involving arrays/slices
- no good IDE
+ Google!
+ clear feeling it's here to stay
+ visible, many projects
+ enforced style (indentation, exports)
* Dlang: big!
# big language
# IDE?
# small subset?
# libraries?
# will it be around?
# Perception matters
## how stable is it?
## not great for servers or UIs; what then?
## new house in unpopulated neighborhood; there's an "Enter,
it's open" sign but sits emtpy; by comparison Go -> condo in
hip, trendy area
* Ideas for D
# what C++ should be but cannot
## too late for C++, but not for D
## some or all of @safe, immutable, pure should be the default
# libraries, projects should be prominently listed and nurtured
# single-idea advantage; D seems to embody too many ideas at
once
## concurrency?
## networking?
## generics?
## interoperability with C and C++?
## focus on one!
# must attract/hook casual users
# unclear what's a good IDE - JetBrains? is there Vim support?
# what's D's equivalent to frameworks such as react.js?
# language designers think of features, users think of purpose
## react, go, rust, java -> purpose
## D, C++ -> "Ivy league candidates" having a response for
every programming language design challenge there is, but less
focused on purpose (Andrei's note: I assume D more at fault
than C++ on this)
General feeling: "I don't feel smart enough for D and am
looking for a quick way to accomplish a goal. I've read the
Wikipedia article on D and didn't understand a few things. The
examples seem to show off the language but that made them
confusing. I wanted to get more into it, but by that time Go
had already won - I looked at the tutorials, changed the sample
code a bit right in the browser to see how it'd work for me, it
was easy, I was in already. Some of my comments therefore
illustrate my shortcomings than the language's, but that's true
one way or another for all programmers (that's why technical
superiority of a language doesn't guarantee its success)."
===============
I'd love us to derive a few action items from this and other
feedback.
Andrei
A kind of D killer project is also needed.
Thanks to a few successful startups like Docker, and consequent
adoption of Docker by Amazon, Google and Microsoft on their
infrastructure, Go is now a "nice to have" skill for anyone doing
distributed computing.
--
Paulo