Contents

  1. REALbasic feature sets gathered from the REALbasic web site http://www.realbasic.com or direct observation.
     
  2. Revolution feature sets gathered from the Revolution web site http://www.runrev.com or direct observation.
     
  3. A comparison of the development of several projects in both C and TCL, listing effort ratios as high as 60, is at http://dev.scriptics.com/doc/scripting.html.
     
  4. http://www.webopedia.com/TERM/f/fourth_generation_language.html
     
  5. http://webopedia.internet.com/TERM/R/Rapid_Application_Development.html
     
  6. http://www.apple.com/hypercard/ is the HyperCard home page.
     
  7. http://www.perl.org/press/history.html is a history of Perl.
     
  8. http://msdn.microsoft.com/vbasic/bday/default.asp is a history of Visual Basic.
     
  9. http://www.sun.com/java/ is Sun's home page for Java.
     
  10. http://www.salon.com/tech/col/garf/2001/01/08/bad_java/
     
  11. The section of this white paper on the development of the example application provides details on a problem of this kind.
     
  12. Those interested in object-oriented development and willing to put in a little more effort in exchange for a more standard development environment might be better suited to one of the more traditional languages/environments: CodeWarrior, Cocoa/Objective C, or Java. Each presents a graphical application design environment that is similar to Revolution and REALbasic, with a syntax and structure that is similar to REALbasic's: dot-notation syntax, strict typing, encapsulation, inheritance, etc.
     
  13. The REALbasic Developer's Guide says:
    If you have [used] traditional programming languages, you already know that the process of development is three steps: write some code, compile the code..., and test your application. ... Developing software applications with REALbasic isn't much different than that [emphasis added]. The big difference is how often you go through this process. ... REALbasic's compiler is so fast that you will find you can make a small change to your code and immediately run it to make sure the change you made works as expected.
     
  14. From the release notes, it appears that versions 3.1 and 3.2 of REALbasic had a combined 14 separate public beta releases over a period of roughly four months.
     
  15. As one example, Revolution has two separate events for when a field loses focus: one if the field has been changed, another if the field has not been changed. REALbasic has only one event, leaving it to the developer to determine whether the field contents have been changed.
     
  16. REALbasic uses the native delimiters on each platform. Revolution uses the forward slash on all platforms, and translates as appropriate.
     
  17. http://www.webopedia.com/TERM/f/fourth_generation_language.html
     
  18. For a detailed comparison, see http://home.pacbell.net/ouster/scripting.html.
     
  19. Timers are set to fire in terms of milliseconds. The delay can be set as low as one millisecond, or even zero, offering a theoretical firing rate of a thousand times a second, or as many times as possible, but that doesn’t mean that the timer will actually fire that fast. The upper limit is sixty times per second on Mac OS systems, and one hundred times per second on Windows systems. The timer could have been set to process more than one file each time it fired, but this would add complexity and impact the user experience when processing files on slow servers. The granularity of Revolution’s delayed messages is limited only by the speed of the system.
     
  20. One code window per application window or object. So in the example project, three code windows are actually possible: one for the main window, one for the splash screen, and one for the thread class used for processing. Unfortunately, most often the need is not to display multiple code windows for disparate parts of an application, but to display code windows for two related items in one part of the application - two methods of the thread class, for example - and this cannot be done.
     
  21. In REALbasic, each window has exactly one display, and there is no differentiation provided for the developer. If two separate displays are needed, the developer must manually develop both displays on top of one another, and then programmatically make one or the other invisible at runtime. An alternative is to use tab panels, which are good for simple switches. In Revolution, the developer can have as many separate displays in a window as he or she likes. Revolution maintains the screens independently, displaying them to the developer on command. At runtime, switching from one display to another takes a single line of code and can call on numerous visual effects.
     
  22. REALbasic checks code for errors only when a project is run. Revolution checks code for errors whenever a code window is closed, or while the code window is open if it is applied back to its object. Compile errors are found sooner, making them easier to fix.
     
  23. Revolution code can be built up programmatically and then executed. The code within a project can be redefined at runtime.
     
  24. Revolution automatically types variables according to the data stored in them, relieving the developer the burden of declaring the types of variables and procedure arguments.
     
  25. Revolution allows procedures and functions to be called with fewer arguments than were defined for them. Likewise, a procedure or function can count the arguments passed and access them by number, allowing an extensible number of arguments.
     
  26. In Revolution, any control can be created (or deleted) at runtime, either based on another control or from scratch. Code for any object can be assigned at runtime as well
     
  27. A Revolution application can, at runtime, integrate into itself another Revolution project, or an external piece of code.
     
  28. Revolution has several features that, for limited (roughly 5,000 records or less) data sets can very easily be used as a database.
     
  29. In Revolution, radio buttons are grouped through the use of actual group objects. This is more flexible, since it allows the radio buttons to be in any position in the interface - although good practice generally indicates placing them together.
     
  30. For most purposes, the canvas control is usable. However, it is not ideal.
     
  31. The test was performed on a Macintosh PowerBook G3 400. Files were local. Default settings were used for both applications. The directories contained 5,740 files, of which 1,499 matched the default file extensions and were scanned.
     
  32. The test was performed on a Windows 2000 PC. Files were local. Default settings were used for both applications. The directories contained 5,040 files, of which 1,623 matched the default file extensions and were scanned.
     
  33. The test was performed on Linux Redhat 6.2 on a 233 MHz processor with 64MB RAM. Files were local. Default settings were used. The directories contained 12475 files, of which 5778 matched the default file extensions and were scanned.
     
  34. The test was performed on a Windows 2000 PC against a remote server directory. Default settings were used for both applications. The directories contained 8720 files, of which 2880 matched the default file extensions and were scanned.
     
  35. The test was performed on a Windows 2000 PC against a remote directory on a very slow server. Default settings were used for both applications, except that the read limit was set to 3,000 bytes. The REALbasic application quit with a nil object exception after examining 36,234 files and processing 6,078. There was no obvious explanation for the crash. The Revolution application completed the task, examining 145,480 files and processing 37,510. Response times from the server were exceptionally slow, leading to the long run time for the Revolution application, and perhaps the crash for the REALbasic application. Performance was virtually identical until the crash.

 

Previous

Revolution and REALbasic: A Comparison