Go back to CocoaIntroduction
Skip to CocoaStepOne
Cocoa is a large and technically advanced collection of reusable software. Most of the software is provided in the form of objects. However much many of us would like Cocoa to be accessible by very novice programmers, the unavoidable reality for the time being is that programmers need to be fairly advanced to benefit from using Cocoa.
You must be a programmer - Cocoa is generally not a suitable software environment for learning introductory programming concepts. Cocoa is implemented with a programming language called Objective-C. Objective-C is a combination of two other programming languages that each date from the 1970s: the C programming language and the Smalltalk programming language. Although Smalltalk may be a good first programming language to learn, C generally is not. If you could constrain yourself to the Smalltalk side of Objective-C, it might make sense to just start with Objective-C. Unfortunately, the C side of Objective-C is intrinsic and can't be easily avoided by novices. When you are a more advanced programmer, you will probably be glad to have the power of C available. Cocoa uses every aspect of Objective-C and builds even more advanced patterns of usage above the basic language features.
Introductory programming topics include the following:
- What is a programming language?
- How does a program instruct a computer to perform a task?
- What is a compiler?
- What is an interpreter?
- What is an operating system from a programmer's point of view?
- What is memory?
- What is a data type?
- What is a variable?
- What is a constant?
- What is a function or procedure?
- What is a function or procedure calling convention?
- What is heap memory?
- What is stack memory?
- How are different types of memory used and how do they relate to function or procedure calling conventions?
- How is memory allocated from the operating system and later returned to the operating system ?
- What is automatic memory garbage collection?
- Why are memory management conventions important (with or without automatic memory garbage collection)?
- What is a programming language run-time?
- What is the Object Oriented style of programming and what other styles exist ?
You must be comfortable with the C programming language - You don't have to be a C expert, but you must recognize all of the syntactic elements of C and you must be able to reliably use C pointers.
You must be comfortable with object oriented programming concepts - This is one area where Apple provides very nice succinct introductory information. http://developer.apple.com/documentation/Cocoa/Conceptual/OOP_ObjC/Introduction/chapter_1_section_1.html Different people learn different ways, so Apple's introduction won't be right for everybody, but it's a good place to start.
You must keep an open mind - There are an infinite number of different ways to solve every programming problem. Many programming languages and reusable software libraries use different approaches to solve common problems. There is a good chance that Objective-C and Cocoa use a substantially different approach from other languages and frameworks you may have used. That doesn't make either approach better or worse automatically. Every commercial software development technology has advantages in at least some cases or the technology would not exist. Cocoa is renowned for enabling very high programmer productivity without constraining the set of problems that can be solved, but programmer's opinions will always vary and software development environments are subject to aesthetic judgments irrespective of abstract technical merit. Many programmers are enthralled by Objective-C and Cocoa. You might be enthralled too. Or, you may never like Objective-C and Cocoa from an aesthetic standpoint, and there isn't really anything anyone can do to change that without affecting the aesthetics for others.