== Quote from Justin Johansson ([email protected])'s article
> Me thinks this both a polite question and a question due of realistic
> answers.
> How doth thou respond?

My brutally honest but not overly pessimistic view is that D will become fairly
popular in "high-level" systems programming and scientific and game programming,
but will fail to make substantial inroads into "low-level" systems programming 
or
most application programming.

I define high-level systems programming as anything that's not an application 
but
isn't a kernel, device driver or severely resource-limited embedded system.  
This
can include GUI toolkits, database systems, network infrastructure code,
libraries, etc.  For the lower-level systems programming case, the requirement 
for
a runtime (even if it's a fairly lightweight one) and the lack of fine control
over things like binary size (due to templates, etc.) will limit usefulness.  
Yes,
these problems can be worked around, but doing so requires sticking to so much 
of
a C-like subset that you may as well just use C.

At the application level, there are simply too many "good enough" languages that
are already entrenched, such as Java, C# and Python.

On the other hand, there's really no **good** language to do high level systems
programming or performance-critical application programming in.  C++ is just too
low level.  Java and C# aren't much slower than C for similarly written code, 
but
they don't allow direct access to hardware and system-native APIs.  They also
don't allow you to resort to the kinds of dirty tricks that you could in D to
squeeze that last bit of performance out of your code.  For example, good luck
writing an inner loop in assembler (it's done in Phobos), writing a custom 
memory
allocator (I've done this, to good effect), or reinterpreting floating point
numbers as integers and then bit twiddling them to sort them faster using 
integer
instructions (I've actually done this, too, and it gave me a ~20% speedup in 
some
code).

Reply via email to