Reddit: why aren't people using D?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Jul 27 07:54:00 PDT 2009


Kagamin wrote:
> Walter Bright Wrote:
> 
>>> Properties. Your syntactic sugar:
>>> 
>>> int i = c.p; // int i = c.p() p = i // c.p(i)
>>> 
>>> They can't do these things:
>>> 
>>> * No control over their use by class designer: ANY member
>>> function with one or zero parameters may be called using
>>> 'property syntax'. This is not a good thing.
>> Why not? Seriously, what is the semantic difference?
>> 
> Your view of the problem is too technical. Functions used to denote
> arbitrary "actions", while properties are designed to simulate data
> rather than functions: fields with minor logic concerning accessing
> them, e.g. input validation.

I so don't get this. Yes, functions are used to denote arbitrary 
actions. Some of these actions can set and get state. It is convenient 
to benefit of some syntactic aid for those cases (e.g. make their use 
look and feel like fields). So far so good. But as long as there is no 
innate validation or enforcement from the compiler that for example you 
setFoo(5) ensures that getFoo() will get you 5, we're only talking about 
syntactic convenience. This is it: syntactic convenience. Nothing else.

> This got reflected in naming conventions
> directing to name functions with verbs and properties and fields with
> nouns.

Fine.

> Properties being implemented by functions is a technical
> detail, which may change: the property logic can become declarative
> or come in a form of type checking and be tested by caller, or most
> probably it can be replaced by invariant altogether.

I don't understand this.

> All these
> alternative solutions have their certain limitations or advantages,
> but they effectively do the same thing as "functional" properties
> without changing their semantics. 

And consequently this.

> That's why properties are not
> functions.

This post had a negative effect on me: I now think properties are 
functions even more than before.


Andrei



More information about the Digitalmars-d mailing list