Cross platform compatibility, historical reasons, and simplicity.
If I mix in any other language, it will be C++ to be able to use
WxWidgets, again for cross platform compatibility.
OK, but keep in mind that Objective C is probably the most common
language being used today to provide new system services in Mac OS
X. It will become more and more difficult to build a fully savvy
Mac OS X application without using some Objective C-based APIs.
It would behoove all Mac OS X developers to become familiar with
Objective C.
This seems like a really bad move to me. There's a bigger world for
applications than just MAC OS X, and confining full functionality
to a language that's effectively platform specific, seems like an
attempt at "lock in". Since it's easy to call C code
from C++ and (presumably) Objective C, not to mention lots of other
languages (ie. scripting languages), it would
seem to me that the sensible approach is to create base system
API's to be C compatible, and base other language
bindings on top of that.
The alternative for cross platform development is probably a
horrible translation layer, where Objective C API's are encased in
C, so that
they can be invoked from other languages. Needless to say, if that
is the only alternative, full MAC OS X support will probably
lag behind, and there will be fewer applications for the platform.
It might seem this way at first, but in general this is not a problem.
There is going to be an impedance mismatch between cross platform
code and any platform specific services you need. Moveover if the
service is platform specific on one platform, it is likely to be
specific to any other platforms as well (i.e. unless you use OpenGL,
the graphics libraries of modern OSes are all different API).
Typically, the operating system services you have to call through
Objective-C are prime examples of this (many represent technologies
that don't even exist on other platforms)... even if the calls
themselves were straight C routines, they wouldn't do you any good
whatsoever on another platform.
If you want to create a cross platform API you will typically wrap
that code in your own abstraction layer. Since the service is likely
to be platform specific on every platform you're going to need a
"Horrible Translation Layer" on every platform anyway. Calling
Objective-C in the Macintosh implementation of that layer is requires
very little in the way of logistics.
Scott
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartz-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden