REAL BASIC’s offer

In case you haven’t seen, REAL BASIC is offering their standard edition for free to VB6 developers.

Brendon Chase contacted me last week to get my opinion on this… You can see his write up here.

Personally I find REAL BASIC interesting, it has some “unique” approaches. There are also many things I don’t like such as the IDE which provides only single method view, although somewhat mitigate by the fact you can have multiple code views open at once.. Still the sense of a code document seems lost. Their proprietary binary code format I also find a nuisance. But probably the biggest thing I dislike is their lack of true properties. (note some at RealBASIC will refer to fields as properties, but if you are form the VB6 world you know these are two different things)

The lack of true properties in REAL BASIC, means simple things such as having a component say a grid control with multiple columns just don’t work nicely at design time, such as it can’t display to you 3 columns when you set the column count to 3, because you can only set fields, not true properties, so no action can occur.

This lack of properties also means you are probably going to hate what happens when you try to upgrade any VB6 code to REAL BASIC. I know I certainly did.

So I think if you are looking at REAL BASIC, you need to view it as an alternative, NOT a replacement. If your goal is to upgrade existing VB6 code, upgrading to VB.NET is a lot easier and a lot closer to your original code than REAL BASIC provides.

What REAL BASIC does offer though is some unique approaches, some interesting flexibility in the way they allow types to be extended, the promise of greater cross platform compatibility, and possibly a greater commitment to not abandon their customers (although one can only assume there, that was a feeling I got from discussion I had with Geoff).

So if you are a VB6 developer, you may want to look at REAL BASIC, but do not expect it to be a upgrade path, rather view it as an alternative path. Personally, I think more developers will go with REAL BASIC purely because they are just so pissed with the way Microsoft has treated them, and I can fully understand that. Myself, well I’ll be holding off to see what their next version brings .. Pretty safe to say it would have to have a lot of improvements for me to be “REAL”ly interested, especially the inclusion of true property’s.

