views:

11017

answers:

32

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.

+6  A: 

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.

Thomas Owens
+9  A: 

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.

amdfan
+2  A: 

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")

James Curran
1908's?? Apparently D has quite a past as well as a future. :)
Steve Fallows
This is a entirely different D, www.digitalmars.com/d was only invented some 15 years ago.
Rayne
oops... Ya'know I had first typed it as "1890s" and then "fixed" it. But then you usually takes three tries to get my code right also...
James Curran
+68  A: 

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 :).

Rayne
Thanks, great to hear someone being enthusiastic about D :)!I think I'll really try it after all.
s/EVERTHING/EVERYTHING/
J.F. Sebastian
I appreciate all the edits to correct things I screwed up. I was apparently very tired or something equally nasty when I wrote this. Sorry.
Rayne
I've been anxious to try D for a very long time. I'm glad to see I'm not the only one.
Brian Lacy
+6  A: 

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.

Jonathan Leffler
+18  A: 

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

Paul Nathan
I agree with Rayne, they aren't provided yet.
The Wicked Flea
1) Niche languages live to fill a need that isn't being met. Its more just obscure than niche. 2) @Rayne: Why?
Greg Rogers
Right now, C and C++ are *the* systems programming languages. They do what needs to be done. I've worked on kernel-level development in C++. I wasn't sitting there saying, "crap, my language is terrible". What need does D fill for that level that C++ doesn't? (also, have you ever written OS code?)
Paul Nathan
quoth the OP, "D is a systems programming language"
Paul Nathan
Some things that D has that C++ does not: inline assembler, immutable data structures, modules, compile time function evaluation, mixins, delegates, closures, automatic memory management, template constraints, fast compilation turnaround, export that works, unit testing, doc generation, etc.
Walter Bright
Wow, walter bright himself. What an honor.
Rayne
I'm a C++ n00b and even I know it has mixins, automatic memory management, unit testing, and doc generation. I'm sure D has other things C++ does not, but when you throw things in there that are obviously not true, you lose credibility.
davr
I second what davr said.
Sydius
D is the language that C++ wishes it was. The only reason C++ is such a disaster, is it was designed to be backward compatible with C. C is a poorly designed language, because it was designed before anyone had real experience designing languages.
Brad Gilbert
Many people feel C is the pinnacle of low-level system language design. How do you account for that, without disrespecting their experience?
Paul Nathan
komma8.komma1
ceretullis
unit testing for C++ is available through many libraries. Doc generation is available through other tools, no need for these to be in the language.
ceretullis
@ceretullis If you've followed any of Walter's posts on Dr. Dobbs or elsewhere, you might be aware of the point he makes that in fact const != immutable (constness can be cast away?), which hinders the optimization process.
Ellery Newcomer
Thing is...D has automatic memory management in the language, while C++ has it in libraries. D has unit testing and doc generation in the language, while C++ has separate frameworks. Who cares about those differences? How important is immutability vs. const to most people? Mixins? They were in mainstream C++ Mac programming in the 90s (Metrowerk's PowerPlant framework). Lots of C++ compilers allow inline assembler, and inline assembler is going to be implementation-dependent anyway. D is probably an improvement on C++ (it isn't difficult), but enough of one?
David Thornley
@David "automatic memory management" in c++ libraries? I hope you meant "smart pointers", which only means "automatic object deletion" (so for e.g., you can create two smart pointers for single object, oops). Real GC (like Hans-Boehm) is not usable with c++.
Jacek Ławrynowicz
@Jacek: I was indeed referring to smart pointers. What do you mean by "automatic object deletion" as opposed to "automatic memory management"? GC is automatic object deletion, unless it automatically compacts memory (which effectively can't be done in many languages).
David Thornley
+11  A: 

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.

dsimcha
Precisely my thoughts: if you want it to become mainstream, start using it.
Ellery Newcomer
+14  A: 

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.

larsivi
You can only tango with Django :)
Andrei Taranchenko
Well, next version of Dsource will supposedly use Django ;)
larsivi
+37  A: 

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

