On Monday, 24 June 2013 at 22:39:13 UTC, Steven Schveighoffer
wrote:
On Mon, 24 Jun 2013 18:10:19 -0400, bearophile
<[email protected]> wrote:
Jacob Carlborg:
I don't think it adds much complexity. If you don't use
extern (Objective-C) you don't need to learn it.
D books must be bigger, D programmers must read those parts of
the books, the error messages become more complex (because you
can hit by mistake the unwanted syntax, or because the
compiler recovering of errors must consider more
possibilities), the compiler gets a little larger. Thinking
that some new syntax has no costs is very wrong.
I think this is largely false. In order for the new syntax to
be valid, you must use extern(Objective-C). That would be
quite an accident.
Consider that I have never dealt with the COM compatibility (or
frankly, even the extern(C++) compatibility) part of D
whatsoever. Because I've never implemented IUnknown, or used
extern(C++).
These features that are enabled by specific syntax are not
extra complexity for D.
Note that TDPL makes no mention of IUnknown or COM
compatibility, yet I have never seen a post on D.learn asking
questions about this feature set unless they were actually
looking to write COM code. In other words, no accidental
enabling (I have seen questions as to why interfaces are not
Objects, and I grudgingly have to point to the incorrect belief
that COM objects cannot be discerned from normal D objects at
compile time).
This will surely change if we ever want to target WinRT with D,
as it is COM based and might be the future Windows default API in
the long term.
I am quite curious to see the presentations of this week BUILD
2012, to see what changes Microsoft might be briging to WinRT.
--
Paulo