13 Replies Latest reply: Jun 28, 2012 11:45 AM by mark133
mark133 Level 1 Level 1 (65 points)

So it's finally sinking in that the reason I'm having so much trouble trying to figure out how Cocoa works, is that the implimentation of new objects in an application depends almost completely on extending or re-mixing the classes and methods that are already available.

 

It takes a transformation from thinking of design as an independant development to thinking almost entirely in terms of using what is already available...not because you wish to, necessarily, but because you have to. (Not that that's a problem, it's not. It's just an unexpected requirement of understanding the limits of designing in the Cocoa environment).


iMac
  • mark133 Level 1 Level 1 (65 points)

    I would have preferred a Cocoa introduction screen to be something more like:

     

    Link 1: Cocoa Quick Start: Hello World!

    Link 2: History: C functions vs. Cocoa Objects (Hello World! as Cocoa C document)

    Link 3: Frameworks, Objects, Methods and Messaging

    Link 4: Foundation Framework Reference Page

    Link 5: Application Kit Framework Reference Page

    Link 6: Hello World! as Document-based Cocoa application

    Link 7: AppendixA: Common Resources for Developers

    Link 8: AppendixB: Naming Conventions

    Link 9: AppendixC: Distributing New Classes

    Link 10: AppendixD: Distributing New Applications

  • K T Level 7 Level 7 (23,700 points)

    As always, feel free to use Report a Bug for any fixes, samples, doc additions, feature requests or enhancements you'd like to see as well.

  • etresoft Level 7 Level 7 (26,600 points)

    In that respect, Cocoa is no different than any other software development environment from the past 30 years.

     

    Really, the problem is that Cocoa is simply the current state of affairs after 50 years of software evolution. It was almost an evolutionary dead end until Steve Jobs brought it to the Mac and then the iPhone. The overwhelming popularity of Apple now is encouraging everyone to decide they should start writing apps. For most professional software engineers, it takes at least four years of university education before they even consider themselves a beginner. With a BS in computer science and 3 years of experience, learning Cocoa would challenging, but doable, for most programmers.

  • mark133 Level 1 Level 1 (65 points)

    Cocoa is radically different to me than what my limited experience with introductory programming was or is with the old Apple IIe BASIC, assembly, or C. With those languages and environments, you start out as an individual thinking about how to set out the framework for what you want to do in terms of variables, operations, input and output.

     

    With this, you have to accept that everything is already in place, and the planning is about moving the parts around and finding out what they already 'know', maybe changing what they 'think', but not at all like imposing your own thought and planning process on the design.

  • mark133 Level 1 Level 1 (65 points)

    I'm sure many of the apps out there are written by teens who haven't graduated high school yet. I think there is still enormous potential for Cocoa to advance on the original Apple dream of making the most advanced computer technology available to everyman's fingertips.

     

    I'm still in awe about FCS and Motion/Color, etc, but the access to the Cocoa frameworks is beginning to overwhelm that in terms of admiration for the Apple legacy.

  • etresoft Level 7 Level 7 (26,600 points)

    mark133 wrote:

     

    Cocoa is radically different to me than what my limited experience with introductory programming was or is with the old Apple IIe BASIC, assembly, or C. With those languages and environments, you start out as an individual thinking about how to set out the framework for what you want to do in terms of variables, operations, input and output.

     

    Most real projects are much larger than that. You don't worry about variables, operations, and I/O. You focus on the bigger picture of what you are really trying to do. Usually you have one or many libraries or frameworks from your vendor or some 3rd party to help with the low-level, mundane work.

     

    I'm sure many of the apps out there are written by teens who haven't graduated high school yet.

     

    There are a few, but that is extremely rare. Most software requires teams of several engineers working full-time for months at least.

  • red_menace Level 6 Level 6 (14,820 points)

    I remember then - you must have missed out on the early Inside Macintosh (the "phone book") with its tens of thousands of pre-written Pascal headers to the routines stuffed into ROM.  At least now you have grouped, categorized, indexed, cross-referenced, and searchable (local and internet) documentation - I don't think the documentation back then would even fit on the drives of the day (and forget about the web).

  • mark133 Level 1 Level 1 (65 points)

    The situation is remarkably like media production. The education, expertise, expense and time for professional quality production has dropped phenomenally. It still takes a highly organized, multi-faceted team for a large production involving great writing, many special effects, on site filming and lighting, etc. But a full-scale production is well within the reach of an average  group of teenagers. A short production with complete and total professional capabilit (like a commercial, web-format media, or mini-internet episode) is well within the reach of the average individual.

     

    The same is true with this, it's just more technical and therefore slower to develop. For both sets of technologies, Apple has been the leader. They also have in common the slower rate of change in the technological decvelopment, which means growth not as much through technological development, but more through expanding the use of what's already available.

     

    On the other hand, my specific reason for getting involved with this is to develop a somewhat extensive platform that will actually unleash a new form of interacting with the technological capabilities that we now have available. So I hope I can learn enough quickly enough to get the vision off the ground.

  • etresoft Level 7 Level 7 (26,600 points)

    mark133 wrote:

     

    For both sets of technologies, Apple has been the leader.

     

    I'm going to have to disagree on that part. You would have a difficult time finding a bigger Apple fanboi than myself, but Apple's development tools have always been substandard. red_meance doesn't give "Inside Macintosh" justice. Until MacOS X was released in 2001, few people used Apple development tools. CodeWarrior was the tool of choice. Interface Builder was, and still is, a joke compared to Borland Delphi/C++ builder. The iOS SDK was assembled with duct tape. Apple's development tools are at least ten years behind the curve. Xcode and Visual Studio didn't succeed because they were the best, they just didn't self-implode like Metrowerks and Borland did.

     

    So I hope I can learn enough quickly enough to get the vision off the ground.

     

    Good luck.

  • red_menace Level 6 Level 6 (14,820 points)

    Not too many people remember Inside Macintosh.  I still have the phone book and some early Macintosh developer material from when Apple just went around to the bigger cities putting on free seminars.  It was something completely different, like mark133 mentioned, where instead of doing your own thing from scratch you had to figure out what someone else had done (if you could find it).  Of course, there was the issue of not being able to fit much of anything into the memory at the time, so using those libraries was about the only way to go.  You still have to hunt around a bit with Cocoa, but at least the search tools are better.

  • mark133 Level 1 Level 1 (65 points)

    I say 'Apple is the Leader' in the present-tense, and with respect to reaching a mass market with tools and capabilities that would otherwise be out of reach for most people. It doesn't mean much to be the leader that was.

     

    Of all the people who have successfully made motion-type media content, or a scene-based home movie, or a small NSwindow application or script that does something useful for someone, I expect most owe the Apple sense of user interface and user experience to the otherwise unattainable success.

     

    I'm already comfortable doing scripting and making small NSView/Data applications after only a few days.

     

    That at least gives me some hope for making bigger dreams a reality, where there would have been none before (even though I still can't seem to figure out how to launch a window without using a nib file, etc).

  • mark133 Level 1 Level 1 (65 points)

    This is an adjustment to the Apple MVC graphic. Additions like these would have helped me understand Cocoa

    much easier, much sooner (especially if the additions were links to the actual files from a good example, like the Money Changer tutorial).

     

     

    MVC paradigm.jpg

  • mark133 Level 1 Level 1 (65 points)

    Here are the MVC files for the 'Currency Converter' Cocoa tutorial for beginners.

     

    Cocoa Tutorial, 'Currency Converter'.jpg