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.

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.

{ 3 }

Comments

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
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.

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 …