5 Comments so far

  1.   Jonathan Johnson on April 7th, 2005          

    I wouldn’t say that REALbasic doesn’t have true properties, but I agree it doesn’t have the Property block you’re used to (although I do suggest filing a feature request for that if you’re interested in that feature). However, you can "fake" a property by using a cool language feature called "assigns". For example:

    Class MyGrid

    Sub ColumnCount( assigns newCount as Integer )

    // blah blah, use NewCount somehow smile

    End Sub

    End Class

    dim foo as new MyGrid

    foo.ColumnCount = 4

    The method "ColumnCount" will be called in the above code. Using this, you probably can get similar behavior to the property block by creating a pair of methods like such:

    Class MyGrid

    private dim mColumnCount as Integer

    Sub ColumnCount( assigns newCount as Integer )

    // blah blah, use NewCount somehow smile

    mColumnCount = newCount

    End Sub

    Function ColumnCount() as Integer

    return mColumnCount

    End Function

    End Class

    Hope this helps,


  2.   Bill McCarthy on April 7th, 2005          

    Hi Jon,

    I was already aware of assigns. Not a huge fan of it though as it feels to me like a hack/workaround. You end up resorting to method calls, yet in code that calls them this is not apparent. And of course we still haven’t fixed the very issue I mentioned, that is a grid at desing time. You cannot set an assigns method in the properties window, so at design time no action can take place.

  3.   Duane Hennessy on April 7th, 2005          

    I moved to REALBasic from VB6 and a massive dose of VBA. REALBasic rocks as a programming language. It took some getting used to the IDE but I prefer it to the all encompassing SUB FUNCTION module view used in VB IDEs. If you want to view more than one Method (Sub Routine, Function) in the same window you can split the IDE’s window panes to show you the methods you choose. I’ve only ever had to use that functionality on a few occasions myself.

    If you don’t like the binary format of the project you can export the project to XML and make the project external. (I think this is right?)

    Assigns isn’t really a hack but a real handy function for programming. For example, if I wanted to use a Windows API I’d simply extend the window object and assign a property value…

    Sub PutWindowOnTop (Extends w as Window, Assigns Position as Integer)

    Then as I type the window object into my IDE this method appears as one of the methods for that window object in the intellisense drop down;

    myWindow.PutWindowOnTop = SW_TOPMOST

    This saves me Inheriting from the window object and adding a new method then changing the parent class for all of my windows in my application to use my new window object. Yuck! What’s more is a whole series of functions in a single module that Extends the Window class can be made external and can be used by all of my projects, I never have to remember the methods and go hunting for them again.

    Look, I think REALBasic is brilliant and I program in quite a few diverse languages other than the ones I make a living from (stated above). It is different but the major advantages are the cross-platform ability. I can sell an application to a wider market than just a windows based one.

    REALBasics ability to compile the application to a number of "Human" languages in one hit is also a bonus. I can send a spreadsheet of menu-captions, button captions and so on off to a translation service, they can fill out the spreadsheet with the menu-item names in the foreign languages I want and then send it back. I simply import the spreadsheet and voila, I have hit a global market providing the application to other countries, translated into their own languages on three different platforms all in one compilation. That is brilliant! 🙂 What’s more, all the librarys and functions needed by the application are compiled into it so there will not be missing library issues like with VB6 or having to install frameworks like .NET.

  4.   Bill McCarthy on April 7th, 2005          

    Hey Duane,

    The extends feature you may have noticed was one that I said I liked and Brendon quoted me on that smile

    But rather than code such as :

    Sub PutWindowOnTop (Extends w as Window, Assigns Position as Integer)

    I would expect that to be more like:

    Public Property Let Position() As PositionEnum Extends w As Window

    In RB’s version of it, the method appears to declare two parameters but in practice the method is never called passing in parameters. So I view it as an inconsistency.

    Functionally, assigns, is not equivalent to a property. There are real differences there, not just design time. I know when I first looked at RB, I did a simple test, psuedo code follows:

    Class IBase ‘VB6 abstract base class

    Public Property Name As String

    End Class

    Class Derived

    Implements IBase

    Property IBase_Name As String

    End Class

    Totally failed in trying to upgrade to realbasic. And this is the exact kind of pain VB6 people can expect if trying to upgrade.

    so the point I was and am making is that RealBASIC is not a replacement for VB6. IT’s an alternative, but it won’t address the problems of upgradign your VB6 code. In fact the path to VB.ENT is a lot easier. And for Vb6 people, I think they will find the VB.ENT syntax a lot more familiar.

    That’s not saying RealBASIC is bad, it’s just not an upgrade path from VB6. The current marketing around the demise of support for VB6 might make people think otherwise.

    I think if people want to look at REalBASIC, they really do need to look at it as a different language, not an upgrade. I do think RB has some cool features.

    I totally disagree with you as to the editing experience. I’d much rather have a pre document view any day. And to go with that, I’d much rather have single documents. Exporting to xml just doesn’t cut it. And although I didn’t try it, I’d imagine RealBASIC would have real isues when trying to use it with a source code versioning repositry (something akin to source safe or vault etc).

    That being said, I will be keeping an eye out for changes in RealBASIC in the future. I think if they address these and other issues as have been raised with Geoff, then he’ll have a great product.

  5.   Duane on April 11th, 2005          


    I’d agree that RB is a different language, it does seem to have elements more akin to other languages than VB on occasion.

    I must admit I tried importing a VB6 project and couldn’t be bothered with the changes that needed to be made manually, it was easier to write out project again, but then it was someone else’s VB6 project which I was unfamiliar with so I guess some people find it handy, I didn’t on that occasion.

    Porting the code across can be painful in any language though I guess 🙂

    RB’s move to windows has been fairly recent which is when I got into it and it was a Mac development tool before that, developed from CoolBasic I think, anyhow it derived from Australia (I forgot the developer’s name) I think Geoff was his partner for a while and then bought him out and changed the name to REALBasic. For a history on it’s beginnings for anyone interested all you need do is download the PDF Sampler from and the story on RB’s birth is in an article in there.

    RB isn’t really an upgrade path but a lateral shift to a different development environment for delivery of cross-platform compilations from a single source. All they need do now to make it more awesome is to compile Java byte-code files aswell. Geoff was asking RB Developers about their experiences porting code to RB a while back and one of the languages he mentioned was Java. Did he mention any of this during your interview with him? I’m wondering where they are heading with it.