A summary of D's design principles

lurker lurk at lurking.net
Sun Sep 19 07:10:10 PDT 2010


Justin Johansson Wrote:

> On 19/09/2010 11:49 PM, Lutger wrote:
> > Justin Johansson wrote:
> >
> >> 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.
> >
> > I don't understand this statement, there are quite a few things in D that
> > support a different style of programming than OOP, such as:
> > - closures for higher-order programming
> > - pointers, systems programming features
> > - templates
> > - pure, transitive const and immutable
> >
> > Do you think this is not meaningful? Or do you mean that what is actually needed
> > is a better OOP system than what D offers? What do you have in mind?
> 
> Some of these features you mention are very worthwhile but I mean that
> that D does not offer any better OOP system amongst its contemporary
> rivals.
> 
> To be well read on the subject of OOP models I can recommend this link
> to a well-articulated paper by Bertrand Meyer:
> 
> http://se.ethz.ch/~meyer/publications/computer/taxonomy.pdf

tl;dr

Anyway, D supports many paradigms, read the slides written by Walter in some conference. They are the truth. D supports imperative, procedural, functinal, metal, meta, constrain, dsl programming, among others. That should be enough.


More information about the Digitalmars-d mailing list