113

I stumbled several times over D and really asked myself why it isn't more popular.

D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability.

Do you think it has got a future? I really would like to try it but somehow the thought that I'm the only person on earth programming D discourages me to try it.

73 accepted

DO it! D is one of my favorite programming languages. It's not just a systems programming language, it's used for the same things C++ is used for, EVERYTHING. There is also an alternative standard library for general purpose usage which I think you would like unless you're really attached to C/C++, then the standard library would probably be better for you. I have been using D for over a year now. It has a very vibrant community, everyones really nice and helpful! There are new projects being made for and with the D language everyday! I'd give it a try :).

44

I really would like to try it but somehow the thought that I'm the only person on earth programming D discourages me to try it.

Check out the D newsgroups at news.digitalmars.com, and you'll find a large and thriving community of D programmers.

For instructions on how to set up a news reader, see http://www.digitalmars.com/NewsGroup.html or the web interface.

38

I wonder...

I stumbled once or twice on web tutorials for D, and, as a C++ developer, I was not impressed.

Not because D lack qualities.

It's just that, as far as I am concerned, learning a language takes time, and I would rather use this time learning different languages.

For me, D, like Objective-C, are either:

  1. too much similar to C++ when compared to other languages like Ruby, Python, Perl, Lisp, or even JavaScript, i.e., unlike those language, I believe D won't change a lot my way of thinking. So there's no way I will invest personal time in it.
  2. being less interesting than Java or C# when I'm just drooling over their huge standard libraries, i.e., unlike those languages, I believe D won't add a lot to what C++ is able to do.
  3. I never (i.e. never as in never) saw a job offering near my home where D (unlike Objective-C) was mentioned

And I did not even mention the fact that C++ is huge as a language, and that I am still learning each day new uses of C++ features.

In the end, I guess C++'s shadow hides somewhat D, and thus limits the growth of D's community, which is perhaps a shame. Or perhaps not. I don't know. Without a strong incentive, I just don't see the point to investigate.

Note this is not saying D is a bad language. Quite the contrary. Just giving a personal opinion of why I won't try D, an opinion that could be shared by other people.

Thus, I guess this can be some valuable additional info to the "Does the D programming language have a future?" discussion.

Edit

Note that I stumbled on D's page on Wikipedia, and was positively impressed by its features... But it doesn't change what I said above

Edit 2

Whoa... If someone like Andrei Alexandrescu wrote an article on D, then I am probably wrong to ignore it:

http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=217801225

36

Everybody speaks about projects and nobody about maintenance. I worked during 20 years supporting the programs which were made by other people. The main problem of C++ is not even GC unavailability but unreasonable quantity of features. Every programmer has their own set of his favorite features and as everybody likes the music listened when he was 16, mostly we make programs as it was in our university times. But every professor has their own views on the subject matter. As a result I have seen C++ programs written in 2007 where all constants were defined in the preprocessor. So for maintenance programs in C++ with so many options we need in industry first class personnel but it is impossible, espe?ially for small and middle size companies. As contrasted to this D has only the essential but all purpose, modern and actual set of features for pragmatic people. But D has future only when it will overcome some very critical difficulties. The main ones IMHO are:

  • D is not good name. We all are the pawns of ratings and mode (as we say in Russian). The ratings come from TIOBE and others. With simple one letter 'D' we have many confusion with it and it is very difficult to find adequate information in Internet. My proposition is DPL as "D Programming Language." If anybody thinks that the name is not important I can say only: "How you will name the ship so she will ride". And it is not too late to change the name.

  • We have to stop to use two libraries. Tango is more popular. It is a winner. Our leader must have not only good ideas. He must have responsibility before the community. It is quite enough to have one Carl Sassenrath with his REBOL. We have not to become a group of sectary . The decisions have to be accepted collegial. It's time to have a community body of 3-5 respect people. And we have to think about a standard for D.

  • We need our own GUI library written in D, clear and modern. DWT is not a good choice for newcomers. Did you see the documentation? You have to go to JWT. And there you have to learn Eclipse. I want only to write a program in D and don't want to analyse examples in Java because I don't know it and I don't want to know. Maybe it would be better to support this guy which alone makes DFL?

I am not a system programmer and I start to use D as a general purpose language. But in many blogs I can read complaints about debugger. But I thought that first of all D is a system programming language. And it must have a good, modern and effective debugger. Stop any other works and make this immediately!

