Wednesday, December 2, 2009

Post Re-Post on the Blog

Post-Disclaimer Disclaimer: Originally written for the D NG to focus on 2 questions.
1. Does D really want to be popular? Be the "cool" kid?, and
2. What would it take to achieve popularity (The geek view would be the most technically superior language will win, but this is like saying the smartest man has the best chance of becoming president, we see how that works out in the real world ;) )

Disclaimer: Within a finite amount of time, I wrote this quickly, fully explaining the finer details would take a lonnng time ;)

Concise Summary:
D language popularity can increase dramatically if:
* C++ support is improved
* D is ported to .Net
* D is ported to JVM
* Driver-run grassroots marketing campaign (kind of like intelligent spam or context-sensative ads, where the driver is the central machine that tells where to advertise and when and how, etc, and people would post on different sites. The driver machine could be a community member who organizes this campaign on a wiki, and D citizens could carry out the deed.)

Long post:

Maybe this is just stating the obvious, but if popularity is really what D wants then features are not the choke point or problem with D adoption, I see the choke points as

* How well does this language interact with others?
* How stable is this language ?

I think the D language can make great strides by riding piggy back on

* .NET MSIL (Doesn't exist?)
* JVM (Doesn't exist?)
* C++ (D 2.0 implementing this somewhat)
* C (already done)

The fact is that no one wants to re-invent the wheel, I would never have used D if not for the fact that it can ride on C's progress. Similarly, it is very feasible to have D run on top of C++, MSIL, and JVM.

Great progress have been made in both the .NET and Java libraries, and I suspect D or a similar language would do well there.

D wouldn't do as well on .NET as Java perhaps because C# is already halfway decent, but it would increase D adoption anyways.

D on JVM on the other hand, if it's possible then I think it can be a big hit. You can say there are fundamental philosophical differences between JVM and D, but I see it as a way to increase D adoption. Then suggest move to mainline D when speed is a greater concern.

Now, I'm not the one to do this work anytime soon, but perhaps it is a good idea to remind others. I think language adoption comes from

1. How well the language interacts with existing technologies (Only can interact with C and C++ with a lot of effort, no MSIL or Java interaction)
2. How useful the language itself it (D is already incredibly useful)
3. Language stability (Rapid growth is a good start, however without stability its like trying to build a building on a fault-line )
4. Massive marketing machine (D's actually doing decent in this)

Looking at these points it becomes obvious why languages are successful. Interpreted languages have gotten away with not requiring too much compatibility because of their nature, and C# and Java are decent products with a good amount of hype behind them. C had AT&T and was actually useful, and C++ became popular on the sole fact that it extended C.

Now we have D, which talks to C and therefore the next "C".
D can also be the next "C++", "Java", and "C#" if D can have direct access to these languages libraries.

- Clay


Lucian said...

While I consider D to be a much better C/C++/Java/C#/Go, it's still missing something that is becoming vital nowadays: actor-style concurrency.

Right now, the only options with actor-style concurrency and SMP scaling are Erlang and Go (and perhaps Stackless PyPy at some point in the future). It's a proven model for concurrency and it should be possible to implement multiplexing green threads and channels in D, with a nice API.

David said...

On a non-technical level, D mostly needs to have a better project leader...