On Sunday, 6 March 2016 at 14:02:25 UTC, Dmitry Olshansky wrote:
On 06-Mar-2016 10:21, Shammah Chancellor wrote:
On Saturday, 5 March 2016 at 11:05:09 UTC, Dmitry Olshansky wrote:
[snip]
Here's some stuff D shares with Go:

"Single" binary deployments.
Garbage Collector
In-language slices and maps
Foreach (Although D is much more powerful here)

Some things D is weak on:
* The name -- all I ever hear are penis jokes.

Thankfully not in my country ;)

* Garbage Collector (!)

This is indeed a sore spot, Go rapidly advanced their GC and even took advantage of it being non-copying to deliver on lower-latency front. Wonder if we could squeeze some more bang out of GC.

* dfix and dfmt aren't as good as gofmt and gofix. (And believe me I understand they will be much more difficult to get to parity due to the
feature set of D)

Strangely people love single imposed code style of Go, and in many ways other enforced conventions.

* Docs -- although these have gotten much much better recently -- the current implementation of concepts makes it hard for people to know
where and when they can use a type.  E.g sort docs
(http://dlang.org/phobos/std_algorithm_sorting.html#sort) How do I know what types of things I can sort as a newcomer? Even if I figure out that I need to look at isForwardRange, the docs there aren't terribly helpful
either
(https://dlang.org/phobos/std_range_primitives.html#isForwardRange)  I
would put up a PR, but I don't know how to fix it without introducing a language structure for Concepts -- but this has been veto'd for a variety of reasons (primarily type explosion as I understand the arguments)
* Libraries

Probably the biggest issue. Another one I'd pull is complexity, there is sooo many moving parts in D by now that we consistently fail to deliver a feature complete spec and/or compiler for it.


Some things D is much better on (and would cause me to choose it every time and just contribute fixes where I could to the external tools):

* Package management/build tools
* Integration with existing build systems/libraries
* Reusable algorithms that are FAST
* Empowering programmer expressiveness without enabling magic

Overall my impression is that if we were to compare D and Go as tools, D would be more of meta tool - i.e. a tool to create tools whereas Go is ready made toolkit that is nicely crafted but quite limited.

Now I only need to appeal to the former somehow ;)

-S.

Just to temper some points that I agree with in principle:

* Garbage Collector (!)
D doesn't need a better GC in my opinion. Go's GC has to be really good because AFAIK there is no other way to manage memory. Same for Java. But as good as a GC can be it will never be good enough for all applications. D solved the problem by proposing other memory management schemes so when the GC isn't good enough you just don't use it. Developping such schemes is *way* more important to D's future than a better GC that can never be more than good enough for more people but never everybody.

* Libraries
There again as using C libraries in Go is tiresome there is more incentive not to reuse them. OK, this is a weak point, I too think this is maybe the most proeminent D flaw.

Reply via email to