Newbie initial comments on D language - scope

Sean Kelly sean at f4.ca
Mon Jan 28 17:03:05 PST 2008


Edward Diener wrote:
> The 'scope' mechanism for RAII is a nice compromise for an intractable
> general problem in GC languages, and I can see Walter Bright has
> possibly been influenced by other GC languages that have sought to
> address this issue. But a couple of areas seem really dubious to me.
> 
> The first is the necessity of using an already scoped class by repeating
> the 'scope' decalation when creating an object of that class. Since the
> class itself has already been declared with the 'scope' keyword it seems
> absolutely redundant that the user of an object of the class must repeat
> 'scope' in his usage of that object. Surely the compiler is smart enough
> to know that the class is a 'scope' class and will generate the
> necessary code to automatically call the destructor of the class when it
> goes out of scope. In fact the user of this class via an instantiated
> object should not even care if it is a scoped class or not, so having to
> say it is again seems doubly wrong, although allowable.

I disagree.  If the "scope" were not present at the point of
declaration, I think it would be too easy for a maintainer of the code
to screw up and return the scoped value.  Requiring "scope" is akin to
C++ having different declaration semantics for dynamic and static types.

> The second is that an object of a 'scope' class can only be instantiated
> as a local variable of a function. That pretty much destroys the usage
> of a 'scope' class ( aka a class encapsulating a resource which should
> be released as soon as it is no longer referenced ) to the most narrow
> of usages and means that nobody will bother actually creating such a
> class for using RAII in D. Surely a 'scope' class should be instantiable
> anywhere, with the obvious candidate being as a data member in an
> enclosing class, which itself may or may not be scoped.

Walter has mentioned in the past that he was considering doing exactly
this, but like many other things I think it's been on the back-burner
while const was sorted out in 2.0.


Sean



More information about the Digitalmars-d mailing list