XCode vs. REAL Studio Mac development

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
  • Free IDE – no cost to develop code.
  • Heavily supported by Apple, which uses it to create the OS and all (?) apps.
  • Creates apps with a consistent Mac interface. All Mac interface elements available.
  • Used by the vast majority of Mac programmers.
  • All application support is built into the default frameworks.
  • Easy to use.
  • Cross-platform (both IDE and targets).
  • Easy-to-use framework includes almost everything you need.
  • Friendly IDE makes RAD development easy. Shallow learning curve.
  • Friendly and accessible vendor, user forums and mailing lists.
  • IDE is built using the latest version of the product (“eating their own dogfood”), which helps identify and fix bugs in a timely fashion.
Disadvantages
  • Complex and arcane language takes some getting used to.
  • Huge and complex frameworks make development quite difficult at first.
  • Complex IDE.
  • Very steep learning curve.
  • Anything that isn’t bog-standard Apple means stepping off a narrow path into a vast swamp of code.
  • Apps run only on Mac OS or iPhone/iPad.
  • Expensive.
  • Vendor is relatively small, and a lot of bugs can make development a challenge, although recent versions have been better.
  • Cross-platform framework takes a least common denominator approach. Pretty darn well, but if you’re only coding for a single platform, you’re going to be using a lot of awkward platform-specific code.
  • No application framework. You have to make your own from scratch (or look at third-party solutions).
  • Large executables.
  • Code is not particularly optimised (although is improving) and seems sluggish on all platforms.
  • Limited third-party add-on market.
  • Doesn’t compile .NET Windows apps, which seems to be the way the MS wind is blowing.

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.