Though I've ended up spending more time this weekend reading than coding, I've done enough with REALbasic to know it's not nearly as mature as Visual Basic is on Windows.

Of course this is no surprise. Microsoft has a larger budget, related projects that can share components and development (eg, in VB 6.0, VB apparently share VC++ 6.0's compiler), VB's been around for many more years, and, of course, more users depend on VB for mission-critical applications. It's worse than David vs. Goliath.

But the reasons don't matter when you're a coder. Right now Apple's Java implementation is head and shoulders above REALbasic when it comes to maturity (of course Apple works with Sun to make sure it's all up to spec, but that's another story). REALbasic simply leaves me feeling a little put out.

Here are a few examples:

How to use arrays of dynamically changing size (from the built-in docs):
If you're using 3.0 or later, dim the array for -1 elements. You can
then grow the array dynamically with gHeadingNames.Append or
.Insert(arrayPos As Integer) method of the array.


To me that sounds like a hack.

Some of the example code (in this case for opening a file):
Dim folder, file As FolderItem

Dim path As String
Dim fileReadFrom As TextInputStream
If TargetMacOS then
folder=PreferencesFolder
path=folder.AbsolutePath+"MyAppPrefs"
file=GetFolderItem(path)
If file <> Nil then
fileReadFrom=file.OpenAsTextFile
EditField1.text=fileReadFrom.ReadLine
fileReadFrom.Close
End if
End if


To me, that snippet is less than impressive. "fileReadFrom"? "path"? Not exactly the best var names. When you give users sample code, remember that it's going to be used word-for-word by more programmers than you can count. Make sure it's the best (VB isn't always perfect on this one, either, of course)

There are also fewer built-in functions than I'd expect. Very few string manipulation functions, for example -- it's missing a Split(strToSplit, strDelimiter) function, for example. It wouldn't be hard to add that to REALbasic's default toolbox. And adding a function like this manually to each project isn't very easy either... Each object has its own little layout treeview with a spot separate from Control event handlers for your methods, and each method is essentially stored in its own file. Neither does the IDE in OS X allow you to have two projects open at once. These two together makes it hard to cut and paste (aka, "share") code.*

REALbasic also has some trouble in OS X with what seem like very simple tasks. I tried a simple for loop, i = 1 to 300, with each time through adding one line to an EditField (the VB "RichTextBox" and "textBox" equivalent in one). After about 30 iterations it would take a second or two to add each line, and the app was taking over 60% of my processor and 60+ megs of RAM (according to the "top" command)!!! This was a test program to check and see what was causing horrible performance in the app I was writing, and I was somewhat relieved to see that it wasn't the Shell object's fault. At the same time I was a little scared to see simple GUIs take up 60 megs of RAM. I've since found a workaround (simple enough -- only refreshing the GUI after every 30 lines or so seems to make the app happy), but this just isn't a good sign.

Perhaps I'm a little too picky, and I could most certainly be missing some settings in the IDE -- I am a newbie after all. For instance, back up at (*), I'm pretty sure I can use some drag and drop to make a reusuable module sit on my desktop that I can then drag and drop into other projects. But to a coder who likes vim, this isn't exactly the best solution. Just b/c Mac apps generally have a very advanced GUI for the one-button mouse users doesn't mean that's best for its programmers (or is it?).

REALbasic is certainly the Mac's answer to Visual Basic, it's nowhere near as mature a technology, I'm afraid. Hopefully I'll have a solid block of time to play with it more in the near future (as opposed to hacking on the couch while watching movies).