Random thought: Alternative stuct
rikki cattermole
rikki at cattermole.co.nz
Tue Sep 4 06:32:02 UTC 2018
On 04/09/2018 4:24 PM, Paul Backus wrote:
> On Tuesday, 4 September 2018 at 04:03:19 UTC, Mike Franklin wrote:
>> There are also a few additional differences. classes can inherit
>> implementations, but using the technique illustrated in
>> https://theartofmachinery.com/2018/08/13/inheritance_and_polymorphism_2.html,
>> you can get something very much like classes. With `alias this` and
>> multiple-`alias this` (https://github.com/dlang/dmd/pull/8378) it gets
>> even better.
>>
>> [...]
>>
>> In my opinion, we shouldn't add a third option. Rather, we should
>> deprecate classes, and make and expand the capabilities of structs.
>> Languages like Zig and Rust have done away with classes and all
>> runtime overhead that accompanies them, and are showing great promise
>> by expanding on structs with much more composable features.
>
> You can implement inheritance in C, if you really want to, but doing it
> by hand is far less productive and far more error prone than using a
> compiler that does it for you.
>
> Now, with D's metaprogramming capabilities, it may well be possible to
> implement an object system as a library, using only structs. Without AST
> macros, though, a library solution is always going to have uglier syntax
> and worse error messages than a language feature with compiler support.
>
> If D didn't have built-in OOP features already, it'd be an interesting
> question, but given that it does, I think getting rid of them is a clear
> net-negative.
You also loose loads of stuff like extern(C++) classes interop and COM.
Definitely a net negative. Even with a concept like signatures, you just
can't replace the class/interface system.
More information about the Digitalmars-d
mailing list