Last week I completed a class in Mac Cocoa programming. Currently the vast majority of my programming is done in REAL Studio (recently renamed from REALbasic because of the negative “basic” connotations). The Cocoa programming course was an eye-opening experience, and totally non-trivial. In this posting I’d like to air my views and compare the two ways of programming the Mac, emphasising the differences. Next week I start on iPhone/iPad programming which promises to be just as eye-opening.
Apple XCode
|
REAL Studio
|
|
Price | Free. Downloadable from the Apple Developer web site. | $99 – $995 (with annual updates from $49 to $495) |
IDE Platform | Runs only on Apple Mac OS X. Typically requires the latest version of the OS. Requires a few GB of hard disk and 2GB RAM. Compilers are largely based on GCC, LLVM, etc. | Can run on Mac OS X, Windows, Linux X86 (take your pick). Typically requires about 0.5 GB hard disk and at least 2GB of RAM. The Pro versions can build software for all three platforms and remote debug on those platforms. |
Target Platforms | Mac OS X, iPhone/iPad. Using 3rd party or open source compilers you can compile to other targets, but this is not heavily supported by Apple. Compiles and builds GUI apps, command line apps, libraries, and anything else you can think of for Mac OS X. | Mac OS X (Carbon, with Cocoa very soon), Windows (XP and beyond) 32-bit, Linux X86 32-bit. Rumours of iPhone/iPad in the future. Compiles and builds GUI and command line applications. No libraries can be built (yet). Unlike some flavours of BASIC, source code is compiled down to native code. |
Language/s | Objective-C (for the most part). This is a C-preprocessor that appears to be a mutant cross between C and SmallTalk (and is a superset of C). Initially intimidating, it’s a lot less arcane than C++, and has some interesting features that are cunningly useful and scary at the same time. | REALbasic. An easy to use and read language that is strongly object-oriented, with many modern features (interfaces, operator overloading, delegates, computed properties, etc.) |
IDE | XCode is your typical source files/ make files/ linker environment, similar to others such as Eclipse. A gazillion options and settings. I’ve never seen anything so complex. Interface Builder is a separate application for constructing the GUI parts. | REAL Studio is a very easy-to-use IDE. All your code (typically) resides in a single project file. The IDE uses a tabbed window interface, similar to a typical modern browser, to edit and debug the code. Very few options/settings. A good thing. Can be extended by third-party plugins (C++ based). |
Frameworks | Several mind-bogglingly complex frameworks, such as Cocoa, Core Foundation, Core Data, etc. The majority of these are part of the OS, which makes for small and efficient compiled executables. The frameworks include all support for typical multi-document apps, such as preferences, standard menus, undo, etc. You can literally create a fully-functional (sic) app without having to write any code. | A relatively easy-to-grok cross-platform framework, relatively well-documented. This makes cross-platform apps just a matter of building the same source code to different platforms (with some platform-dependent tweaking where necessary). Since the framework needs to be cross-platform, it is (effectively) compiled into each executable, which makes even a Hello World app several MB in size. |
Advantages |
|
|
Disadvantages |
|
|
So what’s the bottom line? I’m not sure. If I was programming for both Mac and Windows (and/or Linux), XCode isn’t an option (for the Windows part, anyway). Programming only for the Mac makes for more of a difficult choice. REAL Studio is a lot easier, but you lose out on a lot of the Mac-specific goodies that only XCode can access.
Dan Kuchta | 28-Mar-10 at 3:11 pm | Permalink
Nice comparison. I’ll be interested to hear what you think 6 months or a year down the road. Often times a course can make things seem easier than they really are because they steer you in the directions where the product is designed to work best. When you start writing your own apps, it may be different. Or course, writing iPhone apps should be a bit easier than full blown Mac apps, because there’s a lot less going on in the environment.
-Dan
admin | 28-Mar-10 at 4:01 pm | Permalink
@Dan
I’m banking on it becoming easier. However, it doesn’t make it any less intimidating compared to other development environments I’ve used in the past. My all-time favourite was Delphi, which was oh-so-sweet, but sadly Windows-only. I’m also banking on iPhone apps being easier to write, but only because functionality is restricted. I’m sure I’ll be more concerned about design, memory and user-interface issues, esp. to get past the Apple Police. Presently I’m agog at learning a whole new way of doing stuff. And suffering.
Dan Kuchta | 29-Mar-10 at 10:04 am | Permalink
Sadly (maybe?) I’m going in the opposite direction. I used to be a Mac developer back in the days of MPW, Lightspeed C, and Code Warrior. I then graduated to the ranks of non-productive labor (management :).
I really miss programming but I’d like to do stuff I can sell on multiple platforms and not need a team of developers to create, maintain, and QA. So I’m starting to learn Real Studio. Even though it’s very accessible, I’m still finding I don’t have enough time to devote to it. Just too many things going on in life. Maybe when I retire …
-Dan