So what's it like to be a Mac programmer?

Discussion in 'Mac Programming' started by Biolizard, May 22, 2008.

  1. Biolizard macrumors 6502

    May 20, 2008
    London, United Kingdom
    I'm a first year Comp Sci student in Blighty and I might need a laptop soon for a job I've been hired for where I'll have to move away for the summer (I'm currently a commuter student), since dragging my desktop there may be a bit impractical.

    All my stuff has been Windows up until now but Apple's rise to prominence means I now have an interesting choice.

    The laptop, should I need to get one, will be used for everyday stuff and some programming, both when I'm away and when I come back. I'm mainly doing Java at the moment and have no idea what languages I could end up working with.

    So what's it like programming for the Mac? Do you personally tend to program soley for OS X or do you do Windows/UNIX/Linux etc. programming too? It seems like there's a good developer community around OS X, is there? For switchers, how did moving to OS X influence your skills as a programmer? Just looking for peoples' experiences, really.

  2. yeroen macrumors 6502a


    Mar 8, 2007
    Cambridge, MA
    With OSX you have the benefit of being able to develop in the Obj-C/Cocoa , the Java environment, the Carbon environment, or the BSD/Posix environment (OS X is a UNIX flavor remember). Anything I do at my day job on hacking on Linux code I can do on my Apple. If Windows development is your thing, just install VMWare. It really is the best of all possible worlds.
  3. lee1210 macrumors 68040


    Jan 10, 2005
    Dallas, TX
    I'll put it this way:
    If you get a non-Apple x86 laptop, you can run Windows and Linux, but not OS X (at least not while abiding the EULA and having it supported).

    If you get an Apple laptop, you can run OS X, Windows, and Linux, so even if you find that you don't like OS X at first or at all, you still have options.

    If you are writing "server" code in Java, OS X will be a fine environment to do so in. Note that apple does tend to lag behind Sun's JDK and JVM releases, so you might not always have the most recent Java available. Otherwise I have had no trouble running IDEs like Eclipse in OS X or building things with javac at the terminal. If you're writing swing stuff it will work fine, it just doesn't look totally Mac-y.

    I program for UNIX by trade and as a hobby, so having a nice laptop running a "friendlier" OS that I can still use to target UNIX (cygwin on Windows is fine, but it's not the same) is great. I can work on a code snippet on my Mac, and once it's working I have a high level of confidence that it will work the same on the Linux servers at work.

    I have done some Objective-C and Cocoa programming in my spare time, but it's not my primary focus. When I need something done, my primary mode of thinking is a commandline tool, so I haven't really gotten into building interfaces and such.

    As for the community, I think it's pretty large. Especially if you are working on Java, you don't really need to get a lot of Mac-specific advice. For Mac only things like Cocoa, Apple has great documents and I think the folks here are pretty helpful for most things.

    In terms of the "switch" I moved from a windows machine during college that was essentially a thin client to get to linux servers on campus to a PowerBook and now MacBook Pro. The change was that I could develop on my own machine instead of having to depend on remote resources, which I'd say had a net positive effect. I don't know that it increased my skills in-and-of itself, but it did allow me to program more, which in turn increased my experience and skills.

  4. Ti_Poussin macrumors regular


    May 6, 2005
    I made my whole computer engineering diploma on OS X. It works great, you can use any OS you want, if OS X doesn't fit your need. Check for refit bootloader:

    This way you can install a real Linux, Windows and OS X on the machine. You can also use vmware for this and run them side by side.

    The unix underlayer of OS X is great, it let you use many usefull stuff (Bash, perl, python, mysql, apache, ...). The only thing I didn't code in OS X is a project in C# .NET.

    Java on OS X is not a super thing, but it still work decently. It's a few version late, but work.

    Except some weird behavior on the lib name and linking path (work have a few twist to be done), C/C++ can be done easily. Here's a list of language I have use on OS X:
    - Bash
    - Perl
    - Python
    - C/C++ (take care of the lib vs framework like OpenGL)
    - openMP C/C++
    - Obj C/Cocoa
    - swipl
    - HTML / Javascript / PHP
    - Java (a few version later, but work)
    - Applescript
    - Automator is usefull

    all without real problem.
  5. HiRez macrumors 603


    Jan 6, 2004
    Western US
    When OS X and the Xcode developer tools came out, I was mostly using Java. Once I started programming in Cocoa, it became increasingly difficult and frustrating to do anything in Java (particularly anything UI-related), especially as the dev tools and Cocoa APIs evolved. For UI development, Cocoa is second to none of any environment I'm aware of.

    It's such an amazing API that, along with the culture of the Mac in general, tends to force programmers into creating beautiful, usable interfaces. Most Mac programmers become passionate about UI and crafting elegant applications no matter what it is, whereas many Windows programmers tend to have a "just get it done" attitude and slap some basic UI on as an afterthought. (Granted, this is a gross generalization, there are certainly some crappy Mac apps and some very nice Windows apps.)

    As Ti_Poussin mentions, there's just such an incredible choice of languages, APIs, and tools for development on the Mac. Even when I'm writing a Cocoa app, I will often make use of builltin UNIX functions, Python scripts, web services, or OpenGL. One downside I will mention is that there is really no server-side web engine related to Cocoa/Obj-C, such as Rails or Django (unless you count WebObjects, but for a number of reasons that doesn't really apply anymore).

    Even if you will be a Java developer, give Cocoa and Objective-C a try.
  6. Biolizard thread starter macrumors 6502

    May 20, 2008
    London, United Kingdom
    Thanks all for some really solid answers. Definitely leaning towards Apple now!
  7. Krevnik macrumors 68040


    Sep 8, 2003
    As programmer, I kinda "switched" the other way.

    In high school and college, I did all I could to be able to write code on the Mac, even though the courses were using Windows. This even included building a copy of GCC that could cross-compile for the embedded systems I was working on in college. My senior project had a desktop app running an OpenGL View and written in Objective-C. We were taking data from an embedded system and using it to drive events in the fake 3D world we setup. And of course, our Java classes were also all done on my Mac laptop.

    Now that I am out of college, I do C# code on Windows for a living. C# and Java are swell languages, but man, when I come home and have some random mini-project I want to work on, it is always done in Obj-C. The things at work that we are trying to do to improve our 'process' of writing code, Obj-C /helps/ me do. A big example is unit testing my object model. I spend far less time writing up unit tests for Obj-C code (thanks in part to OCMock) than I do for C#. But to be fair, my Obj-C projects aren't quite as large as my C# projects yet.
  8. Sayer macrumors 6502a


    Jan 4, 2002
    Austin, TX
    Even though I am a "Mac" developer at an Austin, TX software company I use a DELL laptop for a lot of the work. We use a variant of Eclipse for JSP development and deployment testing on Windoze (local apache/tomcat app server w/local oracle database).

    What I actually make is running on a Mac of various types and OS versions, but I do as much work on Windoze as the Mac. Most of the work is HTML/JavaScript targeting Safari to get the Mac stuff working properly both locally and off the JSP stuff.

    Being familiar with both is the best way to get a decent job. But specializing in one or the other is usually how it turns out in the real world.

Share This Page