🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.objective-c
Article #139

Re: Real-time coding practices in Objective C

#139
From: Brad Cox
Date: Fri, 26 Oct 1990 16:11
44 lines
2388 bytes
In article <129@contel0> barton@contel0.UUCP (Matthew Barton - R+D Software eng) writes:
| 	Does anyone have any other suggestions for speed improvement,
| 	which are specific to the Objective-C language (as opposed to
| 	just general-purpose good-programming practices)?

The approach you outlined seems quite sound, and admirably researched.
I occasionally use another one that is based on the following terminology.

I think of Objective-C objects as providing chip-level objects on top of
a C substrate that has always provided block-level objects (subroutines)
and gate-level objects (macros).

Thus when designing something, I think as a hardware designer might,
at each step thinking about whether this might be best packaged as
a gate-level object, a block-level object, a chip-level object, etc.

For example, when building a time-critical Queue class, I decided
that for clients for whom enqueing/dequeueing might be time-critical,
a block-level (subroutine-based) interface should be provided in
addition to the conventional chip-level (message-based) interface
for clients for whom purity and polymorphism were preferable. So
my Queue class looks like this:

@interface Queue:ListBasedCollection
...
-enqueue:aQueueMember 
{
	return (id)enqueue((QUEUE*)self, (MEMBER*)aQueueMember); 
}
@end
EXPORT QUEUE* enqueue(QUEUE* aQueue; MEMBER* aQueueMember) { ... }

In other words, the enqueue() subroutine corresponds to a chip
designer who decides to package the chip's functionality, not
only as a chip, but also as a resuable cel. Clients outside
his own company would use the functionality through the chip-level
interface. By packaging his work not only as a chip, but also as
a block (a cel) would allow experts within his company to reuse
the functionality through the lower-level, more complicated,
more efficient, less pluggable block-level interface.
-- 

Brad Cox; cox@stepstone.com; CI$ 71230,647; 203 426 1875
The Stepstone Corporation; 75 Glen Road; Sandy Hook CT 06482
Technical Details
Message-ID: <5725@stpstn.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!hsi!stpstn!cox
References: <129@contel0>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!hsi!stpstn!cox
From: cox@stpstn.UUCP (Brad Cox)
Newsgroups: comp.lang.objective-c
Subject: Re: Real-time coding practices in Objective C
Keywords: objective-c
Message-ID: <5725@stpstn.UUCP>
Date: 26 Oct 90 16:11:25 GMT
References: <129@contel0>
Reply-To: cox@stpstn.UUCP (Brad Cox)
Organization: Stepstone
Lines: 44