On Monday, 14 September 2015 at 08:57:07 UTC, Ola Fosheim Grøstad
wrote:
On Monday, 14 September 2015 at 00:53:58 UTC, Jonathan M Davis
wrote:
So, while the fact that D's GC is less than stellar is
certainly a problem, and we would definitely like to improve
that, the idioms that D code typically uses seriously reduce
the number of performance problems that we get.
What D needs is some way for a static analyzer to be certain
that a pointer does not point to a specific GC heap. And that
means language changes... one way or the other.
Without language changes it becomes very difficult to reduce
the amount of memory scanned without sacrificing memory safety.
Personally, when I make a strong claim about something and find
that I am wrong (the claim that D needs to scan every pointer), I
take a step back and consider my view rather than pressing
harder. It's beautiful to be wrong because through recognition
of error, growth. If recognition.
And I don't think a concurrent GC is realistic given the
complexity and performance penalties. The same people who
complain about GC would not accept performance hits on
pointer-writes. That would essentially make D and Go too
similar IMO.
Given one was written by one (very smart) student for his PhD
thesis, and that as I understand it that formed the basis of
Sociomantic's concurrent garbage collector (correct me if I am
wrong), and that this is being ported to D2, and whether or not
it is released, success will spur others to follow - it strikes
me as a problematic claim to make that developing one isn't
realistic unless one is deeply embedded in the nitty gritty of
the problem (because theory and practice are more different in
practice than they are in theory!) There is etcimon's work too
(at research stage).
Don't underestimate too how future corporate support combined
with an organically growing community may change what's possible.
Andy Smith gave his talk based on his experience at one of the
largest and well-run hedge funds. An associate who sold a decent
sized marketing group got in contact to thank me for posting
links on D as it helped him implement a machine-learning problem
better. And if I look at what's in front of me, I really am not
aware of a better solution to the needs I have, which I am pretty
sure are needs that are more generally shared - corporate inertia
may be a nuisance but it is also a source of opportunity for
others.
In response to your message earlier where you suggested that
Sociomantic was an edge case of little relevance for the rest of
us. I made that point in response to the claim that D had no
place for such purposes. It's true that being able to do
something doesn't mean it is a good idea, but really having seen
them speak and looked at the people they hire, I really would be
surprised if they do not know what they are doing. (I would say
the same if they had never been bought). And they say that using
D has significantly lowered their costs compared to their
competitors. It's what I have been finding, too, dealing with
data sets that are for now by no means 'big' but will be soon
enough.
It's also a human group phenomenon that it's very difficult to do
something for the first time, and the more people that follow,
the easier it is for others. So the edge case of yesteryear
shall be the best practice of the future. One sees this also
with allocators, where Andrei's library is already beginning to
be integrated in different projects. I had never even heard of D
two years ago and had approaching a twenty year break from doing
a lot of programming. But they weren't difficult to pick up and
use effectively.
Clearly, latency and performance hits are different things, and
the category of people who care about performance is only a
partial intersection of those who care about latency.
Part of what I do involves applying the principle of contrarian
thinking, and I can say that it is very useful, and not just in
the investment world:
http://www.amazon.com/The-Contrary-Thinking-Humphrey-Neill/dp/087004110X
On the other hand, there is also the phenomenon of just being
contrary. One sometimes has the impression that some people like
to argue for the sake of it. Nothing wrong with that, provided
one understands the situation. Poking holes at things without
taking any positive steps to fix them is understandable for
people that haven't a choice about their situation, but in my
experience is rarely effective in making the world better.