paercebal
1: No, because I won't have the time necessary to try D. 2: I'm open to proofs, if you care to give some. 3: Yes, it is about jobs, because unless the language is stellar, you won't have a community without jobs... Again, I'm not saying D is a bad language [...]
paercebal
[...] It's just that, well, D is quite far in the back of my list of "must learn" languages for the reasons I gave above. That, and the fact no one around me heard about it, and that I stumbled on it by accident.
paercebal
I think it might be a good thing for D to remain in C++'s shadow, for a while anyway. That way the community can grow outside of the limelight.
Brad Gilbert
Yes but you seem to miss out on the fact that C++ is a god-awful disaster of a language! http://steve.yegge.googlepages.com/tour-de-babel http://yosefk.com/c++fqa/
kronoz
"FQA-Lite" is a bad joke turned sour. The guy's arguments could have been interesting if they were not biased by his too-much-apparent hate. Sorry, but for me, anyone quoting FQA-Lite is by default ruining any chance of being considered seriously.
paercebal
As for steve-etc., I won't waste time with his naive rant ("Multi-CPU doesn't really change it that much", indeed). Sorry. Another "Oah my Goad C++ is so dumb I feel a brain grow in my head..."... Please...
paercebal
@paercebal: Could you provide a link where at least some points raised in FQA-Lite are answered constructively "without too-much-apparent hate"?
J.F. Sebastian
Correct wikipeida link: http://en.wikipedia.org/wiki/D_(programming_language)
newtonapple
You'd do well to listen to the FQA.
Rayne
@Rayne: Muwahahaha ! (You were warned)... ^_^ ...
paercebal
@J.F. Sebastian: I once thought about answering FQA's arguments in my own web page, but then, this is just encouraging trolling... The point is: If you're learning C++, avoid FQA-Lite, because it will overwhelm you with biased arguments. If you're familiar, then it can be a good exercise to recognize the technical points/weaknesses of FQA's arguments... That is, if you can go beyond the useless, idiotic, insulting, arrogant, and/or disgusting comments like "Named Parameter Idiocy" and "WARNING - cyclic dependency between C++ features detected"...
paercebal
@paercebal It was a joke.
Rayne
@Rayne: You did catch me!... ^_^
paercebal
Also one can check out the features of new C++0X upcoming standard (the new version of C++) its going to add so many things to C++.
Shailesh Kumar
Andrei has now also written a *book* on D: http://www.amazon.com/D-Programming-Language-Andrei-Alexandrescu/dp/0321635361
BCS
paercebal, I think I agree with your entire answer (even the edits)... /me scurries off to take a deeper look at D
Wayne Werner
A: 

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

Nemanja Trifunovic
-1 The number of job openings for programmers who know X may only tell us anything about X's present (and possibly its past), not its future.
hillu
I'd say job openings is one of the most lagging indicators there is. Most programming languages get their start on hobby projects and side projects, then move to bigger projects as they mature. Furthermore, there will always be plenty of jobs maintaining legacy code in languages that have a long past, but no future in greenfield code. Look at Cobol.
dsimcha
I think openings are not indicators only for lang-s with big industrial past, isn't it? How can anything become mainstream, if nobody(with money) really use it.
Alexander Malakhov
+3  A: 

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.

nimrodm
Wrong. It has GDC and LDC in addition to DMD. Unfortunately, GDC is dead (or at least appears to be), but LDC is actively being maintained and is in beta testing.
dsimcha
A: 

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.

Dustin Getz
Other languages, collectively, address the shortcomings of C++, but none address most or all of them while keeping the good aspects, and therefore they don't replace C++ in a lot of its niches.
dsimcha
+3  A: 

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.

ididak
Wow, this is a subjective question and I gave my (probably subjective) opinion. Some people just can't take it? I personally really like the language and the white paper by Walter. But we're talking about the subjective "future" rather than a specific "feature" here.
ididak
llvm/clang is going to improve considerably the toolchain. Being an important improvement over a language and probably the most lacking feature of D, is not going to make C++ any better.
alvatar
+40  A: 

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.

