Re: Visualizing Cocoa
Re: Visualizing Cocoa
- Subject: Re: Visualizing Cocoa
- From: email@hidden
- Date: Fri, 8 Jun 2001 23:23:40 -0700
>
I think one of my big problems with trying to get a grip on Cocoa is
>
visualization--or rather the lack thereof! A simple procedural program
>
is essentially linear, it seems to me, which is to say one dimensional.
>
A more complex procedural program, one with conditionals or loops, is
>
two dimensional. In both cases it is child's play to diagram the
>
program on a sheet of paper. And therefor easy to Grok at a glance
>
what's going on. If I understand Cocoa right--a big IF since I feel
>
like I'm still waiting for the FIRST shoe to drop--the construct here is
>
three dimensional. It is exceedingly difficult to lay out a Cocoa
>
program on a sheet of paper.
<snip>
Honestly, the problem you are having is not cocoa so much as grasping the
mental constructs around object-oriented programming. It's not enough to
"get" the various parts of an object-oriented programming language - you
need to understand the entire system - to grok it - so that it forms a
gestalt in your mind. It is not an easy thing by any means - I think I
worked through the basics of C++ several times - each time I understood all
the pieces, but couldn't understand what benefit I could gain from this
more complex sibling of the nice, straightforward procedural language I
already knew well: C. That was about ten years ago; I wouldn't use a
procedual language now for a project of any complexity unless it was
absolutely avoidable.
In terms of diagramming the program - the thing you have to realize is that
Cocoa is a very complex system. There is a lot of functionality that you
get for "free" when you use Cocoa, but the code to run it is still there.
Once you grasp OO in general, start learning about UML. It is a great tool
designed for diagramming every part of complex software systems.
The only thing I can really suggest to you is to keep at it, and keep
reading about object-oriented programming and object-oriented analysis and
design. It will, at some point when you least expect it, click in your
brain, and you will be forever changed by it. Believe me, you will look
back on your comments in this e-mail and say to yourself, "What was I
thinking."
>
I stand by my assessment that Apple's documentation leaves a lot to be
>
desired, and I have seen enough other people articulate this better than
>
I to know I'm right;
There are certainly some very large gaps in the online documentation, but
this is as much a problem with organization as lack of information in most
cases, as most of the missing material is available in some other form -
from a legacy NeXT document if nowhere else, and these are all available
for free. The sheer volume of information on
NextStep/OpenStep/Rhapsody/Cocoa that is freely available online is
stunning, and I honestly don't think you would be in any different of a
situation if Apple's online Cocoa documentation were complete.
Part of the problem here is expectations - and this is not just you; many
new and wannabe Cocoa programmers who come to the list seem to have the
same expectations as you do. Apple clearly is not and does not intend to be
a teacher of fundamental software development techniques such as the C
language, or object-oriented programming, or any of the other basic skills
that are not specific to Apple or Cocoa. Apple is not trying to teach you
how to program; they are trying to provide you with information to teach
yourself you how to develop software for their platform.
>
however, given my visualization problem, it might
>
NOT be quite as bad as I first thought. So, does any of this ring a
>
bell with anyone; if you had, or have, this visualization problem how
>
did you get past it?
This is absolutely common - every programmer I know of has experienced
this. I'm sure there are a few wunderkinds around who grasped OOP quickly
without this mental block, but for most of us mortals it is a difficult
leap from traditional procedural programming.
>
What I really need is an application that will
>
display Cocoa in three dimensions, with or without red and blue glasses!
>
Animate the sucker and use it as a debugging/stepping tool, and who
>
knows what other wondrous things. Apple, Pixar, and Omni? Group
>
effort? Thoughts?
While this sounds like a cool screensaver, I doubt you're ever going to see
it and I'm sure it wouldn't solve your problem. I think you need to realize
that developing Cocoa applications involves complex mental constructs -
don't let the simplicity of the system fol you -- and the effort really
requires more groundwork than it appears you have. The target audience for
the vast majority of the material on Apple's DTS website are experienced
developers who want to adopt Cocoa as a supported platform, not people who
wake up one day and decide it would be neat to create computer programs
(that's not a knock on you - every programmer makes that decision at some
point). If I were you, I would work through all the various Cocoa tutorials
you can find - seeing the pieces in action will help - but you also need to
establish the requisite skills necessary to program in Cocoa. You can't get
by just knowing the language constructs; you need the whole picture. Until
you can answer -- and not by quoting from a book -- the simple question,
"why is object-oriented programming good", then you stand no chance of
really getting it. Once you understand the problems that OOP arose to
address, then you'll find that your brain will quickly progress to the
place it needs to be.
Unfortunately, it is unlikely that anyone on this list is going to be able
to give you an answer that satisfies you or causes you to instantly "get"
Cocoa (man, but it would be nice if we could!), but if you're truly
interested, keep reading the list. Also check out www.stepwise.com,
www.cocoadevcentral, and of course all the good stuff at
www.apple.com/developer. At Apple's web site, you might want to try reading
some of the older PDFs in the "Legacy" section in addition to the newer
Cocoa-Specific works. Most of the information is still good, although some
stuff is outdated, but the old NeXT volumes also have a LOT of foundation
material about why they designed NextStep the way they did, and why it's
really cool that they did.
Whoo.. didn't mean to be so long winded.