D versus Objective C Comparison

Michel Fortin michel.fortin at michelf.com
Sat Jan 31 17:37:52 PST 2009


On 2009-01-31 18:50:52 -0500, Walter Bright <newshound1 at digitalmars.com> said:

> Michel Fortin wrote:
>> One area I think Objective-C to be very great and that you haven't 
>> touched is for creating stable APIs. In Objective-C, contrary to D and 
>> C++, you don't have to recompile every dependency when reordering, 
>> adding and removing member functions in a class. In 64-bit Objective-C 
>> 2.0, you can even add variables to a class without care about 
>> recompiling derived classes. Compare that to D, where exposing a class 
>> as a public API will either force you to not change much that class, or 
>> force your users to recompile every time you make such a change.
> 
> If you use interfaces, you can add member fields without needing to 
> recompile clients.

Yeah, indeed. I hadn't thought about that. That's a pretty interesting 
thing about interfaces now that you make me think about it.

But exposing only interfaces makes the API harder to use. In Cocoa, 
classes gain new methods at each new version of the framework (read 
each version of Mac OS X) and it doesn't hinder programs compiled with 
earlier versions of the framework.

If you had a smart enough dynamic linker and the signature of each 
function in the virtual table, you could do that in D too by creating 
virtual tables and updating offsets in the code accordingly while 
linking. (Objective-C doesn't work like that, but it has the same 
effect.) Alternativly, it could be done in some static initialisation 
phase.

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/




More information about the Digitalmars-d mailing list