Walter Bright
No vested interests here :o)
Motti
+8  A: 

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.

Common Lisp is heaven for a software engineer. Is D that good?
David Thornley
At this date, D has fallen off of TIOBE top 20, and isn't even listed on shootout. This doesn't look good....
ergosys
+24  A: 

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.

jalf
I think python and ruby took 10 years to become mainstream
hasen j
But Python and Ruby were, and are, trying to fill niches that weren't already settled. There wasn't a Grand Old Language in that area they had to displace. D on the other hand, is trying to squeeze into what's probably the oldest, and most conservative segment there is, displacing C/C++.
jalf
@jalf: Uh, Perl was a pretty grand old language in the Python/Ruby niche.
dsimcha
Also, D is more than a cleaned up C++. Templates are *much* more powerful, and D2 (the alpha version) makes a serious attempt at addressing concurrency issues w/ transitive const and pure functions.
dsimcha
dsimcha: Was it? I don't really think so. It was really big on Linux, but how prevalent was it on Windows? Or perhaps more to the point, in the "executable pseudocode" niche? Perl is not exactly pretty or easy to read. Which is exactly one of the biggest reasons for Python's success.
jalf
About templates in D, you're missing the point. Templates in C++ are already turing-complete. How much more power is needed?I don't think any of this will give D the momentum it needs to oust C++.
jalf
Yes, but C++ templates are a Turing tarpit. D templates are usable for serious metaprogramming by mortals. See compile-time raytracer: http://h3.team0xf.com/ctrace/
dsimcha
Still missing the point. There's a limit to how many people need a compile-time raytracer. I'm simply saying that it takes more than this to make people ditch their C++ codebase, tools and skillset and switch to D. There's a cost to switching language, and for most people, it's not worth it.
jalf
"The world just doesn't need a cleaned-up C++" -> Since 12 years, I'm using C++ every now and then, and I'm still learning. The more I know about it, the more I feel that the world DOES need a cleaned-up C++. Just yesterday this feeling was so strong that I would have loved to "invent" something like this - luckily I found out about D, and though I have never worked with it, I think this need could be fulfilled by it.
Brian Schimmel
@Brian: Why are you using C++ "now and then"? For most people, compatibility with existing C++ code is one of the main reasons. D can't be used in those cases. Or perhaps portability and stability is important. D can't do that either, because the language is still constantly changing and hasn't been formalized or standardized in any way. The point is that in most of the cases where we need a "cleaned up C++", there are already a million other better languages we could use instead.Oh, and @dsimcha, you want C++ compile-time raytracing? http://gitorious.org/metatrace :)
jalf
@jalf: I'm using C++ whenever I need the portability, run time performance or closeness to the system that makes C++ stand out. Whenever those are not a big concern, I'm happy to use a language that's easier to write, read and debug, and therefor gives me greater productivity and code quality. There are many to chose from. But sometimes, I have a project that really needs all of those nice aspects, and it seems to me as if D might be the language that eventually will combine all of them. Maybe it's to early now.
Brian Schimmel
@Brian: But if your concern is to find a language that's easier to write, read and debug, and enables greater productivity and code quality, you already have many excellent languages to choose from, many of which are far better than anything in the C family, including D, could ever hope to achieve. If we need those things, why would we choose a cleaned-up C++, when we could choose something designed from scratch without the constraints of having to be C/C++-like?
jalf
Regarding the replacement cost, jalf has a point, and it might take longer to replace current languages simply because of the age of the sector it's breaking into. I'm interested to see where it is within another decade.
michaelc
+35  A: 

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.

Maxgen
Sorry.!!! Naturally not Charles Bright but Walter Bright.
Maxgen
I totally agree! Two standard libraries, no debugger, missing 1st rate D GUI toolkit, lack of marketing ... that and no binary compatibility with C++ are the reasons which turned me off from D.Also some features can lead to bad coding styles, reducing maintainability.
phoku
>> 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? << SEE http://www.digitalmars.com/d/archives/digitalmars/D/No_D_in_Great_Computer_Language_Shootout_103371.html#N103383
igouy
Stupid point but you wrote it wrong twice: It's 'made', not 'maid'.
Dynite
+2  A: 

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.

