March 13, 2015
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
March 13, 2015
On 3/13/2015 2:22 AM, w0rp wrote:
> I'll never forget what Bjarne said about people wanting a "simple language." His
> response to "I want a simple language" was, "No, you don't!" Because it's always
> "I want it to be simple... with just this one extra little feature in it."

Yes. I've often seen posts here from people writing that they wanted stability, and then give a list of new features they want.

March 13, 2015
On Friday, 13 March 2015 at 00:20:40 UTC, Andrei Alexandrescu wrote:
> + Google!
> hip, trendy area

These determined the decision and are unbeatable yet.
March 13, 2015
On Friday, 13 March 2015 at 02:17:31 UTC, bearophile wrote:
> Andrei Alexandrescu:
>
>> ## some or all of @safe, immutable, pure should be the default
>
> +1
> I have a ER on @safe by default and Walter seems to agree. But I'd like more. A "strict D" mode? :-)

Yes, but what is a "strict mode". I agree with most of what is said about D and Go in the top post, but is there a market for yet another high level language that isn't high level enough?

I've spent some time hashing out a "D-minus" that could be compiled with D2 (or at least with a simple transform), and it is more attractive to move towards lower level programming and optimization when creating a subset...

So what is a a reduced D that is largely compatible with D2? I would remove features that people love, like modular arithmetics. You can do that since it is undefined when you move out of the range. You can also introduce new hints as @uda.

The overall better approach is to generalize and simplify the core semantics of the language then have D2/D3/simpleD in the same compiler and allow them to mostly work together (separate files, but D2 code importable into D3)

> D can't be a single-purpose language. And it has more moving parts compared to Go.

That's true, what one could consider is better separation between library-features and common-code features. Like Python where you generally can leave all the __XXX__, yield etc to library code and keep a simple surface (largely thanks to tuples/lists btw).
March 13, 2015
Ola Fosheim Grøstad:

> Yes, but what is a "strict mode". I agree with most of what is said about D and Go in the top post, but is there a market for yet another high level language that isn't high level enough?

"Strict mode" is a D2 with immutable+@safe+pure by default, something like a "var" keyword to denote mutable values, no comma operator, static full tracking of memory ownership, less implicit casts (because now we have the safe int(x) sytnax), and few other small changes that make the language less bug prone and more strict.

And I'd still like built-in tuple syntax in D.

Bye,
bearophile
March 13, 2015
On Friday, 13 March 2015 at 10:34:32 UTC, bearophile wrote:
> Ola Fosheim Grøstad:
>
>> Yes, but what is a "strict mode". I agree with most of what is said about D and Go in the top post, but is there a market for yet another high level language that isn't high level enough?
>
> "Strict mode" is a D2 with immutable+@safe+pure by default, something like a "var" keyword to denote mutable values, no comma operator, static full tracking of memory ownership, less implicit casts (because now we have the safe int(x) sytnax), and few other small changes that make the language less bug prone and more strict.
>
> And I'd still like built-in tuple syntax in D.
>
> Bye,
> bearophile

That actually sounds quite nice, but I wonder if this is just hopeful wishing or something D would actively move towards.
March 13, 2015
On Friday, 13 March 2015 at 10:34:32 UTC, bearophile wrote:
> Ola Fosheim Grøstad:
>
>> Yes, but what is a "strict mode". I agree with most of what is said about D and Go in the top post, but is there a market for yet another high level language that isn't high level enough?
>
> "Strict mode" is a D2 with immutable+@safe+pure by default, something like a "var" keyword to denote mutable values, no comma operator, static full tracking of memory ownership, less implicit casts (because now we have the safe int(x) sytnax), and few other small changes that make the language less bug prone and more strict.
>
> And I'd still like built-in tuple syntax in D.
>
> Bye,
> bearophile

+1
March 13, 2015
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

D is also simple, if you want to do simple things. You can keep things simple, if you want. But it allows you to do complicated things whenever the occasion arises, yet it doesn't enforce "difficult" or "complicated" code. This is a point I have made several times and it is probably not made clear enough on the D website.

When I advise people to use D, they think they have to learn programming all over again and opt for Python or C only to program a f***ing number grinding for-loop. When they have to implement arrays, it's good-bye to C and hello to Python, although D would give them Python's convenience with C's efficiency.

We do something wrong here. The perception is D = "you have to be a programming Einstein". Not true. You don't have to, but it allows you to be one.

> + playground/tutorial

Maybe a simple VAT calculator instead of "Computes average line length for standard input" on the start page? Some everyday task like find string in string? Would be better, I think. How do I find "ab" in "abc". std.string? std.regex? std.algorithm? These things are not clear at all, but this is what users usually need first. They don't need templates, they need "startsWith" kinda stuff.

> + easy to start using it, no-nonsense

Same goes for D. But we have failed to communicate this to people.

> + vast libraries

Yep. D is not great for this, unless you know the community and D's C(++)-interoptability.

> + no inheritance

From C? C++?

> + one binary to distribute

This goes for D as well.

> + good for servers

Doable with D (vibe.d), but not part and parcel of the language, although important.

> + feels like a better C (mostly)
> - can't write generic code involving arrays/slices
> - no good IDE

> + Google!

Well, what can I say?

> + clear feeling it's here to stay

Sure?

> + visible, many projects

I agree, D is invisible. Everyone who's using D professionally should make it public.

> + enforced style (indentation, exports)

D is about freedom. No enforced style please. We already have Python.

> * 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 appreciate his honesty. Sometimes I don't feel smart enough to use D either, or Python or C. There's always something that escapes me, something I could have done better. I don't think that D has to become simpler, we just have to point out that it can be very simple _and_ safe. (Plus benchmarking)

And we have to reach out to the real world, i.e. GUI, web technologies, mobile platforms. Without these things, D will always be considered as "nice, but I can't really use it". This is why every new language builds up an infrastructure first. I used to say that D didn't need an IDE and toolchains and all the bells and whistles. It doesn't. But people do, because they have to get their work done. Maybe we have lived in an ivory tower for too long. D deserves better. D should be out there.

> ===============
>
> I'd love us to derive a few action items from this and other feedback.
>
>
> Andrei

March 13, 2015
On Friday, 13 March 2015 at 06:57:29 UTC, Russel Winder wrote:
> On Thu, 2015-03-12 at 20:24 -0700, Walter Bright via Digitalmars-d
> wrote:
> […]
>> 
>> There's no doubt about it, people like simple languages. We should very much keep that in mind when evaluating proposals for new features.
>
> How about lining up some features for removal.
>
> C++, Fortran, and Java are big, complicated languages, that keep getting
> bigger and more complicated because of the obsession with backward
> compatibility. D is already a big, complicated language. If people like
> straightforward (not necessarily simple) languages, then the inference is
> quite easy.

Java big, complicated language?? :) I do not agree with that statement at all. Java *is* there where it is because it is SIMPLE language, and equally hated for being simple language.

We can't satisfy everybody.

D can be super-simple too - people do not have to use fancy features of the language. I think most tutorials/articles tell readers too much about D, and it may scare them away.
March 13, 2015
On Friday, 13 March 2015 at 00:20:40 UTC, Andrei Alexandrescu wrote:
> # unclear what's a good IDE - JetBrains? is there Vim support?

D's vim support is quite good(including intelligent autocomplete provided by DCD,) maybe if it's that unknown I could write a blog post on setting up vim for D - or just a survey of the available development environments.