Thankfully, they are FINALLY implementing functionality to help prevent things that forcefully activate the GC, which is what I've been asking for for literally 5 years or so. I'll be much more active in the D community hopefully... I do think it's a better language than C++.
"Facebook is using D in production". That's a big headline. Some would think the core Facebook site is run on D now. But it seems they use it only for some developer productivity internal tool (lint type thing - basically a tokenizer and a parser). I couldn't find any evidence on the Internet stating it would be used on the server side. Server side is still programmed in PHP (realtime) and Java (analytics).
Companies like Facebook (e.g. Google or Microsoft) use many different technologies and languages for their internal projects. E.g. Microsoft uses Linux servers somewhere or Google uses Python and Go. But this doesn't really mean much for the adoption of particular technology. It would mean something if they used it in the core critical projects they earn money from. If Google implemented Search, GMail or their core database stuff (e.g. Spanner) in Python that'd be something for Python. If Facebook used D for counting how many "likes" you clicked, that'd be some big success for D. Similar if Twitter implemented their messaging backend in D.
Therefore I'm bit skeptical. D is already over 10 years old and was surpassed in popularity by much younger languages. One internal project at Facebook doesn't change much IMHO.
Thankfully, they are FINALLY implementing functionality to help prevent things that forcefully activate the GC, which is what I've been asking for for literally 5 years or so
Seems they are going the same path Java recommended 10 years ago. Because their GC implementation pretty much sucks, they try to do everything to avoid/postpone its runs. This approach doesn't work in the long term (people will run into GC problems anyways). The real solution is fixing GC = making it efficient and pause-less (or at least with bounded pause times).
D removes the limitation of C and adds modern language constructs that removes the need of things like any type of boilerplate
I don't think it really succeeded to reach expressivity levels of other modern languages. D is still much closer to C++ than say, Haskell, Scala or Python.
@ computerquip: I know you must have explained this before in another thread, but for the sake of the discussion, why are you opposed to the garbage collector?
In my opinion, D is a high level language and should be used as such. If you want a low level language you should be using C instead. That's my rationale, personally, and it is why I'd never write an OS kernel in neither C++ nor D, nor anything other than Assembly and C.
So to reiterate, in what circumstances is the GC in D an inconvenience?
I don't know which is worse, the fact that rapidcoder started with a fucking JAVA DISCUSSION AGAIN dull comparison to Java and higher level languages or the fact that he thinks a memory allocation shouldn't be avoided. Herm...
EDIT: I'm not against garbage collection. I don't think it should be forced onto whoever uses the language though, there should be alternatives. Replacing the GC in D with another type of GC was for sometime complicated as well.
Its not so much you *had* to use the GC in the language, it was more like it was impossible without going well out of you way through out the program to check to see if the GC activated which was a burden.
EDIT2: Also, in the case of implementing something like a plugin, it's inconvenient and slow to start the GC for something simple especially if the plugin is opened and closed multiple times.
Memory allocation can and should be avoided where possible, but that doesn't solve the problem with poor GC. There are places, where GC is inevitable, e.g. parallel lockless programming. I've heard D tries to rival Scala/Haskell in parallel programming. But with a toy GC they're not going to make it. After 10 years of development D is IMHO *not* production ready.
The quality of the GC isn't the largest of my concerns with the language at the moment. There's always room for improvement. I'm generally more concerned with D as a language rather than D as an implementation.
As for parallel programming, I haven't personally looked into it since I generally stick with threads/mutexes in this sense as it's what I've always used. But perhaps I should try the alternatives!
EDIT: I've not kept up with GC improvements but people do constantly work on it. I doubt the GC is as bad now as it was a couple years ago.
> But D seems like a good language from what I heard.
"From what I heard" being the operative phrase.
The problems with a programming language come to the surface only after it gets widely used in mainstream programming. C, C++, Java - none of these are perfect; but by now we know what the issues are, we know that these are, warts and all, quite usable languages.
There have been dozens of theoretically 'perfect' languages that have never been tested except as toys by their aficionados, and there will be dozens more in the future. For any language, the step up from zero to one is a giant step; an increase in usage of infinite proportions. Parents are enraptured by their toddler's first steps, and believe that this astounding feat must surely be the precursor to olympic records being shattered with ridiculous ease.
That is where 'D' is right now; till it is used widely in production code, we don't even know if it has any first-order weaknesses. Till then, it remains a curiosity that might probably make it.