www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Clarification on D.

reply aberba <karabutaworld gmail.com> writes:
I don't really have much experience with large code base, so 
spare me.

 From a technical and experience point of view (those with 
experience in large D code-base), how is only D's GC & optional 
MMM a significant production-use blocker?

  (To make my problem clear, how is D's current state not going to 
allow / make it so difficult for developers (who know what they 
are doing) to write say Photoshop-scale software: excluding those 
*so* realtime use cases?)

Note: I understand that D is never going without critics: 
perfection is impossible. And, in my line of work, I highly 
prefer the safety of GC compared to MMM... so I don't see myself 
worried about GC pauses.

I hope my question makes sense.
Mar 08
next sibling parent deadalnix <deadalnix gmail.com> writes:
On Wednesday, 8 March 2017 at 20:00:54 UTC, aberba wrote:
 I don't really have much experience with large code base, so 
 spare me.

 From a technical and experience point of view (those with 
 experience in large D code-base), how is only D's GC & optional 
 MMM a significant production-use blocker?

  (To make my problem clear, how is D's current state not going 
 to allow / make it so difficult for developers (who know what 
 they are doing) to write say Photoshop-scale software: 
 excluding those *so* realtime use cases?)

 Note: I understand that D is never going without critics: 
 perfection is impossible. And, in my line of work, I highly 
 prefer the safety of GC compared to MMM... so I don't see 
 myself worried about GC pauses.

 I hope my question makes sense.
