System programming in D (Was: The God Language)

Manu turkeyman at gmail.com
Wed Jan 4 15:54:09 PST 2012


On 5 January 2012 01:40, Timon Gehr <timon.gehr at gmx.ch> wrote:

> On 01/05/2012 12:26 AM, Manu wrote:
>
>> You just missed a big discussion on IRC about this, where I think I made
>> some fair points that people actually agreed with.
>>
>>    On 1/4/2012 10:53 AM, Manu wrote:
>>
>>        Oh, and virtual-by-default... completely unacceptable for a
>>        systems language.
>>          most functions are NOT virtual, and finding the false-virtuals
>>        while
>>        optimising will be extremely tedious and time consuming.
>>
>>
>>    The only reason to use classes in D is for polymorphic behavior -
>>    and that means
>>    virtual functions. Even so, a class member function will be called
>>    directly if
>>    it is private or marked as 'final'.
>>
>>
>> Is this true? Surely the REAL reason to use classes is to allocate using
>> the GC?
>>
>
> You can allocate any type using the GC.
>
>  Aren't struct's allocated on the stack, and passed to functions by
>> value? Do I need to start using the ref keyword to use GC allocated
>> structs?
>>
>>
> No.
>
>     An easy way to find functions that are not overridden (what you
>>    called false virtuals) is to add:
>>
>>       final:
>>
>>    at the top of your class definition. The compiler will give you
>>    errors for any functions that need to be virtual.
>>
>>    If you don't want polymorphic behavior, use structs instead. Struct
>>    member
>>    functions are never virtual.
>>
>>
>> I have never written a class in any language where the ratio of virtual
>> to non-virtual functions is more than 1:10 or so... requiring that one
>> explicitly declared the vastly more common case seems crazy.
>>
>
> Are you sure that is the case?
> In my code, most class member functions are true virtual.
>

Here's one I'm working on right now (C++).
Base class for a UI system, surely one of the most heavily polymorphic
types of code one can imagine.

Count the virtuals... http://pastebin.com/dLUVvFsL
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120105/bc19dd55/attachment-0001.html>


More information about the Digitalmars-d mailing list