Programming Mac vs Windows

David Weller discusses what it’s like to program on a Mac. Back when I was a Mac user, I desperately wanted to write some programs. The barrier to entry was huge. I didn’t know C++, didn’t know Java, and still don’t know Objective C (and don’t care to ever learn). There was AppleScript and that is where I wrote all my stuff. Later I learned Java (in college), but all that really taught me was what object oriented programming was about, and for that I’m forever grateful. However, I still couldn’t do anything with Java on a Mac because the JVM sucked big time. Not to mention Java apps looked funny with all their non standard controls.

Anyway, this little company called REALSoftware came out with a product called REALBasic and I was hooked. For many years after that I wrote a bunch of stuff using REALBasic, and wrote most of my prototypes for Outlook Express and Entourage with that application. Then, I discovered .NET, Visual Studio and have been hooked since. I think the pivital moment for me, the one where I thought I could no longer work on the Mac was when I went to the PDC in 2003. It opened my eyes.

When OS X came out I took a look at the various products for writing code, and pretty much felt the same way as David. I was just perplexed. None of it was intuitive to me. Thankfully Apple has realized it has a good thing with AppleScript and has continued to invest in that platform. I hear that Mono is doing pretty well on Mac OS X these days, and if they can get Windows.Forms support that would rock.

My good buddy Mike Fullerton has been writing Mac software for most of his life. He has been around the block, writing games for big game developers, working on one of the first “Frameworks”, MacApp, is published in MacTech, and then spending almost 7 years working on MacIE, MacOE, and Entourage. Recently Mike started working on the Hotmail team and it’s fascinating to talk to him about writing .NET code. We joke that he thinks it’s so “easy”. I hope he writes more on the topic some day, as he has an awesome perspective. Not too many developers go this path.

[update: corrected PDC date]

