RealBasic 2005 for Mac, Windows and Linux
Cross-platform development nirvana?
There's a context-sensitive toolbar immediately above the panes. Clicking on the New Method button, say, allows you to enter the method's name, the list of values it will receive when called and what it will send back, and the instructions it will work through, all in the code pane.
Above the toolbar are tabs to quickly move from one application window to another. RB always conceptually structured an application as a Project containing one or more windows and one or more menu bars, and that's maintained in this release. Moving to the Project tab and double-clicking on a menu bar bring brings up a virtual menu bar, which you switch between Windows, Mac OS X, classic Mac OS and Linux flavours. The context-sensitive toolbar lets you quickly assemble menus and menu items, with names and keyboard shortcuts set in the Properties pane.
Hop back to the appropriate window's code view and you can enter the code that's executed when each menu is selected by the user. RB makes a bold stab at coping with each OS' differences in menu style - the Mac OS' single menu bar to Windows' and Linux's one-menu-per-window approach - but handling OS X's application menu to add anything other than a Preferences... item is kludgey. That's surprising given how long RB has been running under OS X and its Mac heritage. It supports Aqua's other additions to the Mac UI, including sheets windows, customisable toolbars and its brushed metal look.
RealSoftware has progressively stripped out more and more of the code generic to all blocks of instructions so you can focus on writing the unique stuff. RB not only performs the usual syntax colouring and auto-indentation common in modern development environments, but also draws lines to connect the components of if... else... end if and for... next statements to make it easier to see what's in the block and what isn't - particularly useful if you got lots of nested code.
I mentioned methods and properties a moment ago, and yes, RB is object-oriented. There's an App class from which the MenuBar and Window classes devolve, and you can add your own classes and sub-classes, too, along with Modules, which are essentially global, window-less classes. The cunning thing is to provide the power of object-orientation without forcing tricky-to-master methodologies on the user. Objects are created without going through a formal instantiation, and all their methods and properties can be accessed directly without the need to use separate 'accessor' routines to get and set parameters.
OO purists might object to this, but again it's about making the programming process more accessible and not imposing someone else coding philosophy on everyone. If you want to write accessor methods, go right ahead.
In that sense, RealBasic is very like the Basic of old, a language I learned on a Commodore Pet in the early 1980s. It's changed a lot since then, dropping line numbers but gaining object-orientation and some borrowings from C, such as Select... Case... statements. However, the fundamental instruction set and syntax remains - though variables are no longer inherently global, and the Dim statement is used to declare all the variables a method uses rather than simply mark out the span of an array.
With objects and commands mixed, there's a lot for the novice to pick up, but RB provides a handy pop-up, example-packed language reference guide that's perfect for pinning down control parameters and sussing out syntax. RB's had this for some time, but the new release displays it browser-fashion, for easier navigation. It's jam-packed with code examples.
RB also comes with a 560-odd page PDF manual, tutorial files and a Quick Start guide. They're worth a peek: I spent ages trying to figure out how use AppleEvents to get my application to fire up my browser and call up a specific web page, something that obviously won't work in the Windows version, only to discover RB already has a ShowURL command... Odd, but there's no reference to it in the User Guide only the Quick Start manual... ahem.
The manuals also show a Mac bias, despite the profusion of Windows screengrabs. RB is cross-platform, so running the Mac release doesn't limit you to producing Mac applications - you can compile Win32 and Linux versions of your software too. RealSoftware does provide Windows and, now, Linux versions of the software, both of which will likewise generate versions of your app for other platforms. However, it remains best to develop code for platform A on platform A, such are the differences between them. With no runtime licensing issues, you're free to offer your apps commercially, or offer the code you've written under the GPL.