My Thoughts on D’s Future (or How I Came to Love D2)
Many programmers are quite passionate about their language(s) of choice. I don't know what it is. Something in the DNA, perhaps. Every negative word written about the language is taken personally. Every personal disappointment regarding design decisions becomes another piece of evidence that the language is doomed to fail. Java has been on the brink of failure for most of its existence if you listen to a number of vocal users who have posted in different forums and newsgroups over the years.
With D, the phenomenon seems exaggerated, I think, because the vocal community is a larger percentage of the relatively small whole. And when a prominent member of the community lets their frustration about Bugzilla #whatever be known, it seems as if the sky is falling and the language is destined to crash and burn in a spectacular ball of fire. Who's going to adopt a language that can't even get that particular issue straightened out?
And then there are the related issues of tools and libraries. If there's no IDE that can fill in half of a module with a single click, who's going to want to use D? Text editors are so archaic that useful programs just can't be written with them. And without a debugger on par with that found in major IDEs, serious software isn't going to get made. And, OMG, there are *two* standard libraries! What's a poor, helpless programmer to do?
My take on all of this can be summarized in one word... Bullshit!
I'll admit that I was quite turned off by D2 in its early stages of development. The fact that it was turning into a completely different language from D1 just didn't set well with me. But over time, a number of events have occurred that have completely changed my mind and made me look forward to D2's final release. There's the fact that Walter brought on additional developers, such as Andrei and Bartosz. Phobos was added to DSource. DRuntime was adopted. The source of the back end was opened up. Don Clugston stepped forward to squash compiler bugs and patch in new features. Several community members contributed patches. Input from the community resulted in changes and improvements, moreso than in the days of D1's development it seems. As a result of all of this and more, D2 has, within the past few months especially, begun to blossom into something quite special.
The foundation is there and it is being built upon step-by-step. Why would anyone expect D to become widely adopted almost the instant it is released? It takes time for a language to gain mindshare among corporate interests. It needs to be tried and tested, sure, but it also needs to be deemed free of legal issues. It needs a good reputation. And in order for that to happen, it needs people to use it independently, for hobbies and small business projects. D1 is great for those who use it, but there are certainly warts that make it unsuitable for large scale development compared to existing languages. I don't believe it ever had a chance. But D2 definitely does. Because of the effort behind it, it is addressing D1's shortcomings and looking to meet the demands of modern software development. The D2 I see now is a far better language than the one I saw several months ago, for sure.
As for the Phobos vs. Tango debate, it's a moot point at the moment where D2 is concerned. But to be honest, I never understood the issue about "two standard libraries". To me, Tango is not and never has been a standard library. There is only one standard library, and that's Phobos. Tango is an alternative to the standard. Yes, there's a real issue in that some libraries support one and not the other. But one of the aspects of project development is deciding which libraries to use. In C++, you have to decide whether or not to use the STL, and these days whether or not to use Boost. Once that decision is made, you have to decide which bits of STL or Boost you want to use. Then the libraries you use may or may not make use of either STL or Boost, which may or may not affect your memory allocation strategy or your build management. I fail to see how choosing between Phobos and Tango is any worse. With D1, you pick one and stick with it or you try to accommodate both. Either way, you plan your project around your decision and life goes on.
You can complain that D is not suitable for large scale software development because there aren't enough tools and libraries. You can say that without feature A, this group of programmers will be turned off, or that feature B will alienate that group of programmers. You can point out that no one in a position to do so is going to risk thousands or millions of dollars of their development budget on a language that has yet to go mainstream. You may be absolutely right. But to say it's never going to happen for D is completely off base.
D has momentum. The community fluctuates and its always hard to tell just how big it is. But there are always new names in the newsgroups and IRC. And these days, mention D in any programming forum and a number of people will have heard of it. I sometimes get email regarding Derelict from people I've never heard of, asking about one thing or another. People are actually using D, even if we never see what they're doing with it. And that's a good thing.
Personally, I don't care one way or another if D becomes the next big thing in the corporate world. As long as it's available for me to use, I'll be happy. And as a small part of helping that to happen, I'll keep this blog going and work on Derelict when and as I can. I have more projects I'd like to work on if I can find the time. And that's how D will eventually become more pervasive. Whether you contribute to existing open source projects, start your own, or even develop in-house or commercial software, just using D brings it that much closer to the big leagues.
So it would be great if people could stop with the doom and gloom scenarios and stop worrying about who's going to use D and who won't bother with it. It would be much better to focus all of that energy on helping to get D2 finalized, or enhancing the quality and quantity of tools and libraries. That's the foundation. The rest will come in time.
November 14th, 2009 - 20:04
Indeed. It takes at least 10 years for most languages to get mindshare. We’ll see. I think D is a fabulous successor to C++. It would be nice to see, eg. Qt switch. But it’s unlikely considering they’d alienate their existing users and Qt supports more platforms than D does currently. Could happen eventually though. You can only hope.
November 15th, 2009 - 11:20
Absolutely agree with You.
November 15th, 2009 - 13:58
Right now there’s only one thing that truly bugs me about D: lack of 64-bit compiler support. Yes, I know of LDC, but really Digital Mars should provide a 64-bit compiler.
November 15th, 2009 - 16:39
OMG some optimism in the D community !
November 15th, 2009 - 17:39
64-bits will happen after D2 is released, is in the top priority list. I totally agree that there is a lot more people using or following D2 than it seems. Actually, I have 2 friends actively following its development process although they don’t code in D2, but with interest in using it in a project.
November 15th, 2009 - 18:39
The phobos vs tango issue would be solved if everyone just realized that tango is dead and phobos is the way to go. Phobos has passed tango performance wise (no slow object oriented wrappers) and is backed by Andrei et al. I wish phobos will finally win this race.
November 17th, 2009 - 00:57
Your analogy to Boost and STL is invalid because Phobos and Tango are mutually exclusive, at least in D1. I don’t know if D2 is going to change that, or if the Tango developers are going to make it a separate library more like Boost. That actually seems like a good plan…
Tango isn’t leaving because it has so much more functionality than Phobos, and many developers can’t live without it. It’s well written, well supported, and generally easy to work with. There’s nothing wrong with Phobos, and it is definitely more lightweight, but Tango is still useful.
I’m definitely looking forward to D2 and, hopefully, an end to the war in which neither library is eliminated.
November 17th, 2009 - 02:35
Couple of minor points, Debio:
1. Tango happily hosts phobos with a handful of small tweaks, so they’re not mutually exclusive (there’s a project called Tangobos that does this)
2. If there’s a “war” as you described it, then it is merely propaganda parlayed by fools such as foobar (above). The Tango folks certainly don’t see things this way, though I hear rumor that’s not how things are generally portrayed on the D newsgroups. Contrary to the ignorance of some, Tango was designed and built specifically to excel in performance and there are several independent tests confirming this (sometimes in spectacular fashion). The library has always been a deliberate move to help garner traction for D as a language, so it’s a little odd to hear folk talk of mutual exclusion and so on. Instead, Tango should surely be viewed as a huge bonus for D given that it offers so much robust functionality, for free. One might imagine this is why Walter Bright gave his blessing for Tango to distribute his compiler with the library (he doesn’t do that for anyone else)
November 17th, 2009 - 04:45
I wasn’t comparing the STL/Boost choice to the Phobos/Tango choice. My point was simply that library selection is part of the planning phase of any project, regardless of the language. Some people treat the Tango/Phobos divide as some incredibly horrible situation. That just doesn’t make sense to me.
November 17th, 2009 - 23:06
Once Andrei re-implements the rest of Tango in phobos, there’s no need for the object oriented wrappers and silly long module names anymore. Since phobos adopts the better runtime from Tango, adding functionality to phobos *will* make tango obsolete since phobos *is* the standard library. Why would anyone use tango when phobos has the same functionality + it’s a standard + andrei likes the coding style.
November 18th, 2009 - 07:52
D is not a language, it’s Walter Bright’s compiler-writing hobby. Until that changes, how can anyone take it seriously?
December 10th, 2009 - 14:58
“D is not a language”
Yes it is. It is also Walter’s hobby. Many languages started out as a personal interest and blossomed into something greater. If you want a corporate designed language, go write COBOL.
November 21st, 2009 - 12:12
I believe that D is one of the best language around, but it lacks many things:
1) A good IDE (poseidon is no more developed or has a very slow development)
2) A well explained debugging support (I read many different things about it, someone saying it needs any c++ debugger, others saying the there is the need of ddbg because the c++ debuggers are no good for D…)
3) An IDE with integrated debugging (I tried many times to make the ddbg debugger work in poseidon, but all attempts ended in failure…)
4) An IDE that has the gui builder support (many modern IDE have it)
I thinks that Walter Bright should dedicate more time to that points…
Bye.