CocoaDev

Edit AllPages

A rapid development environment, similar to Visual Basic, published by REALSoftware. It is available at realbasic.com.

*My comments from experienced C++ cross-platform developer, pertinent to the current shipping (5.5) RB version towards end of this page - AndyDent *

Not as rapid as Cocoa. (Actually, it’s more rapid than Cocoa for simple projects, but it becomes unwieldy with large scale projects. I learned how to program the Mac with REALBasic and then recently swithed to Cocoa (which I like much more). However, RB is easier for some simple things, and it’s nice to have built in support for things like regular expressions).

Perhaps because of its ease of use, notorious for facilitating the production of horrible apps by inexperienced and/or clueless developers, many of them reviewed at http://www.perversiontracker.com/

Anyone want to compete with me to attempt to get an app listed on peversion first?

I thought their last nominee iPong was actually pretty cool (only the paddle and ball graphics could have been done better). Who can account for taste (mine included)?

Programming with RealBasic is like bowling with the bumpers up.

No, I don’t think it’s like that at all. It’s more like buying a kiddie bowling set at home, and playing with it. Things in realbasic just don’t work… if it had some interface builder cooperation, I think it’d be worth using.

I second that, i used to program using Visual Basic on the PC, interface builder is really good, that with the coding language of REALBasic would be REALLY good! Each language has it’s positive’s and it’s negatives, REALBasic just has more negatives, REALBasic has a stupid UI editor, and is too “classicish” needs to learn from OSX and is too “carbonised” needs to be written in xCode!

I don’t think there’s anything particularly wrong with REALBasic per se. It’s a good language. I think it has suffered from two major problems, however: feature bloat and over simplicity. The REALSoftware team has tried to add too much too fast to a language that is still a BASIC at heart, creating a horrible mish-mash that produces executables 12x larger than they need to be. Also, because they oversimplified REALBasic so much, many people who don’t really know anything about proper development produce quick apps with it that come out shoddily. It is perfectly possible to write a good and useful program in REALBasic. It has earned its reputation, however, because most people don’t. –OwenAnderson

I second that.

So what it comes down to, perhaps, is that they made programming simple where they should have been making total design simple? That was my experience with RB, more or less. – RobRix

The main problem with REALbasic is that it is incredibly buggy, and I have issues with the people at REAL Software and their attitude. – FinlayDobbie (Yes, I agree, it is definitely full of bugs. When new versions come out, they tend to add new features rather than fixing the already existing bugs! Doh!)

Actually, REALbasic has a few things over cocoa. You can build windows executables, for example. While we all love our macs, some of us may want to distribute to other platforms. Unfortunately, REALbasic’s apps are barely true-carbon. If you make a metal window with it, it won’t be dragable properly. You can do a lot with RB, and it’s a good language, which I’ll use for some things, but unfortunately, it’s not good enough.

REALbasic is good for simple, small projects, but nothing commerial or shareware at all. Once you start to get complicated in your app, it just fails left and right. I had been using REALbasic for a while and got to know the language very well, wrote many many apps (most just fun things) but I switched to Cocoa a while back since it is so much more stable and expandable and freakin’ awesome. – KevinWojniak

Once they work out the kinks, RB will be really good. I like some things about RB, and hate others. –CharlieMiller

“Once they work out the kinks” has unfortunately been repeated for years now. I cannot now think of any situation I would use RealBasic over Cocoa in at the moment, although that’s biased by the familiarity with Cocoa I’ve been developing since before the PB came out. – RobRix

I said once they work out the kinks, but it’s true, it’s likely they will never work them out. You should give it a try though… it’s better than most cocoa developers think. I’d rather use RB than do standard carbon and/or windows programming… that just frightens me. –CharlieMiller

I think there’s no disagreement over this fact: REALbasic is a hell of a lot easier for a beginner to learn and use than Cocoa. I agree with RobRix - RB is 5 years old now and it’s still awfully buggy. I learned to program on REALbasic, and just recently I’ve started moving over to Cocoa. I believe that my RB ability helped me a lot here - I had only to learn ObjC syntax (took an hour) and I was already past the beginner stage. Going back to what I said at the beginning - RB is easier for beginners to pick up - that’s both good and bad at the same time, as many people have remarked. Some people can do great things with RB, others just churn out electronic turds. But there’s no denying it’s a good learning experience. –OwenYamauchi

