Slashdot Mirror


CodeWarrior for Linux: Reviewed

Kurt has returned, continuing his reviews of Linux IDE [?] environments. After reviewing Code Fusion, he's reviewed Metrowerks CodeWarrior (for Suse). The full text of the review is below. CodeWarrior For SuSE
CodeWarrior for RedHat
  • Company:Metrowerks
  • Rating:9/10
  • Summary:Inexpensive solution for those looking for an IDE solution.

It is difficult to have worked in the tech industry without having come into contact with Metrowerks. Metrowerks CodeWarrior is the dominant compiler for MacOS, with ports to Windows, Solaris, a wide variety of microprocessors, and fairly recently, Linux. The current version of CodeWarrior for Linux, version 4.0, supports C and C++, with plans for Java support in late 1999. CodeWarrior is targeted at the beginning or hobbyist programmer. While CodeWarrior lacks some of the features of its more expensive competitors, it provides a basic, low cost solution.

CodeWarrior is by far the easiest installation I have ever performed on a Linux box. I threw in the CD, answered a couple of questions, and it installed it without a problem. While I already had EGCS installed on my machine, it is a prerequisite for installation. For those who do not have EGCS installed, the CD contains a copy and the installation guide includes instructions for setting it up.

Anyone who has used CodeWarrior on any other platform will be able to easily dive straight into CodeWarrior for Linux. The interface is exactly the same. For those without previous experience, the interface is logically laid out and very usable without depending on documentation. For those who have been weaned on Microsoft Visual Studio, the interface may feel a little MacOS-like, but overall everything is well designed and very easy to use.

In addition to the standard IDE features like integrated debugging, color coded source, and simplified project management, CodeWarrior has an important advantage in that its projects are cross platform compatible. Of course, it is still up to the programmer to develop cross platform code, it at least simplified the process of migrating code between plaforms.

In spite of all of its wonderful design elements, it is not without a few annoying elements. First, whenever you create a new project, it is always named "Hello." It doesn't matter if you create a project named "foo." You still need to go under the project settings and change the Target Name manually. While this may be simply picking nits, it is a rather annoying oversight.

While CodeWarrior is targeting to individuals and relatively small projects, even some of these people have learned the wonders of using a version control system to roll back a few idiotic changes. Unfortunately, the Linux port has very poor version control abilities. Straight out of the box, there is no source control functionality. Furthermore, Metrowerks does not provide any of the necessary plug-ins to add source control to the Linux version. According to a representative from Metrowerks, they have plans to provide the necessary interfaces, but no resources have yet been allocated to the project. The specification, however, is open so that anyone desiring could create the necessary plug-in. Anyone interested in developing the necessary plug-ins should go to http://www.metrowerks.com/pdf/Plugin_API_Ref.pdf.

CodeWarrior is a low cost solution ideal for Linux developers who absolutely have to have an IDE. For users who need a lot of the extra features that make the switch from vi to an IDE worth while, CodeWarrior is somewhat lacking. These developers may wish to look to Code Fusion or other similar products with a more complete set of tools.

For the small scale individual or hobbies programmer, CodeWarrior provides a friendly environment to develop programs in. While it lacks some of the more advanced features found in other IDEs, it is a well designed program with an excellent balance of features. For a mere fraction of the cost of many competitors' products, it also is well within the range of people who are on a tight budget.

