Von: Don Yacktman <don@misckit.com>
Datum: Sa, 02. Nov. 2002 21:03:22 Europe/Berlin
An: "Philippe C.D. Robert" <philippe.robert@gmx.net>
Kopie: cocoa-dev@lists.apple.com
Betreff: Re: usage of #import?
On Saturday, November 2, 2002, at 12:13 PM, Philippe C.D. Robert wrote:
the official advice/message/rule from the gcc folks is not to use
"#import" anymore at all. Although it still works with gcc 3.x it is
considered as deprecated (see -Wno-import).
Now Apple is still using #import in 10.2 thus I wonder what Apple's
position is in this respect? What should be used by 3rd party
developers for custom ObjC code? How will Apple deal with this in the
future?
Can anyone from Apple explain or comment the official position.
I'm not an Apple official source, but I know the history of this having
been around since the NeXT days...
Basically, #import has been "deprecated" since the moment Objective-C
was added to gcc because Stallman doesn't like it. (His rant about
#import is one of the most luddite things I've ever read.) NeXT and
now Apple have both continued to use it and, if history is followed
consistently, will continue to use it whether or not Stallman likes
it. End of story.
That "deprecation" has literally been a part of GCC for well over a
decade! And every few years, some poor soul spots it and wonders what
the hell is going on. It's not exactly a FAQ, but it's definitely one
of the bizarre insanities that the NeXT community just got used to...
More background and my personal ranting, with a little reason thrown in:
Many consider Brad Cox's book on Objective-C to be a definitive work on
what is required to make a language be Objective-C. You could argue it
is, since he did invent Objective-C after all. But NeXT, and now
through acquision, Apple owns the trademark on the language's name.
NeXT added a few extensions to the language that I consider invaluable,
so I think Cox's book is only a bare minimum, really. And according to
Cox, the #import directive is an integral part of Objective-C, one of
the few additions to the C language to turn C into Objective-C. So by
any reasonable measure, #import is a part of the Objective-C language,
as defined by the people with the right to decide what is or isn't
Objective-C.
While Stallman can deprecate #import all he wants, I intend to keep
using it. Stallman has no place telling the world what can or can't be
part of a language he didn't invent and he doesn't control. Hell, he
can't really even say that the compiler is "his" at this point; it's
got a life of its own. That's the nature of large open source
projects -- they outgrow their creator(s). Without an ANSI standard
for Objective-C, the body that holds the Objective-C trademark decides
what is or isn't Objective-C. That body is Apple, not Stallman.
Now he has his reasons for not liking #import. Frankly, I disagree
with him. I like it, because I hate having to pollute headers with
guards. I think they're ugly and the compiler should be smart enough
to only pull things in once so that I don't need to add that cruft to
every freaking header. Yes, there are cases when you want to bring
things in multiple times, but they are rare. Let the developer
override those explicitly since they are the exception, not the norm.
The normal case is what #import handles, and allows you to stick to
writing code, as opposed to wasting time adding header guards. So I
think Stallman is being / has been an ass about the #import directive.
But really, it boils down to a "religious" argument as to whether or
not #import has any merit. Stallman's main arguement against it really
just boils down to "it doesn't please me aesthetically and as long as I
can force my vision upon others, I'll try to". Regardless, I and many
others think #import does have merit.
However, religious argument or not, Stallman has no place telling
people what can or can't be in Objective-C. #import is a part of
Objective-C unless and until Apple officially decides it isn't.
Considering how much source code would be broken by such a change --
millions upon millions of lines -- I seriously doubt Apple will change
the definition of the Objective-C language to suit Stallman.
So feel free to use #import all you want. And, if it makes you happy,
flip a virtual bird at Stallman every time you do.
--
Later,
Don Yacktman
don@misckit.com
_______________________________________________
cocoa-dev mailing list | cocoa-dev@lists.apple.com
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.