Programming for Mac OS X


Recommended Posts

Hello All,

I started a thread before asking for help to start programming for Mac OS X, and many of you said I should start by going to cocoalab.com. Anyways, i wanted to ask few more questions:

1. If I do not have any programming experience for any platform...where do I start in Mac OS X? Objective-C first or Cocoa or? Which one comes first? Whats the difference? Do I have to learn both Objective-C and Cocoa?

2. What book would anyone recommend for Objective-C (no prior experience at all) and for Cocoa (no prior experience at all). I know there isn't a "best book", but what would you all recommend.

3. Aside from cocoalab.com for tutorials and books, is there any other websites that I can always refer for help and read free tutorials and books?

4. My college don't have any Apple Groups, but how would I find such a thing around Houston, TX probably at other colleges or facilities?

Thanks,

-Eagle101

Link to comment
https://www.neowin.net/forum/topic/673142-programming-for-mac-os-x/
Share on other sites

I'm not a programmer but on the ADC website developer.apple.com they state that you should have a knowledge of Objective-C before using Cocoa.

Getting Started with Cocoa

Also, you might want to check out Introduction to the Objective-C 2.0 Programming Language

And Apple Developer Connection home.

And download a copy of Xcode 3 if you haven't already done so. If you have a Mac OS X installation disc it can be installed from there.

Edited by HellScream63
I'm not a programmer but on the ADC website developer.apple.com they state that you should have a knowledge of Objective-C before using Cocoa.

Getting Started with Cocoa

Also, you might want to check out Introduction to the Objective-C 2.0 Programming Language

And Apple Developer Connection home.

And download a copy of Xcode 3 if you haven't already done so. If you have a Mac OS X installation disc it can be installed from there.

Thanks for your help and suggestions...I already checked the Apple website for info but looking for actual books which they should make it easier for me to learn Objective-C and Cocoa...

Any other suggestions? Thanks for your help!!!

-Eagle101

Assuming you're already a competent developer and not jumping in to Macintosh programming without prior experience:

Refreshing your understanding of various OOP concepts and design patterns?specifically MVC?is a good idea. The Gang of Four's "Design Patterns: Elements of Reusable Object-Oriented Software" is considered standard reading. The book's examples are in (among other languages) Smalltalk and so I'm sure you'll see some of the similarities between that and Objective C.

Aaron Hillegass' "Cocoa Programming for Mac OS X" is considered the premier introductory text on Cocoa development. A good understanding of the underlying architecture is important and to that end "Mac OS X Internals: A Systems Approach" by Amit Singh is a solid high-level overview of the major components of the platform for a technical audience.

If you don't have any programming experience for any platform then it's time to start with "computer science basics". A introductory C, Ruby, Python (or any other language that tickles your fancy) is a good place to learn about the basics of programming. Programming is more-or-less just glorified math: the concepts you learn for one language are generally applicable in others. That having been said, you don't start by learning multi-variable calculus without having first practiced algebra, trigonometry, and "what the heck a whole number is anyway".