20 of 76 comments (clear)

  1. Rad Features not Mentioned by tedd · · Score: 4

    I've been using CodeWarrior for Mac OS since 1994-5 and CW for WinNT since it became usable, which was basically CW Pro 2. I use it mainly for Java development, but also for Mac OS and Win32 C and C++ development, and sometimes for both together (native methods for Java apps). It's particularly nice for this since you can have all this stuff integrated with subprojects etc.

    Anyways, I haven't checked out the Linux version yet, but I imagine (as with the port to Win32) that it will suck for the first version or so, then will get really good. And it will be great, since there several features I absolutely cannot live without!

    1. Source Browser

    Holy shit. This thing rocks! Turn on browse info for your project. It does not make it take 15 times longer to build (like DevStudio). Now, in addition to syntax coloring, you may choose to have whatever color you like for

    • Classes
    • Enums
    • Globals
    • Templates
    • Constants
    • Functions
    • Macros
    • and Typedefs
    Now for the rad part. Right click on a class name. You get a popup with four items
    • Go to Class Declaration
    • Open Browser for Class
    • Open Hierarchy for Class
    • Go to Member Function Definition ->
    The first one opens the source file that the class is declared in, scrolled to the location you last closed it in. The second one opens a "Browser" window for the class (more on this later). The third one opens a graph in a big scrolling window that shows little boxes for each class with lines drawn to indcate the class hierarchy. And the fourth one (so rad) open a popup menu right there with every method (and parameter types for each). If you select one (many times I just want to look; "what's that overloaded method signature?") it open the source file the method's in scrolled to the top of the comment directly preceeding that method.

    The "Browser" window (which will be familiar to Smalltalk developers) has three panes: "Member Functions," "Data Members," and "Source." The first two are scrolling boxes with method signatures and data members with little icons to denote if they're static or not. There are checkboxes at the top of the window that allow you to enable display (in any combination) of "Inherited," "Public," "Protected," and "Private" members. Like filters. Click on a member, and the Source pane shows only that member (with it's preceeding comment). You can have any number of these windows open at once.

    Now the really nifty part. Let's say you're developing in Java. Why not take the Java source code (for the java.* packages themselves), put them in a project, and build it with browser info? Now use it in a subproject in your projects (only have to build it once).

    Boom. No more need for paper docs or that crappy html that gets generated from the JavaDoc, baby, you got the source! Want to see a concise list of the methods? Open a browser to the String class. Or that pesky java.net.SocketImplFactory. Or just right click on it to get the method list. And it's fast. I imagine you could do the same thing with Qt or gtk or gdk.

    Ok one more thing about hte browser. Now, instead of right-clicking on a class name, right click on a method. You get a popup list of all the classes the implement that method, and another option, "Find all implementations of XXX." This is particularly cool if you use a lot of polymorphism, because let's say you have an abstract server class, and many implementations and you're making a new one, and you want to compare the others. Select the "Find all implementations..." item, and a Browser window appears (like the other one for a class) loaded with all the methods that implement that signature, so you can just flip through them in one window. Rad.

    2. Function popup.

    It's weird. Whay can't anybody else get this right? The M$ tools in particular are awful about this. When you open a source file, theres a little button in the window frame that is a drop-down menu listing every method in the file. Works with Java inner-classes too. You pick a method, it scrolls to it. Simple. DevStudio makes you type in the name of the method or in the J++ tool puts them in this crappy tree control that takes up tons of screen space.

    Anyhow, I'm not employed by them, I just think people can code a shitload faster with this stuff, especially if it's done with all the subtleties that Metrowerks puts into it.

    Cheers,

    tedd


    --
    .:.
    :tedd

  2. Other packages have those too... by Keeper · · Score: 2

    "Source Browser"

    For what it's worth, Visual Studio 5 and above offer similar functionality (works similar to one of the old tree-based "explorer" windows [not internet explorer...]). I agree, it is a VERY nice feature.

    Version 6 also offers some really nice things in the editor. Say you have this code...

    int hello(CString bla)
    { return bla.tolower();
    }

    When you type the "." in the bla.tolower() line, a listbox will pop up showing all of the members present in bla. Very handy if you don't remember exactly how to spell a function. If you're just looking for a function, or wonder what it does, you can click on one of the functions in the list and it will display the comment lines above the function (also very handy if you're just piddling around).

    You can also "finish" the statement by hitting tab or starting a parenthesis (similar to hitting tab on the shells which do similar things for filenames).

    When you type the "(" of the function, it will show you the function definition(s), which allows you to see what variables need to go where (which is also handy for the nasty windoze functions which require something like 30 parameters or whatnot).

    For Linux development, it is probably one of the best packages available.

    My 2c

  3. Differences between Linux Codewarrior and Mac/Win by swdunlop · · Score: 2

    The Linux version of Codewarrior doesn't provide its own compiler, instead it depends on EGCS. In theory, you can cross-compile if you set up EGCS correctly. Therefore, with a modicum of tweaking it should be possible to compile for PalmOS, for example. (A traditional stronghold for Metrowerks.)

    Since they didn't include their own libraries or compiler, you lose CodeWarrior's usual ability to create cross-platform GUI apps. This, coupled with the lack of a revision control interface implies that Metrowerks has decided to aim this newest incarnation at recreational programmers like myself who are familiar with using GNU tools for Linux development who would prefer using the excellent CodeWarrior IDE. (Slant warning: I've been a big fan of Codewarrior for some time and prefer it to the Visual Interdev suite. They even managed to convince me to abandon my venerable Borland C++ IDE, which is no mean feat since I cut my teeth on Turbo Pascal 3.0.)

    According to Metrowerks' documentation, the reason CodeWarrior for Linux doesn't do its own debugging is tied to the fact that EGCS doesn't provide sufficient symbolic information to drive their debugger. I don't find Metrowerks' decision to rely on third party debuggers especially bad, since there are several good OpenSource debuggers for Linux.

    I am curious, however, how easy it would be to extend Codewarrior for Linux with support for new target hosts and other, non-C/C++ programming languages.

  4. Integrated debugging ??? by hugui · · Score: 2

    Last time that I heard of, the "debug" portion of the IDE was accomplished by launching DDD ( an excellent debugger by the way ); I don't count that as "integrated debugger". In fact, after exchanging a couple of e-mails with s Metrowerks technician, and finding that there wasn't even a symbol browser or reference cross-indexing, I decided not to purchase it.
    Have they finally at least integrate a debugger ?

    And last: what the hell are these ads about "girls eating scorpions" doing in Slashdot. Rob, I though that you were *still* in control. What's next, porn ads ?

  5. Cool by Darchmare · · Score: 2

    >the interface may feel a little MacOS-like, but
    >overall everything is well designed and very easy
    >to use.

    Seems kind of redundant to me. :>

    Seriously though, Codewarrior for the MacOS rocks. Give it some time, as the first version for the Mac was a little anemic to begin with - in the last few years, it has definately come around.

    Metrowerks really saved Apple way back when - the transition from 68k to PPC wouldn't have been nearly as transparent as it was if it weren't for them.

    - Darchmare
    - Axis Mutatis, http://www.axismutatis.net

    --

    - Jeff
    1. Re:Cool by Eccles · · Score: 2

      Seriously though, Codewarrior for the MacOS rocks.

      The one thing I most dislike about CodeWarrior for Macs is that the .mcp files are binary, which doesn't work well in a multi-programmer environment. (You can't make independent changes and merge them together, like you can with a makefile or MSDev's .dsp/.dsw files, nor can you parse what changes were made.) Is it too much to hope that the Linux version does not suffer from this?

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    2. Re:Cool by TheGS · · Score: 2

      From my experience of CodeWarrior Pro 5.2 on Mac: While the .mcp format for CodeWarrior IDE 4.0.x looks like it's still binary, the IDE does allow import and export of an XML project file.
      The project file exporting options include exporting to an importable XML file (it includes the DTD!) or a simple file list. Either format can be diffed and compared by a human much more easily than the binary.

    3. Re:Cool by dair · · Score: 2
      I've been thinking about getting the Linux version. Anyone tried it with LinuxPPC?
      Unfortunately, there is no LinuxPPC version - it's x86 only at the moment.

      -dair
  6. some quick notes.. by mcc · · Score: 2

    as a mac codewarrior user, i just have a couple small notes.
    the whole thing with the popup menu letting you jump to functions or wherever you put a #pragma mark seems like a small feature, but you get addicted to it quickly..

    also, it has (at least on mac) an FTP postlinker which will allow you to develop, say, a windows program in mac codewarrior, and every time it compiles simply dump the compiled file via ftp onto a windows machine on the network for running.. is this something common for IDEs?

    and the mac version seems to have come with Playstation development tools.. does the linux version? :) if you don't have java though i guess you wouldn't have PSX.

    codewarrior also has the most amazing multiple-file find/replace capabilities i've ever seen.. but then again that wouldn't apply on linux, since you people have grep and awk and such things.

    maybe not important. but if anyone's interested.. codewarrior's pretty nice..

    1. Re:some quick notes.. by Millennium · · Score: 2

      You got PSX tools? I didn't get any PSX tools (then again, I also have the Academic version).

      Did you hear, by the way, that Metrowerks is also doing the compilers for PSX2, Nintendo 64 (I would guess that they'll have Dolphin as well), and Dreamcast?

  7. Integrated Development Environment? by Nicolas+MONNET · · Score: 2

    Yeah, but integrated with what? Do they support KDE/Gnome? Can I D&D from a gmc window, etc ... ?

    Their compilers, as I've used them a while ago on Mac are good, but their main force is that they seem to be (used to be at least) a company that listens to their customers. Hey, can you imagine that? You can actually REQUEST a functionality and expect it to be present in the next releases!

    Not open source by far, but with them you don't usually endure the usual pain of closed source software.

  8. Re:It looks good by Millennium · · Score: 3

    There are two versions of CodeWarrior for Linux planned, however. The one reviewed here appears to be the GNU edition, which uses the Open-Source compilers. There is also a "Professional Edition," set to come out later this year, which I think will provide its own compiler. Being an avid CodeWarrior user on MacOS, I can't wait to see how the Pro edition comes out.

    I just wish it would run on LinuxPPC...

  9. Re:It looks good by Kurt · · Score: 5

    Metrowerks itself has not been very clear about the the target audience for CodeWarrior. My initial review for the product actually trashed them a little bit for lacking some of the features of their competitors. After doing some fact checking to confirm that these features were in fact lacking, they sent me the following information stating that this release is targetted towards individuals.

    "CodeWarrior for Red Hat or SuSE Linux, GNU Edition is targeted at individual programmers experimenting with the Linux OS and looking to either adapt their previously learned platforms to Linux or those who are programming novices. The GNU Edition blends CodeWarrior's powerful project manager, editor, and search engines with the familiar code generation and debugging tools found in GNU/EGCS technology, thus achieving a seamless transition for newcomers to the Linux OS. In fact, Metrowerks' overall goal in creating the GNU Edition was to create an entry path for newcomers to the Linux OS that is palatable and easy to implement. As an added incentive, we have priced this entry-level edition at $99.00 anticipated street price, a price much below what would be paid for our CodeWarrior Professional Edition. Metrowerks does not presume that commercial-grade applications will be the primary reason users will employ CodeWarrior for Red Hat or SuSE Linux, GNU Edition for their projects. The GNU Editions have been developed to help make the transition to the Linux OS a smooth ride for the programming community.

    "CodeWarrior for Linux, Professional Edition, to be released later this year, is intended for the more seasoned programmer and will be used primarily in industry. The Professional Edition is a comprehensive set of development tools featuring the CodeWarrior IDE encompassing Metrowerks' blazing fast compilers and integrated debuggers. With this edition, programmers can create applications for C, C++, and Java with unparalleled ease, increasing productivity and getting their products to market faster."

    Hopefully this clarifies their position.

  10. Re:This reminds me of something... by Mars+Saxman · · Score: 2

    You've found a good CVS client for Mac? Please share! I want to hear about it.

    I do CVS on my Mac by mounting an AFP share from my Linux box, copying the source tree back and forth, and then using cvs on the Linux box. It's lots easier than struggling with that piece of crap "MacCVS Pro" Netscape released...

    -Mars

  11. Re:For RedHat?, For SUSE? by swdunlop · · Score: 2

    In the commercial software world, if you state a requirement, you are expected to back it up. If Metrowerks says 'Linux 2.0.x+' and doesn't declare which libc they require, or GNOME and KDE version, which X11 they need, etc., they will invariably have a horde of screaming users asking for a refund. It is easier for their product development team to just say 'We will support SuSE up to and beyond version , and RedHat up to and beyond version ', and be done with the matter.

    This makes life a LOT easier for their QA department to isolate testbeds for alpha testing since they don't have to simulate each and every possible environment. Metrowerks has always had a reputation of being people who test their products exhaustively and provide excellent support to their users.

    That being said, I have installed CodeWarrior for SuSE on my virgin Caldera OpenLinux 2.3 workstation and it worked. Beautifully. The install script doesn't even bother checking whether I'm running SuSE or not, it merely assumes I'm literate enough to read the box and must know what I'm doing.

  12. Re:C++ Compiling by Dionysus · · Score: 2

    You're right, there are no alternative for gcc on UNIX if you want to follow the ISO C++ standard. Heck, the $1000 Sun Workshop compiler doesn't even handle namespaces at all, not to mention some of the more fundemental classes, like string. Still, VisualC++ has had support for string and wstring classes at least from v5. And even though their STL implementation is all wrong, and they add some extensions to the language, at least, you can write almost proper standard C++. How far away are we from a ISO C++ compliant compiler, anyway? Months, quarters, years?

    --
    Je ne parle pas francais.
  13. Re:Um, conflict of interest? Slashdot CW banner ad by Kurt · · Score: 2

    Just FYI: I have no monetary gain in doing these reviews... I only get the opportunity to play with a bunch of software for a while in exchange for a review...

  14. Why not just add a front-end for CVS? by Get+Behind+the+Mule · · Score: 2

    If CodeWarrior needs better source conrol in the IDE, why don't they just integrate it with CVS? CVS is an excellent package, and Metrowerks doesn't need to re-invent the wheel. And CVS has established itself as first choice for open source projects -- on some projects, there's no other way to participate in code development. If Metrowerks makes you work with something else, it'll just cause headaches.

    With emacs, interaction with CVS is no problem. And speaking of emacs, is there any compelling reason why I should get the CodeWarrior for Linux and quit using emacs? Don't get me wrong, I'm familiar with CW on MacOS and I know it's very good. But so is emacs, and I don't see why I should abandon one for the other on Unix.

    1. Re:Why not just add a front-end for CVS? by Kurt · · Score: 2

      The version control system theoretically can tie into CVS. The necessary software is not yet written, but the necessary APIs are published on their web site at www.metrowerks.com/desktop/versi on_control/.

      Apparently at one point in time, Metrwerks was working on such support, but the project went nowhere. The rep that I asked played the "Blame it on the intern" card. :)

  15. This reminds me of something... by Millennium · · Score: 2

    Anyone know of a good MacOS CVS server? I'm running an Open-Source project for MacOS and I'd rather not go through the trouble of BinHexing files if it can possibly be avoided. I know something is out there because Mozilla uses CVS, but its MacOS CVS builds aren't BinHexed and the resource forks still come out fine.

    The current CVS offerings I see for MacOS all do CVS clients quite well, but I don't see anything that looks like a server. Perhaps I'm just not looking in the right place. I'll do a Linux server if need be, but I just need something that'll do good CVS for a MacOS-based project.