Objective-C FAQ (and the Portable Object Compiler [POC])

I had a poke around the net to check in on the Objective-C community (the language community, not the Cocoa programmer community).

I found it a bit of a surprise when I read the current “official” Objective-C FAQ. Doesn’t look like it has been updated in a while and the content that is there seems to have some relatively large holes.

Fortunately, there is an alternative comp.lang.objective-C FAQ that is a bit more up to date.

Update: Yup. Politics is at play. The original FAQ is maintained by David Stes, who has a somewhat antagonistic relationship with the community and seems to have largely ignored the success of the NeXT, now Apple, fork of Objective-C. As a result, the “official” FAQ largely ignores the details of Objective-C as it ships on Mac OS X and GNUstep, easily the two most popular “forms” of Objective-C shipping today.

This isn’t entirely surprising.

David wrote the Portable Object Compiler (POC). At its core, POC seems to have forked the Objective-C language about the time Stepstone’s technology base was transferred into NeXT (regardless of when POC development started, that is about the “snapshot” of the language from which it seems to be derived).

POC includes its own implementation of the ICpak101 classes and excludes a number of the “modern” additions to Objective-C (“modern” being defined as most of the additions since about 1988).

Beyond the method invocation syntax and a subset of class declarations, POC cannot compile most Objective-C code written in the past decade. Everything from various syntactic differences through to the built in classes are incompatible.

POC does have some very interesting features. Blocks and garbage collection, namely. From a coding perspective, blocks/closures are definitely of interest.

I’m not sure I like David’s block syntax, but I have yet to think of anything better (though, honestly, I haven’t given it much thought, either) and it is somewhat also be the result of having to parse the ICpak APIs.

While POC is an interesting project, it seems to be a disservice to the project to continue binding it so tightly with the rest of the Objective-C world. Beyond the method invocation syntax, there just doesn’t seem to be much that POC has in common with the Objective-C that most developers use!

With that divergence in mind, it seems odd that the “official” Objective-C FAQ is limited to details of Objective-C before 15 years ago. To me, it seems like it would be more useful to have a POC FAQ and for the alternative FAQ to become the real FAQ.



8 Responses to “Objective-C FAQ (and the Portable Object Compiler [POC])”

  1. Ahruman says:

    The “official” [comp.lang.]Objective-C FAQ is maintained by David Stes, who is also the author of the… somewhat different… Portable Object Compiler, and comp.lang.objective-c’s biggest troll; he disagrees violently with some of the design decisions made in OpenStep, and has taken his version of the language in a somewhat different direction since then. From his perspective, things like protocols, categories and Objective-C++ are a passing fad, while POC blocks and garbage collection are the future. Hey, one out of five ain’t bad.

  2. leeg says:

    POC-style closures seem to get quite a bit of discussion when HOM and the like are being talked about…so there does at least seem to be some theoretical interest in an implementation for gcc Objective-C. No-one’s stepped up to the plate though, so apparently not much of an interest.

    BTW, I know the FAQ is very short on ObjC “2” [Objective-C: The NeXT Generation] material. I’ve actually written quite a lot, but have just been slack at merging it into the published file :-)

    @Bill: thanks for the href ;-)

  3. leeg says:

    Just saw the update in NNW-Lite…your opinion on the language which POC implements is correct. Based on a number of c.l.o-c posts, David seems to believe that “canonical” ObjC is that which was described in Cox & Novolbilski’s book “Object-Oriented Programming: An Evolutionary Approach” as well as a paper Dr. Cox wrote on closures in an ObjC-like syntax, which none of Cox, Stepstone nor NeXT never implemented (I don’t have a reference for that paper, sorry). The garbage collection used by POC is the Boehm conservative GC, which GNUstep also supports (at the framework level, the GNU ObjC runtime doesn’t know Boehm AFAIK).

    As for performing a FAQ switcheroo, I’d be in favour of that but I don’t think that one can perform a coup on Usenet. Maybe I just don’t read the news.* hierarchy often enough (where “often enough” would be any non-zero amount).

  4. cjwl says:

    I’ll link to Graham’s FAQ on cocotron.org, I didn’t know about it until your post and am glad there is an alternative in the works. I agree Stes’ FAQ is irrelevant and confusing for people new to Objective-C, very unfortunate.

  5. lance says:

    Ah, I see that the Objective-C trademark:

    http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=73519519

    was finally recently abandoned (dead).

    … anyways, long live Objective-C. Now if Apple would cancel those EOF patents…

    I haven’t checked in a long while … is Obj-C runtime on XP/Vista? and how are the cygwin guys doing? Last time I checked they wanted a runtime royalty? (10 years ago…) In order for Obj-C to be “popular” it needs to run on “popular” (although not as nice) computers. Popularity ain’t everything though. Sorry, I’m a bit rusty on non-Apple Obj-C.

  6. lance says:

    Looks like Apple read my comment above and on 2/15/2007 did this:

    http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=77108817

    I doubt it is actually enforcable though because so many other people are using it now. It is like trying to trademark “banana” for a fruit designation.

    So, writing your own Obj-C language, modifying it and calling it a different name IS a good thing to do.

  7. bbum says:

    All things considered, if you are going to take the language in a different direction than Apple’s — like, say, what David Stes has done — you probably ought to use a different name anyway just to avoid confusion within the community.

    Regardless of trademark or anything else, Apple’s implementation of Objective-C is quite clearly the most popular available today.

  8. lance says:

    Yup. If you are going to program on a Mac I would highly recommend Obj-C, unless you are doing Web development then I would choose Java. If you are programming embedded systems then probably C++, on Windows C++ or C# .NET stuff (which is difficult, but a required hurdle). The point is: Choose the programming system (and language, they are closely bound these days) according to the platform. I know people do use Obj-C outside of Mac programming, but as far as popularity: Obj-C is very popular on the Mac, but not popular outside the Mac, so I would say Apple owns Obj-C (In the late 80s I think they (Steve at NeXT) licensed the name from StepStone even). Of course, I live in a Cocoa hole in the luxury of Cocoa Frameworks and I rarely crawl out of my hole anyways so my viewpoint may be defined by the boundaries of my hole.

Leave a Reply

Line and paragraph breaks automatic.
XHTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>