Friedrich
+1  A: 

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.

Suma
dsimcha
No. I am sorry, this is more than I am willing to do. I was just curious, I have no deeper interest in D. If D wants to convince me, it needs to try harder and to make the entry barrier lower.
Suma
Sorry to here that; when I experimented with D about a year ago, it took me less than an hour to download, set up and compile my first basic program, as well as a number of packages from DM - but then I program with a text editor, not an IDE.
Software Monkey
Stop blaming D for your own incompetence.
Rayne
Way to share the love, Rayne :)
Ellery Newcomer
Ellery Newcomer, Any even average programmer can install and use D in a day.
Rayne
Setting up the D compiler on the Windows platform is a fairly trivial exercise: http://www.zeusedit.com/forum/viewtopic.php?t=2465
jussij
+1  A: 

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.

wishi
People have to use the language for it to be well known, and no one will ever use the language if they are too worried about documentation and industrial support. There is a book written about it, and growing documentation.
Rayne
Yes growing documentation that is always out of date.Unless they think there runtime is stable enough to keep it fixed for the next 10 years you can't take D serious. And they are far far away from reaching this state. Walter is adding feature by feature for 2.0 and the runtime war is still undecided. It's a disgusting mess.
Lothar
Are you implying the majority of languages start out as dead horses? And then come to life, or remain dead horses? I'm not sure that analogy makes sense. But hey, who knows, maybe the saying should be "don't beat a dead horse--it may come to life".
0scar
A: 

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.

stesch
No, dmd is released for Linux, Windows, and now OSX at the same time with the same features. The OSX work is new so it is buggy and missing things.
he_the_great
+8  A: 

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.

David Thornley
D has proper support for Unicode, you just have to remember a character in unicode is not a single byte. Linux has an up-to-date/stable dmd compiler, released at the same time as the windows version. Innovation is being put into D v2.
he_the_great
Glad to hear it; I was just going from the Wikipedia article. However, features with "you just have to remember" in the explanation are always a little suspect at first.
David Thornley
Unicode is one big "you just have to remember," especially for systems programming. I don't know anything about D, but Wikipedia makes it sound like it doesn't try to solve the "n-byte character" problem in c-style string functions, which is hardly unreasonable. java.lang.String is the same way.
twblamer
Have to add an example: a lot of people know that a code point can be up to 4 bytes in UTF-8 or UTF-16, but combining character sequences are arbitrarily long, they count as "one character," and they don't always squash to 4 bytes after normalization. Unicode is more than you think it is.
twblamer
There are a finite number of code points, and that number fits in four bytes (but not two). I think UTF-8 can extend to six bytes. Unicode can be messy, but it can be made determinate, and it can be handled well by computer languages.
David Thornley
I don’t agree on your niche. D, and also C++, fill a completely different niche than C# and Java, i.e. system programming. C++ isn’t all about OOP and in fact OOP is only a minor possible programming style in modern C++. D and C#/Java aren’t fighting for the same niche at all, as far as I see it. The rest of this answer is good, though.
Konrad Rudolph
@David: Unicode allows for Infinitely many code points. UTF-8 and UTF-16 encodings only allow for so many bytes to store that code point. If the code point space allowed by UTF-8 and UTF-16 encodings were to be exhausted, a new encoding would need to be created to accomodate the U+0x7FFFFFFFFFFFFFF code point, for example.
maxwellb
@maxwellb: UTF-8 and UTF-16 allow approximately a million code points, and according to one of the questions on http://www.unicode.org/faq//utf_bom.html that's all Unicode will ever have. It seems likely to me, and apparently to the Unicode consortium, that we won't need more than a million code points.
David Thornley
+4  A: 

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.

Tim Keating
+2  A: 

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.

