Why program in D
Much of D's improvements appear to be small, but the aggregate is large
enough that once you write a project in D, you'll find it pretty hard to
go back to another language. - Walter Bright
The detailed overview of the language should give you the big picture.
Now if you are looking for reasons to start using D you are probably also looking for reasons not to use it. This was pointed out by Andrei Alexandrescu in The Case for D, "Trying to find quick reasons to avoid [learning a new language] is a survival instinct." And like any language there are reasons not to use D, but you might find that they don't apply to you or that the benefits are greater.
Video conferences & presentations
W. Bright: The D Programming Language (2012)
A. Alexandrescu: Three Unlikely Successful Features of D (2012)
A. Alexandrescu: Generic Programming Galore Using D (2012)
A. Alexandrescu: Three Cool Things About D - The Case for the D Programing Language (2010)
W. Bright: Metaprogramming in D (2009)
Here is a full list of videos relating to D.
You will find in the main website more than a dozen articles discussing several design decisions for the language and its library. Don't forget to have a look there. A few examples
- D. Clugston Real Close to the Machine: Floating Point in D
- S. Schweighoffer D Slices
- B. Mileswski Safe D
Besides, W. Bright regularly writes enlightening columns in Dr Dobb's Journal. Many are directly related to D (access is free, but it may require registering if you read more than a couple articles/day).
- Uniform function call syntax (2012)
- Inheriting purity (2012)
- Type Qualifiers and Wild Cards (2011)
- Member function pointers (2011)
A. Alexandrescu wrote several equally important articles :
- Interview part 1 part 2 part 3 (2010)
- Concurrency in the D Programming Language(2010) (from The D Programming Language book)
- On iteration (2009)
- Case For D (2009)
You can find more articles in the articles section.
Each language has a preferred application domain. D's sweet spot is high performance desktop and server side applications. It provides the performance of low-level languages (of the order of C++) with the safety and ease of expression reminiscent of languages like Java and Python. In fact, nearly everywhere Java is suitable, D could replace it, bringing in more expressive power, better performance and better memory management. Although its current libraries are nowhere near extensive as the Java libraries, most fundamental bricks are already here. You may want to have a look at Phobos and Deimos libraries, as well as third-party libraries to make your own opinion on that matter. A very nice port of Java's SWT library has been created under the name DWT.
Being targetted at 32 bit and 64 bit machines, D is not designed for embedded development on small devices. However, with the advent of Android and iOS smartphones which embed powerful CPUs and large amounts of RAM, D may be suitable for such development. The GCC and LLVM compiler backends being able to target these devices, the community is making progress.
Find out more at StackOverflow:
- Getting Embedded with D (the programming language)
- How would you approach using D in a embedded real-time environment?
D provides high precision floating point, NaN, and complex/imaginary numbers. There are also a number of mathematical and scientific libraries in development, e.g. SciD.
Since D provides type inference, high-level constructs, and fast compile-time it is a great language for writing scripts. The first line of the file is ignored if it begins with #! and combining this with [DSpec2x:rdmd.html rdmd] which handles dependency resolution, D becomes a leader in machine-code scripting language.
Walter works to make D a practical language while providing the benefits found in languages that strictly stick to a single paradigm. If you enjoy languages D is interesting in the way it combines many paradigms in a C-like syntax.