What if Apple's not 100% committed to Cocoa at the moment because it's not yet perceived to be a valid environment for full scale professional development?
The Carbon API, based as it is in C, and thus highly friendly to C++, lives in the lingua franca universe of software development. Of course, that environment is as creaky now on the Mac as it is in the Win32 world, but the key point is that it's the comforting baseline; any developer worth their salt can figure out a C API and fold it into the methodology they're used to (which is probably C++).
As Apple tries to grab market share like it's 1979 all over again, more and more developers who've never touched a Mac before (like myself 6 months ago) will be looking for books and resources and samples to get into Mac programming, and the vast majority of them talk Cocoa, and those programmers come to a screeching halt, saying "What IS this thing with all the square brackets? You mean I have to learn a new language now? No, really, where's the underlying C API I can use? (or plug into my port from Windows)"
Because, let's face it: Objective-C is kind of a goofy language, and it's been kept alive since the early 90s in the (relative) backwater of Mac development, but it hasn't yet evolved much beyond its roots. It works at a markedly lower level of abstraction than Java or C#, which all the kids are learning these days ("get off my lawn!"). No namespaces (!), an unusual memory management model, and bizarre syntax, and for what?
Now: here's the part where I say that I have come to really love Objective-C in the time that I've been using it. I'm still not totally proficient at the design patterns, but the language, despite its syntactic goofiness, is the exact balance of low-level C pointers and high-level abstractions around strings, etc, that I have always wanted. I even like the retain/release/autorelease pattern a lot.
But ObjC and Cocoa are not yet ready for prime time. ObjC is stuck in the 90s, if not still the 80s. My understanding is that Leopard will see significant enhancements to the ObjC environment, which is a truly praiseworthy move. Garbage collection and namespaces are a bare minimum before ObjC as an environment has any hope of being a realistic choice for modern applications. Once Apple has sturdied the environment, then making new developers learn an entirely unfamiliar language will have real rewards for those developers, and Apple can legitimately push ObjC/Cocoa as the primary development environment for the Mac.
by Ben — Oct 26
The Carbon API, based as it is in C, and thus highly friendly to C++, lives in the lingua franca universe of software development. Of course, that environment is as creaky now on the Mac as it is in the Win32 world, but the key point is that it's the comforting baseline; any developer worth their salt can figure out a C API and fold it into the methodology they're used to (which is probably C++).
As Apple tries to grab market share like it's 1979 all over again, more and more developers who've never touched a Mac before (like myself 6 months ago) will be looking for books and resources and samples to get into Mac programming, and the vast majority of them talk Cocoa, and those programmers come to a screeching halt, saying "What IS this thing with all the square brackets? You mean I have to learn a new language now? No, really, where's the underlying C API I can use? (or plug into my port from Windows)"
Because, let's face it: Objective-C is kind of a goofy language, and it's been kept alive since the early 90s in the (relative) backwater of Mac development, but it hasn't yet evolved much beyond its roots. It works at a markedly lower level of abstraction than Java or C#, which all the kids are learning these days ("get off my lawn!"). No namespaces (!), an unusual memory management model, and bizarre syntax, and for what?
Now: here's the part where I say that I have come to really love Objective-C in the time that I've been using it. I'm still not totally proficient at the design patterns, but the language, despite its syntactic goofiness, is the exact balance of low-level C pointers and high-level abstractions around strings, etc, that I have always wanted. I even like the retain/release/autorelease pattern a lot.
But ObjC and Cocoa are not yet ready for prime time. ObjC is stuck in the 90s, if not still the 80s. My understanding is that Leopard will see significant enhancements to the ObjC environment, which is a truly praiseworthy move. Garbage collection and namespaces are a bare minimum before ObjC as an environment has any hope of being a realistic choice for modern applications. Once Apple has sturdied the environment, then making new developers learn an entirely unfamiliar language will have real rewards for those developers, and Apple can legitimately push ObjC/Cocoa as the primary development environment for the Mac.
I'm looking forward to that day.