CodeWarrior for Linux: Reviewed
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.
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
--
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...
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.