Comments (14)

  1. Will says:

    If you took the time to learn Obj-C (read Cocoa) I think you’d find it’s just as, if not more, easy as visual basic of any brand. Unlike VB on the Mac, it’s runtime is native, mature, *stable* and fast. Like VB, it allows you to develop applications in a fraction of the time it would take you with a procedural language. I’ve done VB programming on the Mac and on the PC and I find myself being more productive in Cocoa. And unlike VB, you can ‘get your hands dirty’ by using Carbon & C APIs when necessary. I guess my point is to claim Apple doesn’t have good RAD story is just not true, you’re just not willing to learn it.

  2. Randy says:

    I run a mac based business and am looking for a few good men (or women) that are mac saavy and mac OSX programmers in Northern California. May have some projects for them at our growing company. Know anyone?

  3. DD says:

    You used REALBasic to program Entourage? You think programming on OSX is unintuitive?

    This explains alot regarding the quality of Microsoft software.


  4. Actually, there are some pretty good examples out there that show that the operating system really doesn’t matter any more. Take a look at Eclipse ( if you want to see a modern, powerful, IDE with excellent integration on all platforms, which you can use to develope code for Mac, Linux or Windows (and yes, it is used to develop itself).

    And if you don’t want to use Java, REALSoftware will do it for you as well. 😉

  5. West Crosby says:

    Eh …Objective C isn’t that hard. But it’s far from intuitive. You just gotta throw away how you handled objects in Java/C++ out the Window. I got a Cocoa Programming for Dummies book, and it’s awesome. I highly recommend it. It really is easier and more flexible than it appears.

  6. Stingerman says:

    A Microsoft lovefest. It seems like the 800 pound gorilla has finally realized how good the OS X experience is and how much a threat it is. So the bashing begins…

    PS. I develop on both environments, and the excitement is in OS X these days. Competition will be good for you guys,

  7. Omar Shahine says:

    DD, see the word "prototype"? that is what PM folk like myself do when we are trying to create a new feature. We don’t write code, we write a prototype, see how things can work, and then take screen shots, place them in a spec and a developer impliments the feature.

  8. Dave says:

    — DD, see the word "prototype"? that is what PM folk like myself do when we are trying to create a new feature. We don’t write code, we write a prototype, see how things can work, and then take screen shots, place them in a spec and a developer impliments the feature. —

    Then that’s all the more reason why it sounds like you’re talking out of your ass. If indeed you are talking about prototyping then Interface Builder on Mac OS X can’t be beat on any platform. You can create a fully functional prototype in Interface Builder without writing a single line of code and without generating a single line of code. I’m not talking about just empty dialogs or windows that don’t do anything either, you can have all the controls interacting with each other and even saving their data, all without writing any code.

    And yes you’re right that it doesn’t work like Visual Studio or REALBasic but who the hell cares? Interface Builder was written before any of them and works exceptionally well the way it is. If you aren’t going to take the time to learn how the tools you use work then maybe you shouldn’t be doing what you do.

    Oh, and have fun waiting for Longhorn. It’ll be out when again? Next year? Two years? Three years? I’ll be happily using Tiger in a few months.

  9. Bonsai says:


    You can prototype an application on OS X using the interface builder that will let you quickly do "protypes" of your applications, on par, if not better than what is avialble on the windows platform.

    That’s my experience on the Mac coming from VS.Net and other dev tools on window’s platform.

  10. Omar Shahine says:

    While that is true, at the time there was no interface builder, and I still find interface builder to be klunky when wiring up events. Plus I found the help to be less than helpfull.

  11. Milke says:

    Boy, oh boy! And you’re Lead Program Manager? What an ignorance!You said you took a look at various dev tools when Mac OS X came out. Well, guess what: Interface Builder/Project Builder were there then and even before, including Mac OS X Server 1.0 (Rhapsody anyone?). I don’t use .NET (actually, I don’t use Windows at all) and I would never bash it after just one short look at it. But If I had to develop with it, I would try to use and exploit it in detail, before talking about its strengths and weakness. I did use Windows GDI and MFC. Real horror it was. REALBasic on Mac OS X for serious developing? What a joker!

  12. Omar Shahine says:

    Serious developing? Where did you get the idea that I was a serious developer? Re-read my post.

  13. Chad says:

    I can understand in the pre-OS X days how trying to take the leap to learn programming, especially Mac-specific programming was a very daunting task. You would have to obtain some development tools (generally CodeWarrior), and find some documentation, learn what to do, learn the Macintosh Tools or Carbon…etc, etc. Not necessarily a nice and straight road to learning.
    <br>One thing that confuses me is why there is so much development on Windows. As the phrase goes: &quot;Linux for development, Macintosh for productivity, Windows for solitaire.&quot; In this current day and age, Windows is probably the least-developer friendly platform out there. Mac OS X comes with the wonderful XCode (or Project Builder for pre OS 10.3), which is the ONLY IDE I’ve ever liked, Linux generally comes with a host of development tools for Perl, C, Python, etc. Windows comes with…well, not much. One project I’ve joined is requiring VS.NET 2003…oh, joy. More money out of my pocket to pay for another IDE, even though I have VS 6, CodeWarrior, Project Builder, and XCode already. This is a more lengthy section than I want to elaborate upon, but I’m really not overly pleased by having to resort to VS.NET. This just does not seem to promote the small-time developer.
    <br>As far as Objective-C/Cocoa, it is a little different, and might take a few twists of the brain to get used to, but so does any new concept. Just try going from procedural programming (C, Ada), to true OO (Java, Objective-C), to a functional language (LISP). Each paradigm is unique and take some time to learn, understand, and master.
    <br>Anyway, I think this article might have been a little more interesting if there had been some proper merit. If someone came along and had 10 years of both Mac and Windows development and decided to balance the pros and cons of each, then that would have been more credible. But since it sounds like you aren’t even diving into proper Mac programming before properly judging it.
    <br>Excuse me, I must be off now. I’m going to talk trash about Chevy trucks, even though I’ve never driven one.