Once you've got your basics worked out, studying general principles is a good idea. Donald Knuth's "The Art of Computer Programming v.1-4" is as relevant today as it ever was. It's a hefty collection, but worth the read. Assuming you're still with us, you should have a solid background in problem solving and a good understanding of general computer science principles, so picking up the "Design Patterns?"book mentioned earlier is a good next move. At that point you should be ready to learn the syntax of Objective C (assuming you haven't yet), and Cocoa: Hillegass' book is a good next choice. From there you'll probably do most of your learning by trolling through the ADC documents and watching the WWDC presentations.

If you're serious about learning to write Mac OS X software then picking up a first-year computer science course form a local community college/university is a great idea. 1-2 credits are dirt cheap and an instructor-led course is likely to teach you more of what you need to know than just trolling book stores & the library and reading whatever has a pretty cover. If you can spare the time and a couple hundred dollars for weekend courses, i think it's a good idea.

Assuming you're already a competent developer and not jumping in to Macintosh programming without prior experience:

Refreshing your understanding of various OOP concepts and design patterns?specifically MVC?is a good idea. The Gang of Four's "Design Patterns: Elements of Reusable Object-Oriented Software" is considered standard reading. The book's examples are in (among other languages) Smalltalk and so I'm sure you'll see some of the similarities between that and Objective C.

Aaron Hillegass' "Cocoa Programming for Mac OS X" is considered the premier introductory text on Cocoa development. A good understanding of the underlying architecture is important and to that end "Mac OS X Internals: A Systems Approach" by Amit Singh is a solid high-level overview of the major components of the platform for a technical audience.

If you don't have any programming experience for any platform then it's time to start with "computer science basics". A introductory C, Ruby, Python (or any other language that tickles your fancy) is a good place to learn about the basics of programming. Programming is more-or-less just glorified math: the concepts you learn for one language are generally applicable in others. That having been said, you don't start by learning multi-variable calculus without having first practiced algebra, trigonometry, and "what the heck a whole number is anyway".

Once you've got your basics worked out, studying general principles is a good idea. Donald Knuth's "The Art of Computer Programming v.1-4" is as relevant today as it ever was. It's a hefty collection, but worth the read. Assuming you're still with us, you should have a solid background in problem solving and a good understanding of general computer science principles, so picking up the "Design Patterns?"book mentioned earlier is a good next move. At that point you should be ready to learn the syntax of Objective C (assuming you haven't yet), and Cocoa: Hillegass' book is a good next choice. From there you'll probably do most of your learning by trolling through the ADC documents and watching the WWDC presentations.

If you're serious about learning to write Mac OS X software then picking up a first-year computer science course form a local community college/university is a great idea. 1-2 credits are dirt cheap and an instructor-led course is likely to teach you more of what you need to know than just trolling book stores & the library and reading whatever has a pretty cover. If you can spare the time and a couple hundred dollars for weekend courses, i think it's a good idea.

Thank you very much for your reply. I really appreciate your time and effort!

Let me mention few things:

I do not have any experience on programming for any platform...I never programmed before...But i really really want to start programming for mac. I am ready now. I have time now. So you are saying first I should learn the basics by learning C, python, Ruby? Are you sure?

I am saying this because many people told me to start with an Introduction to Objective-C (recommended: Programming in Objective-C by Stephen G. Kochan) and learning it. Then, to go ahead and learn Cocoa (recommended: Cocoa Programming by Aaron Hillegass)...Is this correct, or do I first need to learn the very very basics of programming?

Please guide me. Thanks

I recommend starting off with Python, especially since there is a Python-Cocoa option in Xcode. While Python isn't necessarily as fast as Objective-C, or as powerful, it is a very good starting point for basic programming theory.

Just keep in mind this is not an overnight thing. Once you start learning, you'll need to invest a few hours every week just improving your skills and doing new things. It takes years to master, I'm not even close yet.

I do not have any experience on programming for any platform...I never programmed before...But i really really want to start programming for mac. I am ready now. I have time now. So you are saying first I should learn the basics by learning C, python, Ruby? Are you sure?

Yes, I think learning the basics and having a good grasp of things is very important. I'm a fan of Ruby and Python: they're both more expressive languages than Objective C, but not so much that you'll feel crippled when you pick it up. It really doesn't matter which language you learn because the concepts are all the same.

Think of it like learning to play an FPS: the basic skills of moving, shooting, aiming, jumping, grenades, etc can be learned in any game. Once you have those mastered you can become proficent at a new game quickly. Imagine trying to play Portal having never used a mouse or keyboard: jumping in to Cocoa & Objective C would be even more complicated.

I am saying this because many people told me to start with an Introduction to Objective-C (recommended: Programming in Objective-C by Stephen G. Kochan) and learning it.

My take on Objective C is that while it's a good language for development, there's enough quirks that I think using another language is a better choice. Your mileage may vary. Also, the more languages you learn, the better a programmer you'll be: and by that I mean not just syntax but the strengths and weaknesses of a given language.

Programming is about syntax and languages in the same way that astronomy is about telescopes: it's the visible part of computer science, but not really the most important.

Then, to go ahead and learn Cocoa (recommended: Cocoa Programming by Aaron Hillegass)...Is this correct, or do I first need to learn the very very basics of programming?

If you can already program and have an understanding of OOP principles then picking up Objective C is pretty straight forward. The syntax is a direct superset of C and there aren't a whole lot of funny rules or quirks to learn. I don't think it's a very beginner friendly language and I think that the time you spend fighting the syntax (like making sure to next your []'s properly) is better spent dealing with the subject matter at hand.

Python or Ruby are great choices as beginer languages but the 'cost of entry' to learning a language is so low that it really doesn't matter which one your start with. A good ruby book is "Programming Ruby: 2nd edition" by Dave Thomas, unfortunately I can't recommend a Python Book. (FYI: all of the ones I've mentioned before I own, I don't want to recommend one without liking it enough to buy).

Kochan's book is quiet good, though I'm not sure if it's been updated for Objective C 2.0 or not. I own the first edition and found it served its purpose well.

Another good book was "Learning Cocoa with Objective C" by James Davidson. Again, I'm not sure if this has been updated for Objective C 2.0 and Xcode 3. The first edition was a solid text: not enough to stand on it's own, but if you were already a programmer then it provided a good jumping-off point.

EDIT: adding to what simon says:

I've been programming almost my entire life (long enough to have my first programs stored on a tape). It's a huge field and the best way to be successful is to realize that no matter how much you know, it's never even close to everything. Think of how long it took you to learn the math you know now - and think about how much there is that you don't know: computer science is even more complex than mathematics because it encompasses so many different fields.

Edited by the evn show

Thank you everyone for the replies. I really appreciate it.

Now, Lets get to the point. I already bought "Cocoa Programming for Mac Os X" by Aaron Hilliegass, and Programming in Objective-C by Stephen Kochan. However, as many have sugested that I start to learn the basics first.

Ok, i will put these books away. But help me get started please. Tell me what books can I read to fully understand the introductions that later on I can pick up on Objective-C then Cocoa. I really want to program for Macs. So please help me out here.

Thanks

Bump...any recommendations on a good book or place to start learning Python?

Thanks

Sadly, I don't have a good 'first book' for Python. I went to that language after Ruby (and a dozen others) so my first book (Dive in to Python by Mark Pilgram of 'dive into XML' and 'dive into mark' fame was it.

On the plus side, the book is available for free online as a PDF, HTML, etc. if you don't care much for dead-tree books.

  • 2 weeks later...

Hey dude, nice to see you :)