What makes you think that gdc isn't stable enough?
hillu
The fact that it is based on the GNU Compiler Collection dinosaur. And i need a easy build in debugger that i can ship to the customers to get good crash reports. Also i would like to see a target to c. Because i'm pretty sure that there is a c compiler everywhere and no worry about GCC dropping platforms.
Lothar
@Lothar: Why would the customer want to use a debugger? Also, why is GCC a "dinosaur"? It has many shortcomings, but it has been ported to a great many devices, and can additionally crosscompile to even more devices, including embedded devices.
Arafangion
Because i don't test my software. If you ever used a builtin debugger you would not ask why this is 100x better then just a crash address. I can fix 80% of all bugs just within minutes when i get a crash report - one of the reasons i still use Eiffel. This alone makes me much more productive then any other language. And for GCC, its fat and buggy and it's total unmaintable for anyone not working fulltime on it. It's the pure nightmare if you ever need to read the sources and fix something. And yes, i'm a compiler writer guy.
Lothar
+2  A: 

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.

Dimitri C.
I'm not sure how Eiffel could be classified as "a better Java." it is about 10yrs before Java and is not similar.
he_the_great
@he_the_great: You are right! I wasn't aware of this; still, this was the impression I got when I got to know Eiffel. It doesn't really matter: the statement I want to make is that a better language doesn't mean it will be more popular.
Dimitri C.
"..mutexes and call queues, I'd like these to be hidden from me... provide constructs that abstract these away." Isn't this what the D2 concurrency model does? http://www.nwcpp.org/Downloads/2009/accu.pdf
0scar
I'd say that all the metaprogramming facilities count as a *seriously* killer feature. It's like template metaprogramming in C++, except more powerful -- and you can use the same language because it was designed with TMP in mind. Templates, static if, running functions at compile-time to generate code, string mixins, etc.. It's really amazing. Even if you don't care about D, it's worth checking out if only to see that one aspect of the language. Reminds me of the power of Lisp's "macros".
Jyaan
+1  A: 

D is an exotic language, but nice to know.

+2  A: 

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.

Terry
It is interesting that what you find is that usually those that don't use it claim there is no/little future, but those that do will say that it has plenty. Part of the reason for this is that those using the language know they will continue to use it. And I'm sure Walter is quite saticfied with the popularity.
he_the_great
+2  A: 

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.

y0uf00bar
+2  A: 
Phrozen
A: 

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

Turing Complete
Two questions - How come unmanaged code is destined to fail? Have you heard about objective-C and the iOS platform? - How did you conclude that D can't be compiled to managed code? Given the language specs, seems perfectly possible to me.
Fabio Ceconello
It's basically one of those unmanaged, direct - to - exe - languages, this is NOT a good concept anymore.I liked that too, back in the 80s, when we were still counting bytes and clock cycles, but now it's time to get away from that low level stuff as far as possible.A good programming language for everything above OS / device drivers compiles to the machine code for a virtual machine.
Turing Complete
Fabio Ceconello
I'd say that 99% of this cases are nothing but a failure to provide a complete API. Even in .NET (which is the closed thing to perfection so far) we still lack SIMD support (something I really don't understand, because it would have been rather easy to add).My idea is that at some point every software that is above the very lowest level can run managed. JIT - compilation will do the trick.
Turing Complete
There is an alpha versioned D.NET compiler, meaning that D can become managed code. Many of the great advantages I find in managed code I also see in D. Try it some time, I think you'll like it.
michaelc
Longpoke
+3  A: 

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..

Nils
+1  A: 

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 :-(

Graham Nicholls
How is it dying? The book was released a few months ago, and I've also just picked it up. I've been putting learning D on hold because the tutorials on the web are absolutely unreliable. If anything, D should be gaining popularity, not dying. (IDE support would be nice though)
Neruz
Well look at TIOBE, where they publish a chart of programming language popularity. Despite the book, D has dropped out of the top 20, to below Lua (which I happen to use in my job). What evidence is there that it is not dying? Saying it _should_ be growing is merely wishful thinking - it doesn't seem to be. Having said all that I have bought the book (and ordered the Tango book, although from what I've seen (an example of use of Cout with lots of brackets), Tango is not really up my street.
Graham Nicholls