Why is Language D rarely used?

Asked

Viewed 1,790 times

21

I’ve done a lot of research on the language, I’ve used compilers, Ides (Eclipse, Mono, Codeblocks).

I thought she was "too good to be true". It has the whole structure of the Java/C# syntax (which in my view is more productive), but is compiled as if it were c++ . It has many important libraries, as it is compatible with C/C++.

But it is very forgotten or little used (here not even had the tag D). What’s so bad about her? Missing some important implementation, or some very irregular use of memory, multiple inheritance problems, constructors or something like ?

  • 2

    Now you have :D

  • A yes, thank you

  • 1

    @Rodrigosantiago, face this question is very subjective. They will fill you with negative votes. This question requires opinion and not a direct answer, as is the site (Sopt). Well, I’m not criticizing you, please, just giving you a hint as to the question.

  • 3

    Sarcastic answer: To use languages like D, the guy has to learn at least a little programming. Have you seen how much PHP, jQuery, and Regex stuff you have on the site? : P

  • Well, what I was trying to find out is if she has any 'problem' or compilation errors, incompatibility, lack of any important resource, etc.

  • 2

    @Rodrigosantiago joking aside, you can add this comment to the question, I think it gets even more specific. For example, add that you want to know if it is a mature language, if it is ready for use, and those things that you spoke. It values the question whether you [Dit] and add these more technical and less opinion-dependent doubts. Also, comments are very ephemeral, and not everyone reads it. About the tag, the simple fact that you use it makes it exist on the site. What’s missing is just filling in the tag wiki with the description.

  • 1

    Look I’ll be honest, I don’t think it’s possible to answer, because it’s a matter of opinion, but my humble opinion is that Ides really help something become popular. Delphi and Visualstudio helped (in my opinion :) to make Objectpascal C++, C# ... So much so that many program in certain languages, but they don’t really know what they’re programming. From what I looked at D has a Guis editor facing it and is very limited compared to others, besides that it does not come with the installer: http://www.dprogramming.com/entice.php

  • 1

    @Guilhermenascimento , Monodeveloper is a great IDE .

  • @Rodrigosantiago That’s basically what I said, if I understood your comment, Monodevelop yes and is probably an example that maybe helps to justify why a language becomes popular (in his case c# and F#).

  • One impression I had a while back was that the language was in perpetual beta. Later they froze version 1 and started to develop version 2, but instead of passing the idea of stability to version 1, everything indicated that it was deprecated (and currently already is). I also found the documentation (and evolution) of libraries very confusing, they seemed to focus more on the core of the language than on the ecosystem.

Show 5 more comments

1 answer

24


Marketing

One of the reasons is that marketing is more important than technical ability.

But this is a simplification. It’s obvious that having a big acceptance is important and this has been getting harder and harder. For people to believe in something they need to be sure that there will be enough support for the entire language ecosystem. This can be provided by large companies, so marketing is important.

In some cases a language gains traction by being the only or best option to program something that people are interested in, what happened to Apple’s languages. Have you seen how flawed Objective C and Swift are? The success is due to iOS adopting them and this is a success. As this lost a bit of traction the languages went along.

The same goes for Java, C#, or even PHP, Python, JS (only it could be used in browsers), etc. Of course community languages have marketing too, it just isn’t paid, it’s more organic. And success attracts success.

One of their strategic mistakes may have been trying to catch the C++ programmer. Language is not a substitute for what C++ solves well. But they sell like they are. In fact they are changing the strategy, too late.

Ecosystem

The fact is that not only does D not have the support of a large company or the support of many small users (what would be called a large community), but it also does not have a reliable and clearly evolutionary ecosystem.

There is a lot missing around the language. Few skilled (in many senses) and committed people have helped close the remaining holes. All platforms have to run well, for example. I’m not just talking about high-class IDE, I’m talking about libraries (even the quality of existing basics) and tools in general.

It’s not that I’m not getting better, or that I don’t have some really cool stuff, but a lot of stuff leaves to be desired when compared to C++, C# and Java, which are the most direct competitors of D.

The fact that there are several compilers, each with its defects, and even for a long time have a competition between standard libraries does not help either. It is too small to have fragmentation. It adopts the LLVM as official and strengthens what is good.

The fact that the standard library chooses a more functional and meta programming style to the detriment of the programmers' favorite paradigm (OOP, cof, cof) does not help either (this is not a defect, but creates an impedance with popularity).

Is not revolutionary

D is great. But it’s not all that wonderful either. She has a lot of problems, like any other. People who delve into it realize that they will change their problem, that it is not a definitive solution. You will win here and lose there. One problem is that people who would potentially use D are smarter and can see that it’s not the Holly Graal, is not what happens with PHP, Python or JS that people only buy marketing without questioning.

To quote an example, the Garbage Collector language is not the best and greatly impairs its functioning. Only its existence tends to drive away those who need C++. Who programs in C++ usually wants a better control of memory and other aspects. D is not able to do everything without cost, at this point D is closer to C#. And to say that you can program in D without using GC is marketing, in practice it doesn’t happen, without making the language one of the most unproductive, much more than C++. But that may change, but there will be trouble.

Generating a pure executable is not all that advantage. Java and C# are compiled and run machine code, only need one Jitter before. Moreover, nothing prevents the machine code is generated direct. In fact C# can already do this and is increasingly doing better with the evolution of .NET Native and the "new" . NET.

Even though you’ve got a lot of things right, when you start to look at the language more deeply you start to realize that she’s made a lot of mistakes. She’s not perfect, all language is like that. Knowing more begins to see the language more like the others, begins to have less reason to trade what is already successful for something uncertain. You have to have a strong reason to trade one thing for another. And D doesn’t solve a problem much better.

There are many things that seem revolutionary, but using one realizes that it is not all that. And C++ isn’t so bad, the direct competitor is good enough. And C++ has had time to improve some of its flaws while D has not yet formed an audience, everyone sees improvements in what was bad, there is a roadmap clear on course and it’s all happening, in D little happens.

Missing one killer application for D. It lacks a niche where it falls like a glove.

Problems in general

None of these problems alone would be sufficient to justify the little use of language, they only help to justify.

  • There are several strings.

    Although giving flexibility is confusing to have to deal with the various types. Perhaps a subtle change saved the language from this problem. Choose one as default clear and leave the others as options, would already standardize a little. And it gets worse, because there is confusion in the implementation and it is not intuitive to use them. You expect to pick up a character and take a byte. Some people think it’s a mistake that they’re mutable.

  • Arrays out of standard typing

    They have been implemented in a way that escapes the standard of the language type system and have some features that at least can be considered weird.

  • Extra cost

    It has abstractions with extra cost, which goes against the precept of C/C++, languages that D tries to compete with. GC is only the most obvious of them.

  • Already carries legacy

    Some new features were later placed in an ugly way and it seems like a gambiarra and not something from the language. Even the ones that got good came late, timing is important. Some are ugly from the start and lacked a little good taste from Walter, who is an excellent compiler.

  • Didn’t solve everything

    Some C++ errors are still present. Every day someone finds a new defect. Basically everyone already knows the defects of C++. Perception makes a difference here more than reality.

Anyway, there was a bit of stubbornness in the beginning and a definite release a little premature that made more radical changes impossible when criticism began to appear.

Some of the defects may be subjective, but that’s what counts.

Qualified professionals

An opposite example is PHP. It’s a much worse language, even with today’s "evolution", it doesn’t even have, or didn’t have, such a good ecosystem. But it solved a major problem at the time, it benefited greatly from being focused on a niche. It was a very practical language for working with the web. It already had a good built-in library and an easy-to-run structure with an HTTP server. Being dynamic and unceremonious attracted many people to make websites simple and fast. How she began to succeed attracted more success. Professionals began to learn to break a branch. Then companies started opening jobs because they had professionals. And more people learned because they had vacancies. Understood the difference?

Because of this everything lacks qualified professionals. Then we get into the problem of the egg and the chicken. No company will adopt a technology that it cannot find professionals. People do not seek to learn because there are no vacancies available. Something has to happen to break this vicious circle.

Completion

In the official and other related forums there are several discussions on the subject, always with participation of the main members of the language, Walter Bright and Andrei Alexandrescu.

It’s a shame, the language is really quite interesting and I’d probably be using it if I were more successful.

But it is easy to use. It doesn’t suck, quite the contrary. Facebook is using well. Or was :)

  • But what? Facebook uses D ?

  • 1

    @Rodrigosantiago and is not of today: http://www.drdobbs.com/mobile/facebook-adopts-d-language/240162694

  • Just a note, I believe Facebook has stopped using the D, because the repositories that use it have been moved to https://github.com/facebookarchive, the only one I found was https://github.com/facebook/fbthrift. which is actually a set of codes but is not an exclusive use @Bacco

  • @Guilhermenascimento is good to remember that not all of them are open source, but if I find any relevant information, I share here.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.