In relation to python, with my modest experience in that language, I would recommend you to first read the python manual that comes with the python distro itself. It's a nice start, has practical examples and most importantly the module index.

After that done read some code done by others will help allot. Best regards, Lechio.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • I'd say the first one failed to be as popular as Apple anticipated, but the easy adjustment here is to make fewer of them next time around. It would only be a "flop" if it isn't possible for Apple to recover the design and factory tooling costs given the number of units sold, which I doubt would be the case. It isn't like no one bought them; it just failed to become the new hot phone of the year.
    • You're right that it does not follow the plain meaning of the word, but in this context, it is a legal term defined in 49 U.S.C. Kind of how "wire fraud" laws apply even if a physical wire was not used. Given that it is codified in law, and it isn't just automotive journalists that don't understand evolving technology, I highly doubt congress would change a well understood term just because technology makes the term slightly less actuate.
    • This is exactly why I keep saying we are not ready for human free self-driving. These little "bugs" are may seem like random one-offs. There was also the Waymo that drove between police with drawn weapons and the suspect they were pointing them at. From a software perspective it is easy to understand how those extremely rare situations may not have been programed for, but that is the point. If AI needs to be told to watch out for every possible contingency, then it can never be successful. There will always be the possibility of a first encounter that the AI needs to understand to avoid.
    • TeraCopy 4.0 Final by Razvan Serea TeraCopy is a compact program designed to copy and move files at the maximum possible speed, also providing you with a lot of features. Copy files faster. TeraCopy uses dynamically adjusted buffers to reduce seek times. Asynchronous copy speeds up file transfer between two physical hard drives. Pause and resume transfers. Pause copy process at any time to free up system resources and continue with a single click. Error recovery. In case of copy error, TeraCopy will try several times and in the worse case just skips the file, not terminating the entire transfer. Interactive file list. TeraCopy shows failed file transfers and lets you fix the problem and recopy only problem files. Shell integration. TeraCopy can completely replace Explorer copy and move functions, allowing you work with files as usual. TeraCopy is free for non-commercial use only. For commercial use you need to buy a license. The paid version of the program includes the following features: Copy/move to your favorite folders. Save reports as HTML and CSV files. Select files with the same extension/folder. Remove the selected files from the copy queue. Download: TeraCopy 4.0 | 14.6MB (Freeware, paid upgrade available) View: TeraCopy Website | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • Week One Done
      Eurosoft10 earned a badge
      Week One Done
    • One Month Later
      Eurosoft10 earned a badge
      One Month Later
    • One Year In
      Skeet Campbell earned a badge
      One Year In
    • One Month Later
      Sharbel earned a badge
      One Month Later
    • First Post
      BizSAR earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      586
    2. 2
      +Edouard
      187
    3. 3
      Michael Scrip
      74
    4. 4
      PsYcHoKiLLa
      72
    5. 5
      neufuse
      69
  • Tell a friend

    Love Neowin? Tell a friend!