D's GC doesn't have great performances. However it works great and generally you don't depend as much on the GC as you would in other languages. If you don't have real time constraints, you should be fine.
Mar 08
prev sibling next sibling parent reply XavierAP <n3minis-git yahoo.es> writes:
On Wednesday, 8 March 2017 at 20:00:54 UTC, aberba wrote:
  (To make my problem clear, how is D's current state not going 
 to allow / make it so difficult for developers (who know what 
 they are doing) to write say Photoshop-scale software:
This is probably a common question, and it would be easy to answer by pointing to an actually existing piece of software. D needs for publicity a "killer app" [1] and this would be at the same time a driver to fully develop the necessary library modules (GUI, 3D graphics, whatever). What is the currently most impressive application made in D? [1] https://en.wikipedia.org/wiki/Killer_application
Mar 08
parent reply aberba <karabutaworld gmail.com> writes:
On Wednesday, 8 March 2017 at 22:13:26 UTC, XavierAP wrote:
 On Wednesday, 8 March 2017 at 20:00:54 UTC, aberba wrote:
  (To make my problem clear, how is D's current state not going 
 to allow / make it so difficult for developers (who know what 
 they are doing) to write say Photoshop-scale software:
This is probably a common question, and it would be easy to answer by pointing to an actually existing piece of software. D needs for publicity a "killer app" [1] and this would be at the same time a driver to fully develop the necessary library modules (GUI, 3D graphics, whatever). What is the currently most impressive application made in D? [1] https://en.wikipedia.org/wiki/Killer_application
So technically and from experience, the current state of D is not the primary issue?
Mar 08
parent reply XavierAP <n3minis-git yahoo.es> writes:
On Thursday, 9 March 2017 at 07:24:12 UTC, aberba wrote:
 So technically and from experience, the current state of D is 
 not the primary issue?
I don't have enough experience with D yet, hopefully someone else can tell you better. But my two cents. "Current state" is a very general thing. Going back to your original post, I would not really think memory management performance to be an issue at all (in the hands or a competent programmer who avoids 'new' inside loops etc); specially for the kind of software you have in mind, or even for the most demanding real-time applications, where D provides some possibilities -- maybe not as idiomatic as the GC 'new', but much better than getting void pointers from malloc(). Even in C# for example one's able to make things like this,[1] granted it's not quite Photoshop but quite nice; and there must be more impressive examples. So I don't think application developers should worry so much about GC pauses of death. Also regarding the "current state", another issue is the availability of libraries that you can use in your project. Of course D can't yet compare to C++, Java, Python, or .NET in this regard, even though there are lots of nice things around (plus you can call C and C++ and the bindings are often already available[2]). However I think that providing the demand from a killer app project could get a lot of support from the existing community in completing useful library projects. I get the impression that most people in the D community are computer scientists or engineers who use it for backends, or more often for pet weekend projects.[3] At work they are constrained to work in another, more commercially successful language. Just like Andrei at Facebook. [1] https://en.wikipedia.org/wiki/Paint.NET [2] https://github.com/filcuc/dqml [3] http://code.dlang.org
Mar 09
parent Arun Chandrasekaran <aruncxy gmail.com> writes:
On Thursday, 9 March 2017 at 08:57:39 UTC, XavierAP wrote:
 Just like Andrei at Facebook.
Just a FYI, Andrei *used* to work at Facebook. https://www.reddit.com/r/programming/comments/3ioy9b/andrei_alexandrescu_c_guru_leaves_facebook_to/
Mar 09
prev sibling next sibling parent reply thedeemon <dlang thedeemon.com> writes:
On Wednesday, 8 March 2017 at 20:00:54 UTC, aberba wrote:
 From a technical and experience point of view (those with 
 experience in large D code-base), how is only D's GC & optional 
 MMM a significant production-use blocker?
This is mostly a psychological effect of C++ folks having aversion to any GC.
  (To make my problem clear, how is D's current state not going 
 to allow / make it so difficult for developers (who know what 
 they are doing) to write say Photoshop-scale software: 
 excluding those *so* realtime use cases?)
I don't think there's really a problem there. Although not quite Photoshop-scale, but these video and photo processing apps were made in D without any problems: http://www.infognition.com/VideoEnhancer/ http://www.infognition.com/blogsort/ (and they aren't even nogc)
Mar 09
next sibling parent Paulo Pinto <pjmlp progtools.org> writes:
On Thursday, 9 March 2017 at 11:52:42 UTC, thedeemon wrote:
 On Wednesday, 8 March 2017 at 20:00:54 UTC, aberba wrote:
 From a technical and experience point of view (those with 
 experience in large D code-base), how is only D's GC & 
 optional MMM a significant production-use blocker?
This is mostly a psychological effect of C++ folks having aversion to any GC.
You should watch last year's CppCon 2016 talk by Herb Sutter, “Leak-Freedom in C++... By Default.” https://www.youtube.com/watch?v=JfmTagWcqoE He goes the extra mile to avoid saying the GC word, until he fully explains what his library solution for "collecting resources" is doing, with the sole purpose to avoid loosing the crowd's attention.
Mar 09
prev sibling parent reply bachmeier <no spam.net> writes:
On Thursday, 9 March 2017 at 11:52:42 UTC, thedeemon wrote:
 On Wednesday, 8 March 2017 at 20:00:54 UTC, aberba wrote:
 From a technical and experience point of view (those with 
 experience in large D code-base), how is only D's GC & 
 optional MMM a significant production-use blocker?
This is mostly a psychological effect of C++ folks having aversion to any GC.
It is interesting to have watched this debate over the years. Bjarne S. responded to the Java crowd by embracing the GC. He still has on his FAQ: "If you want automatic garbage collection, there are good commercial and public-domain garbage collectors for C++. For applications where garbage collection is suitable, C++ is an excellent garbage collected language with a performance that compares favorably with other garbage collected languages."
Mar 09
parent Paulo Pinto <pjmlp progtools.org> writes:
On Thursday, 9 March 2017 at 16:12:46 UTC, bachmeier wrote:
 On Thursday, 9 March 2017 at 11:52:42 UTC, thedeemon wrote:
 On Wednesday, 8 March 2017 at 20:00:54 UTC, aberba wrote:
 [...]
This is mostly a psychological effect of C++ folks having aversion to any GC.
It is interesting to have watched this debate over the years. Bjarne S. responded to the Java crowd by embracing the GC. He still has on his FAQ: "If you want automatic garbage collection, there are good commercial and public-domain garbage collectors for C++. For applications where garbage collection is suitable, C++ is an excellent garbage collected language with a performance that compares favorably with other garbage collected languages."
C++11 also defined a GC ABI for those "commercial and public-domain garbage collectors". Section 20.7.4, Pointer safety.
Mar 09
prev sibling parent reply Guillaume Piolat <first.last gmail.com> writes:
On Wednesday, 8 March 2017 at 20:00:54 UTC, aberba wrote:
  (To make my problem clear, how is D's current state not going 
 to allow / make it so difficult for developers (who know what 
 they are doing) to write say Photoshop-scale software: 
 excluding those *so* realtime use cases?)
Well, I don't think there is such problem. I make medium-size real-time programs in D (example: https://www.auburnsounds.com/products/Panagement.html) and they don't require much more attention to detail than similar programs in C++. They require understanding though. The real problem is perception. Our competition uses persuasion techniques like moral high-ground, word-thinking and plain marketing. While the D community tries to address technical problems. For example in D target market, the word "GC" is associated with a bad "weight" (and I tried to change perception with articles but it doesn't change anything) so _by association_ D inherits this bad weight, whatever the rational response could be. The other thing you'll hear about when you are doing D is that D is not *new* enough, so it couldn't be any good. Else swathes of people would have adopted it, right? Marketing works this way because we tend to rate each concept positively or negatively, and our intuitive brain is really good with effortless weighted sums. is-good("D") = Weight0 * is-good("GC") + Weight1 * is-good(watever-it-makes-me-think-of) + ... The competition is clever enough to emphasize that D is 14 years old and has a GC, so they don't even try it.
Mar 09
parent reply Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Thursday, 9 March 2017 at 12:27:30 UTC, Guillaume Piolat wrote:
 The competition is clever enough to emphasize that D is 14 
 years old and has a GC, so they don't even try it.
The competition doesn't smack talk D, I think. If they mention D they tend to do so in a friendly way. It's not like D is threat to them anyway. Past or current D users might complain though.
Mar 09
next sibling parent reply Guillaume Piolat <first.last gmail.com> writes:
On Thursday, 9 March 2017 at 13:36:28 UTC, Ola Fosheim Grøstad 
wrote:
 It's not like  D is threat to them anyway.
I'm not sure why you would think that, if anything that reinforced my point.
Mar 09
parent reply Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Thursday, 9 March 2017 at 13:40:09 UTC, Guillaume Piolat wrote:
 On Thursday, 9 March 2017 at 13:36:28 UTC, Ola Fosheim Grøstad 
 wrote:
 It's not like  D is threat to them anyway.
I'm not sure why you would think that, if anything that reinforced my point.
I am speaking of what they are perceiving not what I think. They don't perceive D as a threat, why would they feel a need to smack talk D?
Mar 09
parent reply Guillaume Piolat <first.last gmail.com> writes:
On Thursday, 9 March 2017 at 14:08:00 UTC, Ola Fosheim Grøstad 
wrote:
 I am speaking of what they are perceiving not what I think. 
 They don't perceive D as a threat, why would they feel a need 
 to smack talk D?
I don't really want to talk with you.
Mar 09
parent Ola Fosheim Grostad <ola.fosheim.grostad gmail.com> writes:
On Thursday, 9 March 2017 at 14:38:32 UTC, Guillaume Piolat wrote:
 On Thursday, 9 March 2017 at 14:08:00 UTC, Ola Fosheim Grøstad 
 wrote:

 I don't really want to talk with you.
Whatever suits you, but don't pretend that people that express views about D online are the competition. They are overwhelmingly people that have used it or are using it. So whatever they like or dislike about it is rooted in their experience. I.e. It is real.
Mar 09
prev sibling parent reply dewitt <dkdewitt gmail.com> writes:
On Thursday, 9 March 2017 at 13:36:28 UTC, Ola Fosheim Grøstad 
wrote:
 On Thursday, 9 March 2017 at 12:27:30 UTC, Guillaume Piolat 
 wrote:
 The competition is clever enough to emphasize that D is 14 
 years old and has a GC, so they don't even try it.
The competition doesn't smack talk D, I think. If they mention D they tend to do so in a friendly way. It's not like D is threat to them anyway. Past or current D users might complain though.
I don't think the community should think in terms of "threat" or "competition" I mean languages are basically tools to get a job done. Most developers are 9-5 types and wont leave their comfort zone anyways unless they have to. I agree that I rarely see other forums talking bad about D and if something is negative it's usually a persons opinion on x or y not really disparaging. Also, not everyone is anti-GC that might be interested in using D anyways. You pick the right tool for the job and if you look at the JVM lots of apps/libs have been written on it that run fast and are widely used. Don't worry bout the rest and focus on improving the D ecosystem. I like it but sometimes you hit that wall where something doesn't work or isnt implemented in the ecosystem (I know ppl can contribute and write it) but sometimes you want to just get something done and not have to worry about some lib is missing a needed feature or not even there. I've been messing with dotnet core lately and I know there is a much larger community but the libs are constantly getting released to support it and for web stuff it is pretty efficient. Bottomline is D with all the little issues here and there is doing fine. Dont worry about the others. Also how many times a week can the same questions be asked on this forum about the same topics? I feel I am re-reading the same stuff weekly
Mar 09
next sibling parent bachmeier <no spam.net> writes:
On Thursday, 9 March 2017 at 15:54:04 UTC, dewitt wrote:

 Also how many times a week can the same questions be asked on 
 this forum about the same topics?  I feel I am re-reading the 
 same stuff weekly
That's a good sign. It comes with the territory when a language starts to see serious consideration for important projects. Eventually someone will put together a resource that answers these concerns.
Mar 09
prev sibling parent Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Thursday, 9 March 2017 at 15:54:04 UTC, dewitt wrote:
 I don't think the community should think in terms of "threat" 
 or "competition" I mean languages are basically tools to get a 
 job done.
Yeah, and that is a trend that is increasing as the cost of developing new languages are falling. No single tool for everything. However, the tendency in the smaller programming communities is to smack-talk the big leaders: Java, C++, JavaScript... If you go to a JavaScript forum they hardly talk about other languages at all. Now, I have seen some people on reddit saying things like "Forget about D, D is a dead language". However, that doesn't speak to age. C++ is 30 years old. It speaks to no perceiving a clear project vision: language X is _the_ language to do _Y_. As you said, languages are tools to get a task done. I'm currently looking for languages that don't require a runtime and can generate WebAssembly so that I can create WebWorkers that are efficient. Anyone language doing best in that category will be perceived as having a clear vision... I don't people will perceive a clear vision until you are seen as targeting something specific.
Mar 09