D and the world

David B. Held dheld at codelogicconsulting.com
Mon Apr 23 02:28:56 PDT 2007


janderson wrote:
> Its about time for another round of how D can conquer the world.
> 
> The way I see it D has 2 options, provide an easy way for C++ users to 
> switch over or become D.net.  The problem is, it is extremely 
> impracticable to switch over to D because:
> 
> 1) Everything is already in C++.  It would take months to switch over. 
> Time that no one has.
> 2) Many API's are in C++.  Porting is too dam time consuming.  There are 
> so many API's that companies use, it is impossible to have them all ported.
> 3) Learning.  People are resistant to learning new things.  I think this 
> hurdle is easiest to jump if the other 2 are in place.
> [...]

I think D has a bigger threat from Scala than C#.  Whereas C# is just 
another Java, Scala is actually Java + FP, and a lot of people are 
starting to take notice.  I don't see the future as being "more Java", 
even though that's where the industry is heading right now.  I think 
that people are starting to realize that software reuse is an actual 
possibility, despite the failed promises of the OOP revolution; but that 
reuse really needs full genericity to be implemented usefully (and no, I 
don't mean Java-style genericity).

C# aims to be an industrial language, which is fine for managers that 
want something so simple their trench coders couldn't possibly screw it 
up.  Scala aims to be an academic language, which is fine for theorists 
trying to show that it is possible to make an FP language as useful as 
Java.  D, I think, aims somewhere in the middle, giving users the nuts 
and bolts and simplicity of a good industrial language (especially ones 
which many of them are already familiar with), while also providing some 
pretty nasty high-level academic tricks that library authors can take 
advantage of.

However, D is just now getting these high-level features, so I think it 
will take some time for them to manifest and demonstrate their utility. 
  It seems that a lot of these features are starting to become 
mainstream, so I think D is well-positioned to take advantage of this 
trend.  For people to appreciate the power of a new language, there 
needs to be programmers who understand what it can do well enough to 
illustrate that power.  I think the academic concepts that were mostly 
relegated to FP langs now have enough users that at least the high-end 
library writers are demanding these features in languages, making it 
possible for advanced languages to enjoy a more mainstream audience.

I think what even FP langs have not explored to a compelling level of 
detail is metaprogramming.  I get the impression that most FP 
programmers feel that higher-order functions are good enough, and even 
Lisp "just has macros".  But I think D will show that while macros are 
powerful, they are not a replacement for templates and do not cover the 
full space of metaprogramming.  Yes, it is possible to do non-macro 
metaprogramming in Lisp, but being a dynamically checked language, this 
isn't nearly as interesting as it is in D.

On some level, I agree that "It's the Library, Stupid!" (to paraphrase a 
former President).  However, I disagree that it's *just* the library...I 
think it is how the library is constructed.  I think the next revolution 
in software engineering will be highly configurable and extensible 
libraries, which will tend to obsolete the large collections of 
redundant libraries we have today.  Because designing a highly 
configurable library is fundamentally different from designing a 
concrete library, I don't think there is much to be gained by simply 
making every C++ or C or X library available in D.  I think the true 
power of D will be manifested when plain ol' libraries with canonical 
implementations get redesigned as generic libraries which are both fast 
and powerful.

I think projects like Tango and TioPort are good, because these 
foundational services are necessary for bootstrapping.  And I don't 
think copying the STL to make the DTL was the right way to go.  D offers 
metaprogramming facilities far and above what C++ allows.  The true 
power of D will become apparent when DTL is resurrected with the full 
power of D's metaprogramming system brought to bear.

Anyway, that's just my 2c.

Dave



More information about the Digitalmars-d mailing list