Good programmer + REALbasic = good program. Good programmer + Cocoa = good program. Bad programmer + anything = bad program.

One problem I had with REALbasic (besides some annoying bugs) was, that it’s basically a closed environment. It’s somewhat difficult to include foreign code. And whenever Apple changes the APIs you have to wait for the folks at RealSoftware to update REALbasic. With Cocoa this is so much better … Always up to date, no problems including C, C++, Java, …

Well, REALbasic does have plugins. (One thing I would like to do now that I know C is write plugins, but you need CodeWarrior - which I won’t buy.) Also, the built-in system for Declare statements is very convenient. I’ve programmed a lot of the custom RB code I release using Declares. I will concede that Cocoa is better integrated with the OS. The only major RB feature I’m going to miss is the ability to compile for 3 platforms (soon to be 4) from the same source code. –OwenYamauchi

(Insert standard rant about OPENSTEP/YellowBox’s lost multiplatform support, to the point of being able to ship one .app package that ran on all of them.)

Ok, sit down for my loooong story… When I first used RB i thought “Gee, this is so weird”, and learned to like it, cause it was the only software I knew how to use and that could create real executable software. I began programming because of Macromedia’s Flash, it’s langiage is very good, based on Java and mainly JavaScript, which is very easy to learn. So I got tired of making little Flash playing graphical stuff and decided to make REAL software. A friend told me “you should get Real Basic”, and I did. I wrote my two apps in two months (a great text editor and a remote control for iTunes and Quicktime). But eventually, I got so tired of the bugs and the fact that all apps created with RB are extremelly large (a 400k Cocoa app becomes over 2MB with RealBasic), and that they were all Carbon (version 4.5) that I’ve just stopped programming until I got a fast Internet Connection and downloaded DevTools from Apple. Finally I’m starting to see why people talk so much about Cocoa, and why Mac OS X has over 5000 applications in pure Cocoa (or based on it) today. – Fernando Santos aka Nando

That’s what’s happening to me, I believe. Except right now my computer’s in the shop. As for the huge compiled apps, that was something that repelled me, too. I think it’s a consequence of the cross-platform compilation thing. I’m on the RB Network User Group mailing list, and recently there was a big, heated discussion: should the RS folks concentrate on introducing glitzy new features (like compiling for Linux) or fixing bugs? The RS folks were adamant: new features were more important, unlike the all-bug-fixes release that someone requested. That’s their problem: not enough importance is placed on bug fixes. It’s losing them customers. Well, one, at least… me. –OwenYamauchi

Oh. So the discussion about bug fixing is still going on? That’s funny, because we had that same discussion a few years ago. That was when I decided that I didn’t want to work around RB’s bugs any more and … you know the story. :) –AndreasMayer

Whenever REALSoftware announces a new release of REALbasic, the bug fixing discussion occurs, as do other recurring discussions (text encodings, :)). The problem is that the company has to introduce new features in order to attract new customers, and keep old ones upgrading. At the same time, they need to fix bugs, in order to not have much worse software. So, they must strike a balance between the two, and everytime they announce new features, everyone vents their opinions to everyone on the lists, including most of the people that have no interest in listening to them. Apple, on the other hand is in a very different situation, because they don’t charge for Cocoa and the developer tools, allowing them to focus more on bugs. They also have many more resources. They have access to the APIs before they are released to the public (before developer seeds), and simply have huge programming resources, much more than REALSoftware will ever be able to afford.

And the ‘REAL has to choose between adding features and fixing bugs’ apology always follows hard on the heels of the bug fixing discussion. So when do the bugs get fixed? I used RB from F4 (pre 1.0) until about 4.5 and just got so fed up with the constant bugs on top of bugs on top of forced upgrades for fixes of last year’s bugs and broken promises that I jumped to Cocoa as soon as the beta dev tools were relased and haven’t looked back. RB version 1.0 was advertised as compiling for Mac, Windows and Java - it looks like they’ve finally gotten Windows targets working acceptably ~5 years later. Read RobRix’s comment about making design simpler - probably the majority of bugs I’ve encountered with the few RB apps I’ve tryed has been due to uninitialized preference items. Adding an API to the defaults database would fix that, but no, REAL would rather compile for Linux instead. Whatever.

Lets not forget… REALBasic PRO costs $399.95… REALBasic Standard costs $99.95, XCode is FREE!!! Also, REALBasic Upgrades cost $169.95 and $79.95 respectively… XCode updates are FREE!!! –FreedomDumlao

