On 19/09/2010 2:59 AM, Lutger wrote:
To me some of the most distinguishing aspects of D are:
- scale to complex as well as small programs: unlike C# and Java but perhaps
like python
- focus on early binding: this quote from David Griers is fitting: "Never put
off until run time what you can do at compile time." But also related is the
tendency to choose for a rich set of features, binding at 'language design time'
- support a diversity of programming styles (like C++, python) and attempt to
integrate them
- support for features that help, and avoid designs that complicate maintenance
of large programs
- take advantage of existing C knowledge and codebase
- enable the programmer to make his own tradeoff between performance and other
quality criteria: this is true of many languages, but in D there is a much wider
space to choose from.
I think the salient point that all miss is that D does not
expand beyond the classical OO paradigm in any meaningful way.
When all you have is a hammer, everything looks like a nail.
When all you have is classical OO, everything looks like it
can be modeled with inheritance by addition (rather than
inheritance by restriction for example) or an interface
(rather than a trait for example also).
There is no need, or significant consumer demand, to reinvent
another classical OO language in 2010. To make any inroad,
a new language in these times needs to leverage upon some of
the lesser well known yet powerful idioms of PLs that allow
for extensible type systems.
Cheers
Justin Johansson