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

    • BrowserOS 0.46.0 by Razvan Serea BrowserOS is a free, open-source Chromium-based browser that runs AI agents natively, offering a smarter, more productive browsing experience. It supports Chrome extensions and integrates AI agents to automate tasks, fill forms, and streamline workflows. Your data stays on your computer: you can use your own API keys or run local models via Ollama, making it a privacy-first alternative to tools like Perplexity, Comet, or Dia. With built-in productivity tools and app integrations, BrowserOS boosts efficiency while keeping control firmly in your hands. Being Chromium-based, BrowserOS lets you effortlessly import your bookmarks, passwords, and Chrome extensions in just a few clicks. BrowserOS works with OpenAI GPT models, Anthropic Claude, Google Gemini, and local AI models via Ollama or LMStudio. You can use your own API keys and effortlessly switch between providers. BrowserOS Agent Your AI productivity assistant that organizes and manages your browsing effortlessly Quickly list, group, or close tabs Save and resume browsing sessions Search your history and organize bookmarks Switch instantly to the tab you need BrowserOS Navigator – Automate web tasks with ease Navigate websites and search automatically Interact with pages without manual effort Handle repetitive tasks in seconds What makes BrowserOS special Feels like home - same familiar interface as Google Chrome, works with all your extensions AI agents that run on YOUR browser, not in the cloud Privacy first - bring your own keys or use local models with Ollama. Your browsing history stays on your computer Open source and community driven - see exactly what's happening under the hood MCP store to one-click install popular MCPs and use them directly in the browser bar (coming soon) Built-in AI ad blocker that works across more scenarios! BrowserOS 0.46.0 changelog: Run Claude Code & Codex right in your browser — We've extended the agent harness to bring full coding agents into BrowserOS. Claude Code and Codex now come bundled and plug straight into the assistant, so you can drive your browser with the agent — and the subscription — you already use. A brand new experience — A redesigned new tab, a calmer composer, and a rebuilt command center for switching between agents. The whole assistant is cleaner, faster to reach, and easier to live in. New MCP tools — We rebuilt the browser tool surface from the ground up — a tighter, more reliable set of tools for agents to drive the browser. Plus one-click install of BrowserOS as an MCP server into the agents you already run, with automatic URL sync. Chromium 148 — Updated to the latest Chromium base with all recent upstream fixes and security patches. Streamlined — We've pulled back a few features that weren't getting much use — Skills, Soul, and Memory — so we can focus and ship better versions of them soon. Download: BrowserOS 0.46.0 | 181.0 MB (Open Source) Download: BrowserOS for macOS | 485.0 MB Links: BrowserOS Homepage | Github | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Microsoft finally admits its default Windows 11 25H2, 24H2 action broke key legacy component by Sayan Sen Microsoft last week released Windows 11 KB5094126 and KB5093998 as the latest Patch Tuesday updates. Following that the company also published the accompanying dynamic updates under KB5094149, KB5095971, and KB5094156. So far the company has acknowledged two known issues that have popped up after the release which include bugged-out Office apps as well as the Recycle Bin; though there could be more at play too. Speaking of bugs and issues, Microsoft seems to have finally acknowledged a problem that probably has been around for close to a year. That's because back in July of 2025 the company made a default change to the latest Windows 11 versions, wherein it switched to JScript9Legacy on Windows 11 24H2 and later releases. Hence following the release of version 25H2 in October 2025, JScript9Legacy also remained default-enabled. As a result there has been a compatibility issue ever since then. For those wondering, by switching to JScript9Legacy Microsoft intended to improve the security of modern Windows PCs by reducing vulnerabilities tied to legacy scripting like cross-site scripting (XSS), among others. XSS exploits can allow cyber-attackers to attach malicious code onto legitimate websites and use them to execute the code when a potential victim loads such a website. Hence the new JScript9Legacy engine enforced stricter execution policies and improved object handling, which should help mitigate such attacks. Microsoft today has published a new support article detailing the problem. Neowin spotted it while browsing. The company says that JScript global definitions and execution context may fail to persist across scripts, potentially breaking older dependent apps and web-based components that relied on this legacy behavior. In the article Microsoft has confirmed that the issue stems from its move away from the older jscript9.dll engine in favor of jscript9legacy.dll. As mentioned above, while the newer engine was designed to address vulnerabilities and strengthen security it also changes how JScript handles execution context. As a result functions and definitions loaded by one script could no longer remain available to subsequent scripts once execution ended. The company notes that some applications worked correctly on earlier Windows versions because the older JScript engine automatically retained global definitions and execution state between scripts. Under the newer model though that behavior is disabled by default causing certain legacy workloads and polyfill-dependent scripts to fail. Microsoft says it addressed the problem via the KB5077241 update though the fix had not been enabled automatically in the following updates. As such admins must explicitly turn on persistent JScript execution context using a Registry setting that the tech giant shared today. The configuration can be applied to individual processes or system-wide through the FEATURE_ENABLE_PERSISTENCE registry key. The steps have been outlined below: Run the following command to create the feature control registry key: reg add "HKLM\Software\Policies\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ENABLE_PERSISTENCE" Under this key, create a new DWORD (32-bit) value. Configure the value as follows: To enable persistence for specific processes only: Set the value to 1 for each target process name. To enable persistence for all processes: Add * as the key name and set its value to 1. You can find the official support article here on Microsoft's website.
    • The possibility that milk gathers back into a glass implies that gravity can be 'reversed'.
    • VidCoder 12.20 by Razvan Serea  VidCoder is a DVD/Blu-ray ripping and video transcoding application for Windows. It uses HandBrake as its encoding engine. Calling directly into the HandBrake library gives it a more rich UI than the official HandBrake Windows GUI. VidCoder can rip DVDs but does not defeat the CSS encryption found in most commercial DVDs. You’ll need the NET 8 Desktop Runtime. If you don’t have it, VidCoder will prompt you to download and install it. The Portable version is self-contained and does not require any .NET Runtime to be installed. You do not need to install HandBrake for VidCoder to work. Feature list: Multi-threaded MP4, MKV containers Completely integrated encoding pipeline: everything is in one process and no huge intermediate temporary files H.264, H.265, MPEG-4, MPEG-2, VP8, Theora video Hardware-accelerated encoding with AMD VCE, Nvidia NVENC and Intel QuickSync AAC, MP3, Vorbis, AC3, FLAC audio encoding and AAC/AC3/MP3/DTS/DTS-HD passthrough Target bitrate, size or quality for video 2-pass encoding Decomb, detelecine, deinterlace, rotate, reflect, chroma smooth, colorspace filters Powerful batch encoding with simultaneous encodes Customizable Pickers to automatically pick audio and subtitle tracks, destination, titles and more Instant source previews Creates small encoded preview clips Pause, resume encoding VidCoder 12.20 changes: Updated HandBrake core to 1.11.2. Download: VidCoder 12.20 | 47.0 MB (Open Source) Download: Portable VidCoder 12.19 | 89.3 MB Link: VidCoder Home Page | Github | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • Week One Done
      Jordan Smith earned a badge
      Week One Done
    • Reacting Well
      BizSAR earned a badge
      Reacting Well
    • First Post
      AndreaB earned a badge
      First Post
    • Week One Done
      Huge Trailer earned a badge
      Week One Done
    • Week One Done
      Classifyskilleducation earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      590
    2. 2
      +Edouard
      185
    3. 3
      PsYcHoKiLLa
      76
    4. 4
      Michael Scrip
      73
    5. 5
      Steven P.
      66
  • Tell a friend

    Love Neowin? Tell a friend!