XCode also doesn’t compile for four platforms simultaneously.


I’d rather compile software that people will use. I’d rather compile for one platform that I care about than 3 I don’t. I’d rather compile software that people on the platform I care about won’t trash instantly (because they’re using the one platform where they haven’t been forced to acclimate to software that sucks.) I’d rather not get laughed off the face of the earth by Linux users for thinking they’d use something written in BASIC. I’d rather not get bug reports from Windoze users.

RealBasic is good for what BASIC has always been good for: enabling non-programmers to solve simple programming problems on their own without having to become a programmer. Unfortunately, too many feel the need to inflict their ‘solutions’ on the world at large and, in some cases, expect to profit from it.


Free as in beer. Someone pays for them.

‘Someone’ == Apple. Because Apple uses those tools to develop the very OS they run on, the applications that ship with the OS, the iApps… essentially everything they do. That’s a big guarantee of continued support & improvement. And even if Apple goes away, my code is in plain text files, compiled with a (mostly) standard compiler, in a standard language. It wouldn’t be difficult to port it to GNUStep or whatever arises to replace Cocoa. RB is a closed environment by a small company that could vanish at any time.


It would be 100x easier to port an RB app to VB then a Cocoa app to GNUstep or any other language/API. RB came from VB. Cocoa came from…. NeXTSTEP? Microsoft’s not going away anytime soon, but REAL… who knows what’ll happen to them.


The discussion on RB vs. Cocoa all boils down to one thing: your coding perspective. From the perspective of RB programmers, and their needs, REALbasic is the better environment and framework, and Cocoa does not meet their needs. From the perspective of Cocoa programmers, and their needs, XCode/Cocoa is the better environment and framework, and RB does not meet their needs. A member of each group will be convinced that their perspective is correct and that the other group is composed of idiots.

That’s it. Let’s end the argument now. ;-)
ScottSteinman

(BTW, I’m both a Cocoa and RB programmer. They are both excellent tools for their own purposes. So there!)


I’m sorry, but such equivocation is what a hanging curve is to Barry Bonds. Apologies if you are overseas and would rather talk about Thierry Henry or something. Don’t know the matching metaphor. Henry does not, however, need the goalkeeper to be flat on his face in order to score, or shall I say, trying to play on both ends of the field at the same time.