If D is considered to be a general purpose language it needs the real strings in syntax level. Maybe it is only syntax sugar but int[char[ ]] x1 in hash arrays IMHO has too many brackets. And you can imagine how ugly it will look in multidimensional variant. Is int[string] x1 really not better? And when we have made a first step and included string operations in language why not to make it in more clear manner?

We have to look at D as at technology. Therefore we need an interpreter which is near as D to use it in small quick lazy i.e. agile programming and as internet and glue language. And we have such one - MiniD from this young genius Mr. Jarrett Billingsley. Community have to support this project. Our leader Mr. Charles Walter Bright have to give hearty approval to it.

Today we have already 128 bit processor but we don't have even 64 bit D compiler. Maybe it is such a strategy?

We need one big and successful project. Nothing helps so greatly as a good example.

May be somebody will not agree with me but every great language has its mother company. Borland and Microsoft for C++, Sun and IBM for Java, ZOBE for Python. Maybe it is necessary to find such one for D?

Another way to popularity is to work with universities communities. Our leaders have to read lectures for students. D should be included in educational programs. Young people are our future. And for our publicity D have to take place in all benchmark tests (http://shootout.alioth.debian.org/) Last tests from 22 January 2009 were run without D. Why? May be because the processor was Intel Q6600.

So I beg my pardon for such a long answer and for my mistakes in English. D is really nice but we have only 2-3 years to solve these problems. If our leaders and community will do it - D has a future. If not - it will cast in lot with thousands of languages which are used only by small groups of fans.

25

No, I don't think it has a future. There's no doubt it's better designed than C++, but it doesn't really stand out enough to ever get mainstream acceptance. The world just doesn't need a cleaned-up C++. For most purposes, other languages are better suited (Python, Ruby, C#, Java), and for the areas where C/C++ still dominates, they're likely to keep doing so. Switching to a new language isn't a small task on most projects, and will only be done if the rewards are really worth it. And even if D is a nicer language than C++, it lacks in library/tool support.

I don't see D ever breaking through, for the same reason that we're still using x86 and a million other messy, badly-designed technologies. Because they're here already, they're widespread and well-supported, and the advantages of switching to something better designed just aren't big enough to justify the initial cost.

18

Honestly, no. I think it's going to stay a niche language. The needs its trying to meet are already met.

15

I certainly think it has a future, otherwise I wouldn't have spent as much time on it as I have, including being part of the project lead of Tango (close to 100 contributors) for more than 2 years and co-authoring the book "Learn to Tango with D". Also the 40 people at the Tango conference in Poland last September suggests that you won't be alone as a user.

11

I think the thing to keep in mind here is that languages like Ruby and Python started out the same way, as one-man projects with grassroots following. Without a huge corporate backing, D will only become popular through a grassroots movement of programmers, starting with hobby projects, non-production code, etc., just like Ruby and Python. I've been using D for about a year and love it. Remember, if you're interested in a language, but won't try it because you're worried it won't become mainstream, and enough other people think like you, it will become a self-fulfilling prophecy.

Edit: Another very important thing to keep in mind is that D is still a bleeding edge technology. IMHO, declaring a 1.0 version when it was declared was probably a mistake in hindsight, as it gives the wrong impression as to what the community is focusing on now. D2 makes several very fundamental changes to the language and, by seriously addressing concurrency issues, increases the justification to undergo the switching costs from C++. Most of the effort of the core D people is going into getting the core language of D2 right. Most community effort is going into getting the code to libraries, tools and alternative implementations written, and keeping up with changes to the core language. Polish, documentation, etc. will come after the dust settles on D2.

9

You may also want to look at these questions:

D Programming Language in the real world?

How widespread is D here at SO?

Is anyone using D in commercial applications?

It seems to be popular enough on SO.

9

A good (but not the best), but certainly not the most relevant, source which shows an increase of popularity of the D programming language is certainly TIOBE's index located at http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html . From a perspective of a professional C++/C developer (since 1992) - D is the best designed OO programming language with features that actually go beyond OO (see new "pure" functions for an example). Out-of-box D code is pretty fast. Shootout examples can give some clues about the speed: http://shootout.alioth.debian.org . But, software engineers know pretty well that it is not all about speed. Personally the power of D comes not just from speed, but also from it's PRACTICAL values (code coverage, design by contract, built-in unit testing, invariants, const correctness, scope keyword, built-in documentation system, etc).

To sum everything up in one, single sentence - D is a heaven for a software engineer.

9

Glancing at the Wikipedia article, a few impressions:

The article looks like it was written by enthusiasts, so I rather question whether it has WP's Neutral Point of View.

It looks like it does some things better than C++ (which isn't really a hard goal), but it doesn't look to me like it does enough things better. Lots of people have worked on a better C++, and the only two candidates to succeed on a large scale have had massive corporate backing. There's now three languages in that niche: C++, Java, and C#. Squeezing another one in is not going to be easy.

The WP article said it didn't handle Unicode smoothly, which to me is a showstopper. I'm willing to forgive older languages for having problems with Unicode, but not newer ones.

I don't see why I'd want to learn D. I'm potentially interested in learning languages that are different from what I know, or lots better. D doesn't look like either. Moreover, I do my home stuff on Linux (or possibly OSX), and it looks like the main development is only for Windows (which I use at work, but only to play games on at home).

The primary development on Windows is a potential problem. Unless and until anybody can convince Microsoft to adopt it for .NET, which I see as very unlikely, it won't get mainstream status there. The Unix-side ecosystem has lots of developers, and more room for a new language to force its way in, much as C++, Perl, and Python did.

I could be wrong (every so often I remember my first impression of the Web, that it would never catch on), but I'd bet fairly heavily against D becoming mainstream. I'm sure it's a nice language, but I've seen lots of nice languages that never became mainstream. The current direction seems to be aimed at displacing the products of large corporations, rather than climbing around in the wainscoting to emerge triumphant.

I do have some suggestions for its proponents.

Fix any Unicode problems. Now. It really doesn't matter what you have to change and discard, or how many programs you break. No language with Unicode issues has a future any brighter than its present.

Keep the Unix-side development at least as current as the Windows-side. It's a lot easier to get mindshare in a world where nobody is fixated on Visual Studio and no company dominates, and critical mass is probably smaller there.

Get some significant application written in D. Anything that a large number of people would recognize would be good for a start. That way, it'll at least look like a serious language, and perceptions are critical in this game.

7

You won't be alone; you will be in a minority for a while yet. My impression is that D has a lot of promise, but is too much in a state of flux for many people. Give it a few more years to stabilize, and it could become a contender.

6

You aren't alone. I installed D, but haven't written anything in it (yet). And there are a number of questions here tagged "d", so there are users out there.

From what I've read, yes, I think it has a future. But it's going to take one programmer at a time to develop something in D before enough of us are out there to make it more mainstream.

4

Remember how long it took for C++ to become the dominant offspring of C. C++ programming with CFront was feasible in 1983 (after a couple of years in the lab), but it didn't become the go-to language (no pun intended) until the 90s, when hardware became fast enough, and software subsequently complex enough, that the merits of C++ over straight C became overwhelming.

D hasn't even been around for a decade (the earliest newsgroup posts, talking about an alpha release of the compiler, date back to 2001), so I feel it has some time yet. And if the creators of the language have made a wise design choice in optimizing for multiprocessor hardware, then it may yet have its day.

3

There are a lot of good ideas in D. But I wouldn't use it in the current incarnation. It doesn't really offer any compelling (besides something nice to have) over C/C++ for system programming and Java/Ocaml/Haskell/Erlang/Python/Ruby/Perl for application development.

I have a hunch that the next gen c/c++ successor will come from clang/llvm folks (sponsored mainly by Apple with cash position recently bigger than Microsoft BTW) (with killer features like fast/tight IDE integration, JIT/static code generation switchable), where many good ideas of D will be absorbed.

3

I haven't looked at D because of the lack of time and industry support.. I haven't seen a big company picking up, using and supporting D :( So from this point of view probably not.

Ruby, for example became popular just because of Rails.. But probably somebody writes a killer app in D, who knows..

2

One problem it has is that there are a number of different programming languages called "D". The first one I heard of (and the one with the best reason for the name) was in the late 1980's (it optimized database access via a C-like syntax, hence "D")

2

Depends on what you call "future". I don't believe any single-source language has ever survived over the years: tcl has been replaced with python/perl. There is a trend to replace python/perl with ruby code, etc. C/C++, FORTRAN, LISP, SCHEME -- all had many implementations and have survived many years.

The key to mainstream acceptance and continued support is the existence of multiple sources.

D currently has only one implementation -- and this makes it hard to rely on it being available on many platforms.

2

I for my part would like to see it overtake C++, but I wish that for Objective-C also. My background with Eiffel makes D a decent option if you like the C syntax more than the pascalish syntax from Eiffel. But D has taken quite a few good things from Eiffel, I once was a big fan for Eiffel but these days I assume I'd prefer D.

2

I wanted to try D a weeks ago, however I gave up eventually, as the entry barrier was too high for me. After a hour of browsing D related web pages to learn what I need to download and install, I have downloaded Eclipse, some D plugin for it and and some more basic D packages, but after another hour of experimenting I was not able to compile and run even the most basic hello world application because of some build system ill-configuration errors.

2

D hasn't stable opensource compiler, it hasn't normal debugger like C++ has. But it has very clean syntax, much better than C++ and more similiar to C# (but doesn't require anything like .NET framework - it generates native code). If it will have stable opensource compiler and good debugger - it will have a great future... I think.

2

D strongly reminds me of Eiffel, which in my opinion was a better Java. The question is: who will provide the indispensable tool chain (an advanced IDE, debugger, profiler, etc...)? Who will make sure it runs effortlessly and buglessly on multiple platforms? Who will promote the language? And will there be a lot of good third party libraries?

Furthermore, I don't see any killer features. For example, if D could come up with a solution to simplify parallelism considerably, this would provide a strong incentive to make the transition. Pure functions are an insufficient step towards this goal. It solves the automatic parallelization issue, but does not provide a simplification of explicitly intended parallelism. I am thinking about a new programming paradigm that tries to hide low-level multithreading issues. Instead of multithreading primitives such as mutexes and call queues, I'd like these to be hidden from me. The language should provide constructs that abstract these away. I know, this is far from simple, but this is an example of a feature that would justify a major transition.

All these things make it very unlikely D will become a popular language.

2

If you see the history! It's difficult to adapt new player if we already use to with existing ones. So nothing strange about mix reactions (most of the negatives). But i think "D" would shine soon. It has potential to be the main stream language. My advice is to just go for it.

2

I am learning DPL. So far, its so good.

D has come a long way so far. Its development, if not exactly snowballing, seems to have had a slow but sustained momentum for nearly a decade. So now D the language and its tools are available for a number of OS including Linux, MacOS, and Microsoft Windows. There some independent versions of the compiler. The DPL seems to seriously address the many challenges of writing software. From the newsgroup postings, it seems the DPL team seems to be working on offering more multithreaded facilities as a priority. Several design features of D2 support multiple threads better than D1. As for the changes or questions of stability of D2, I cannot see that the key newer features will be thrown away by further evolution.

The progress of DPL seems good in the face of existing competition for mindspace of people expert in existing technologies. D struggles to be seen amongst the JVM and CLR based languages, C/C++ and a host of other scripting / specialist / functional languages that keep popping up. A newer pop-up is "GO" or whatever name it settles on. Since Google was keen on it, and "GO" was already the name of another language, maybe the name should change to GOO.

2

Quoting from the wiki:

"The release of Andrei Alexandrescu's book The D Programming Language on June 12, 2010 marked the stabilization of D 2.0."

I've been using D for 3 or more years now, been doin lots of things form little backup programs, to database benchmarks, raytracers, fractals, opengl, EVERYTHING I just love it! And now its probably the best time to start learning D 2.0, as a developer I'm gonna tell you... You won't be dissapointed.

1

D is a D-ead horse if you ask me. If you've got time, okay. But it's not well documented and hasn't got enough industrial support jet.

1

D is an exotic language, but nice to know.

1

Sadly, no. Look at the time gap between this and the previous post. I've just bought the book, and as somebody else said, the barrier seems a little high. I used C++ a few years back, and hated it - C gone (horribly) wrong. D looks very nice, but does appear to be dying. Sadly :-(

0

Go to dice.com and see how many openings there are for D programmers.

0

there's plenty of languages that address the problems with C++ and have also widespread acceptability. If D offers something critical that no other languages offer, then use it. Otherwise your time might be better invested learning the languages that everyone else knows.

0

Last time I checked there were two different versions: A new and current one for Windows only, and an older version (GCC backend) for the rest (Linux, MacOS X, ?).

I don't think this development model is very attractive. So, no future at the moment.

-4

It is unmanaged, therefore: fail. Of the epic kind.