There are conventions and metaphors of human computer interfaces. Apple used to provide interactive training programs to explain the use of a mouse to customers in stores. My own father who is a brilliant scientist could not initially master double-click and fifteen years later frequently double clicks when a single click is adequate. To follow up on the theme of the first post, the Attitude Direction Indicator (ADI) is a critical cockpit instrument that is absolutely obvious and second nature to a pilot, but most people off the street would need an explanation to understand its use.

The point is that we are not born knowing how to interact with computers. We are trained, and sometimes the training is so thorough and internalized that later we can't imagine any other way to interact. It is also clear that there have been both evolutionary and revolutionary changes to HCI. The acceptance of changes depends on how easy it is for humans to fit the changes into existing metaphors and/or adopt new metaphors and/o perceive the improvement if any that change may provide. I remember the time when existing command line users and even DOS junkies could not understand why anyone would want to use a mouse. They could not perceive any advantage to a mouse, and their internalized metaphors for interfacing with computers did not include graphical user interfaces. Many others could not understand why anyone would use a command line interface.

Now relate this to Cocoa. Smalltalk stepped into a vacuum in the early 1970s and invented a whole new set of metaphors for programming. Smalltalk's metaphors started with object oriented programming but included Model-View-Controller and many of the object oriented patterns such as decorators, composition, and hierarchies, that we still use and document today. Objective-C mixes Smalltalk with C, and Cocoa/NeXTstep started by incorporating many of the venerable Smalltalk metaphors and patterns. Cocoa did not stand still. There have been refinements and adaptations to accommodate and exploit the C side of Objective-C too.

If you, the programmer, are unfamiliar with the metaphors used by Cocoa, you are a bit like the DOS junkie who can't understand the point of a GUI. In some respects, the more invested and internalized you are with other metaphors, the harder it is for you to accept Cocoa. Take heart. There aren't many DOS junkies left. For an interesting but probably irrelevant parallel, it took from about 1984 when the Mac was released to about 1993 when the general public started using GUIs. There is a correlation to the fact that it took from about 1997 when Apple started selling Cocoa technology to 2006 or so when Apple's developers embraced it. The GUI pre-existed the Mac by 8 years or so. NeXTstep pre-existed Cocoa by about 8 years or so.

Cocoa is the most consistent, elegant, and productive software development technology I have ever used, and I have used a lot. Cocoa uses key metaphors and design patterns ubiquitously. If the programmer is either unaware of the metaphors or does not see their utility, it will be difficult to use Cocoa. If a programmer fails to grasp a particular pattern, the whole framework may be incomprehensible because the pattern is most likely used throughout.

The attributes of Cocoa that make it so consistent and elegant are exactly the same attributes that I think newbies are complaining about. The newbie complains that the reference documentation mentions delegates or tags or data sources or the responder chain or key value coding or bindings or targets or actions etc. without defining them. This is exactly like a newbie complaining that clicking and dragging and selecting and double clicking are used throughout a GUI but not explained in the documentation for every application. Once the GUI metaphors are internalized, it is unnecessary at best and annoying at worst to keep encountering mouse based selection explained in every user's guide. The consistent application of the metaphors makes the GUI easy to use. The consistent use of metaphors makes Cocoa easy to program. BUT YOU MUST UNDERSTAND THE METAPHORS FIRST in both cases.



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to