*Aaaaaahhhhh. **Programmer**-centered software, rather than user-centered software. An idea whose time has come 'round again.*Just try to make the smallest, most efficient piece of software using RB, AOTBE, of course. The alternative here is not a command line tool written in C. Just so we are comparing apples. Heh. IF you want to code quickly for multiple platforms, RB sounds hard to beat. Let's just be precise about defining an "excellent tool" for specified purposes. There is such a thing as an "excellent purpose" as well. Perhaps seen in a certain golden gleaming light, "multiple platforms" qualifies as an excellent purpose. ---- Programming exclusively for elegance can get kind of programmer-centered, too. ---- Moved here from XCodeTooMuchLikeATextEditorII and I pointed to this entry at the top because I didn't want people starting to read this page and getting put off by the FUD. The history of RB is of a one-man (Andrew Barry) product being enhanced and a market built until they could afford to rewrite the compiler. You have to qualify a lot of people's buggy ideas with the version number they discuss. I'm far from being a newbie but I've become very impressed by REALbasic. RB ships with probably the cleanest cross-platform app framework I've seen in 12 years as a c++ developer and now includes a Linux version. The only thing I've seen that comes remotely close in terms of also providing drawing and in-window event portability is wxWidgets (nee wxWindows). I marketed a PowerPlant portability solution for some time but we used native code for graphics. I've also done enough stuff in Cocoa and Objective-C to be objective :-) Yes, the RB application framework doesn't have an inbuilt document model and people can be sloppy about MVC if they want. (Nothing stops you adding a document model and there's at least one free example on the net.) The compiler is included in the running application so you can deliver scripting in a sandbox without it being slow (you are responsible for the interfaces you expose, see http://www.oofile.com.au/downloads.html#DownloadREALbasic for an example). The language is particularly interesting. After you get over it being based on BASIC, realise RB 5.5 has: * operator overloading including the equivalent of operator= and the ability to write RHS operators for arithmetic, eg operator_AddRight, but with a safer version of construction overloading that avoids many of the c++ issues * Java-like interfaces * the equivalent of Objective-C class categories ('extends' on the first param to a method) * an in-language solution to the perennial problem of how to attach bits of code to event handling per-window without writing new classes all the time (events) * strict typing required - you do have to declare all variables (although as a frequent Python developer this is no longer the big deal it used to be for me) * reference-counted memory management (JoelOnSoftware's point about not having to worry about memory management) which I find much less stressful than Objective-C retain/release logic. It just works! * overriding of method lookup via operator_lookup so you can add unknown method handling (call this Objective-C, Smalltalk or Python-style message catching if you like - it's very cleanly done) * scope control for global constants, functions and variables equivalent to a c++ namespace (but not nesting namespaces) AndyDent ---- I used RealBasic for about 8 weeks, and worked on three projects with it. The smaller projects went well -- I developed on the Mac and deployed on the PC, without major issues. For the larger project, I eventually had to give up. The core problem was severe weaknesses in some of RealBasic's widgets. The related problem was that the applications produced do not really feel "native" on either platform, which can be a real issue. In particular a bug in the EditText widget meant that the application had horrible, unacceptable flicker on Windows. So, though I enjoyed working with it, I cannot recommend it for mid-to-large scale cross-platform applications. MatthewChristensen ---- I used RB for about a year and I couldn't agree more with Matthew. It's nice for hacks (I wrote a small lil app to make windows on Windows dodge the mouse cure in about 30 minutes) and other small stuff, but I wouldn't use it for stuff that would be released. REALbasic does have one major advantage to most other languages though -> it's cross platform with fairly native widgtes. I prefer Python's syntax myself. -- SirG3 ---- RealSoftware is disputing Microsoft's application for a patent on the use of an 'is not' operator in Basic languages [http://www.eweek.com/article2/0,1759,1766949,00.asp?kc=EWRSS03119TX1K0000594] Real's CEO Geoff Perlmann is quoted as saying * "We can't predict what Microsoft would do, but they are afraid of Linux and are afraid of the ability we give developers to port applications to Linux." * The fact that RB also happens to build Mac applications is mentioned exactly once in the article. Once RB gained Linux as a target platform, it stopped being a way to make x-platform Mac/PC apps, and started being a way to port VB apps to Linux, with the Mac thrown in as long as it doesn't require any extra work. ---- I used to develop all my software using RealBASIC. Thanks to Real Software for making it because it taught me how to create applications when I was only 13 years old. I've known Cocoa for over 2 years now and I don't think I could ever go back to BASIC. Things are just a lot more logical with Apple developer tools and I love the freedom I have. Oh and I've seen the newer alphas of RealBASIC and it is totally crap. I wish they would just fix up what they already have instead of always trying to do something drastically different. REAL Software you just need to think WWAD (What Would Apple Do). Do you really think Apple would change how Xcode and Interface Builder worked every OS update. Of course not, people are used to the software they use now, and if there is a drastic update than things are usually drastically better. - MarkDavis *what's different about it? i'll wager 'crap' == 'more windows-esque** **== is commutative -- you could just as easily say 'more windows-esque' == 'crap' :)** ---- Now I've gotten more seriously into learning Cocoa (before, it was just a sort of experiment). I've been what I think qualifies as a REALbasic expert for years, so I feel I'm in a position to make a good comparison between the two. What REALbasic is good for: cross-platform compilation, and quick-and-dirty projects. Recently, I had to batch-rename a bunch of files. I fired up RB and within ten minutes I was done. With Cocoa, it would have taken longer. I didn't even consider firing up XCode. RB is also good for networking. The prefab sockets (for HTTP and such) make it pathetically easy to get on the Internet. As many people here have mentioned, it's also extremely easy to learn, being BASIC and all. It combines the simplicity of BASIC and the power of OOP very well. It is the best execution of such a combination on the market today (it beats the hell out of VB, that's for sure). What's bad about RB? As somebody mentioned, it doesn't really feel native on any platform. Cocoa apps are as native as you can get, plus the interfaces of Cocoa apps are naturally beautiful because they were designed in an IDE made by the people who made the OS. It doesn't get any better. RB is sadly lacking in native OS X controls. Did you know you can't even make a round-thumb slider in RB? I actually had to roll my own (and give it to other people) when I needed one. RB apps running on Windows often look like what they are: Mac apps compiled for Windows. Windows XP in particular has its own distinctive look, which is of course nowhere near as attractive as OS X, but it's there all the same. RB also has a bad reputation. Because it's so easy to learn, you get people who've never programmed or designed before churning out apps, which generally tend to be crap. This bad reputation bleeds over to all RB-made apps, even those that are good (and there are plenty of those as well). At least with Cocoa, the learning curve is steep enough that only people who are serious about programming can get into it. Other things? RB creates huge executable files. Minor gripe, but it annoys me anyway. RB doesn't strictly enforce the OOP, MVC paradigm. This is good in some cases, bad in others. It's good when you just want to get some code down fast without having to bother making it fit the paradigm, but bad since it can let large-scale projects get into huge messes. Cocoa is massively extensible (beyond the huge amounts of stuff it comes pre-packaged with). RB is extensible too, but with less ease (the dreaded plugins come to mind). Both environments have awesome documentation. Not enough praises can be sung about Cocoa's, and RB's, documentation. Seriously, we're lucky - believe me, I've had to work with VB and Microsoft's documentation. Not fun at all. I think I've opined here enough. If anybody wants help making the transition from RB to Cocoa, drop me a line. My transition is almost finished, and I'd like to help guide people through the tough parts. OwenYamauchi *Shell scripts are much better for batch-renaming, btw.* bleh. don't write shell scripts anymore - use perl or python. *Oh, heheh... Sorry, yeah, I don't differentiate between perl and shell in my head O.o* What's wrong with shell scripts? I routinely use shell scripts to handle lots of things. I see no reason not to use them. I also use perl and python, but they are used for different types of scripts. When stringing together CLI applications, shell scripts are, for me, a lot of like applescripts are for GUI applications: simply invaluable. ---- Owen brings up a good point about the extensibility of RB & Cocoa. Most Cocoa 'extensions' are free and open source. Many are under BSD-style licenses, so you can use them in shareware or commercial apps. That's the Cocoa culture. The RealBasic culture seems to be to make extensions as closed source plugins and sell them. This is, of course, on top of what you're paying Real Software for RB in the first place. ---- Even since I wrote that rant, I've discovered a few things. Networking, for instance. What I was specifically referring to is getting stuff off the Net, like checking email or web. I talked about the ridiculous ease of that in RB, not knowing about NSString's stringWithContentsOfURL: method, which I've got to say is even more ridiculously easy. I mean, come on. One line of code to do what in RB (before version 5) took about fifty? Heh. Since I finally got over the initial learning curve of Cocoa, I've never looked back. The only reason I've opened RB is to get the code out of a project I wrote in RB, so I can convert it to Cocoa. Regarding extensibility: there are quite a few extensions available open-source. Most of these tend to be classes and modules, though; not plugins. That means that they tend to be time-saving extensions rather than ability-extending extensions, if you catch my drift. Since the classes are still native RB code, that means they can't extend the capabilities of RB beyond what they normally are. Plugins can, and they're nearly always closed-source. All classes can really do is save a developer some time. I have to say that whoever brought up this point is right in that RB's culture is more commerce-oriented that Cocoa's, most likely because of their different historical origins. --OwenYamauchi ---- Hi, now ADC have this http://developer.apple.com/business/macmarket/electronicbluebook.html article praising REALbasic. Check it out ! ----sdsdsdsdsdsdsdsd I'be just checked the REAL software site after nearly a year of not using REALbasic, but Cocoa instead and found this article there http://www.realbasic.com/news/pr/2006/cocoa/. Looks like they're trying to attract some of the old customers back who moved to Cocoa. On November 27, 2007, I downloaded the latest RB 2007 release 5, and I have to say after several hours of playing with it I am still impressed, it looks slick and runs nice on Leopard (OS X 10.5). It is so much like VisualBasic 5 though. Including the inability to view a complete source code "unit" all at once. After hearing (and agreeing with others) complaints that XCode is a glorified text editor, imagine the irony when I found myself wishing you could use RB 2007 more like it was just a text editor. Nevertheless, for a true "drop a button on, and add an event handler and click run" experience, it's a lot easier to move from Delphi or VB to RB, than to Cocoa. I suspect that all the folks above who point out the learning curve of Cocoa is worth it, are right. It's funny, but just like a chess piece forcing a move, while being safe from attack itself, ironically, the fact that RB is a slick tool ends up being the reason I'm going to just go ahead and invest the time to learn Cocoa, rather than try to find a RAD experience (like VB or Delphi) on the Mac. --WarrenP