Path: kernighan.cs.umass.edu!barrett From: judas@cs.auc.dk (Jens Kristian Jensen) Newsgroups: comp.sys.amiga.reviews Subject: REVIEW: StormC 2.0 programming environment Followup-To: comp.sys.amiga.programmer Date: 3 Apr 1997 22:52:14 GMT Organization: The Amiga Online Review Column - ed. Daniel Barrett Lines: 531 Sender: amiga-reviews@math.uh.edu (comp.sys.amiga.reviews moderator) Distribution: world Message-ID: <5i1cau$1u4@kernighan.cs.umass.edu> Reply-To: judas@cs.auc.dk (Jens Kristian Jensen) NNTP-Posting-Host: knots.cs.umass.edu Keywords: programmer, C, C++, commercial X-Review-Number: Volume 1997 Number 3 Originator: barrett@knots.cs.umass.edu PRODUCT NAME StormC 2.0 BRIEF DESCRIPTION Integrated developer environment (hereafter IDE) for AmigaDOS. Includes C/C++ compiler, assembler, debugger, editor (two, actually), linker, runtime-environment with resource tracking and a visual project manager/maker that integrates all the other programs. AUTHOR/COMPANY INFORMATION Name: HAAGE & PARTNER Computer GmbH Address: HAAGE & PARTNER Computer GmbH Mainzer Str. 10 A 61191 Rosbach Germany Telephone: +49 - 6007 - 93 00 50 FAX: +49 - 6007 - 75 43 E-mail: 100654.3133@compuserve.com Web: http://ourworld.compuserve.com/homepages/haage_partner/ LIST PRICE From the support home page: StormC (full version): 398 US$ (598 DM) StormC Update 1.x -> 2.0: 115 US$ (169 DM) StormC Upgrade (from any commercial programming language): 265 US$ (398 DM) StormC Starter: 169 US$ (248 DM) StormC Starter Bundle (with StormWIZARD 1.0): 198 US$ (298 DM) I paid 1795 DKr for an upgrade from SAS/C. DEMO VERSION Yes! Available on the support home page. The demo will only compile 10kB of code and link 20kB, but otherwise it is fully functional. The demo does not come with AmigaOS includes (because they're copyrighted), but you can get the full demo with includes from Haage & Partner for 30 DM or 20 US$. SPECIAL HARDWARE AND SOFTWARE REQUIREMENTS From the StormC 2.0 demo .guide file - Amiga with MC68020 CPU and a hard disk - Kickstart and Workbench 3.0 (v39) - 6 MB RAM - 10 MB hard disk space With this computer system you can start programming with StormC, but the project size is limited. Furthermore not all debugger features can be used. For this you need at least a 68030 CPU with MMU and more RAM. A really good configuration for StormC is the following: - Amiga with 68030 including MMU - Kickstart and Workbench 3.1 - 18 MB RAM - 60 MB hard disk space In my opinion this is overkill. I managed to get the demo of version 1.1 running on an A500+ with OS 2.0 and a total of 3.5MB Ram, and I could even compile HelloWorld! I don't know if they have changed the requirements for V2.0 but I guess they have a reason for stating so high requirements themselves. COPY PROTECTION None, installs on HD. MACHINE USED FOR TESTING A4000, 40Mb Fast RAM, 2 Mb chip Ram CyberStorm Mk. II 040/40MHz HD: Maxtor 7546 520MB Seagate 520MB Kickstart 39.29, DOpus 5.5 as workbench replacement. Ariadne Ethernet card C= 1960 monitor. INSTALLATION Installation procedure uses the standard Installer program. Installation went smoothly. PROJECT MANAGING A central part of StormC is the toolbar and the project windows. The toolbar consists of nine icons: Text(new/open/save), Project(new/open/save), make, run and debug. When creating a new project (or opening an existing), a project window opens. The project window contains the various files the project consists of (source codes, link libraries, executables etc.). All these files are ordered after filetype and you can fold a section of equal filetypes. The project windows also has a column for the size of the files (both as sourcefiles and as compiled .o files if it applies). It is also possible to include projects into projects to form huge projects of smaller ones. If you have multiple project windows open, the build/run/debug icons in the toolbar refers to the last active project window. For each project window, there's also an extensive setting section which allows you to configure the behaviour of the compiler/linker, runtime- environment and the like for each project. If a file in the project window is double clicked, the appropriate editor for the particular filetype is brought up if appropriate. You can of course also add (multiple) files, delete files/sections of file types and move files up and down in the hierarchy. EDITOR(S) StormC comes with two editors: StormEd, a nice, little editor not being complicated or requiring many resources and GoldEd 4 PRO, a shareware editor with almost every feature you can think of (and some, I bet, you haven't thought of!) GoldEd comes as full install archive with a keyfile registered to Haage & Partner. If you like, you can also send in the registration card and receive your personal GoldEd keyfile. I used StormEd in the demo of version 1.1, but I have used GoldEd all the time I have owned StormC 2.0 so I don't know if anything has changed in StormEd since V1.1. STORMED (From my knowledge with V1.1) StormEd is a brilliant little editor which hasn't got many configuration options or features, but still does exactly what you want (at least it does what I want). It features everything you can expect from a small editor, plus: -Syntax highlighting (colored text) -Smart indentation (context sensitive indentation) -Can be used as source-level debugger display (and to set breakpoints) -References. Context sensitive help with programming functions. GOLDED GoldEd is a standalone product far too complex to be covered in this review. I will, however, point out a few features/peculiarities of GoldEd. GoldEd does NOT work like regular Amiga editors like CygnusEd/Edge and the likes in its standard configuration. It is, however, possible to configure GoldEd so it matches what I like, except for the following: -The block handling cannot be exactly like Cygnus ed (the way I prefer) -Real TABs are not possible. GoldEd always expands TABs to spaces. This cannot be configured until Dietmar Eilert (the author of GoldEd) changes this, which he stubbornly seems to refuse (I cannot imagine that I am the only user who prefers it this way!) That said, GoldEd is full of configuration possibilities, and if you care to set up GoldEd yourself, you can have something that closely matches the way you see a perfect editor. For instance you can define what should happen when the user presses any key, or picks a menu item (the menu is of course also fully configurable). If you can live with the way the author seems to prefer an editor, you do not have to configure anything as there are several modes available for different filetypes (GoldEd is filetype sensitive) such as html, C/C++, LaTeX, plain text (with spell checking), .h files, assembler, e-mail and the like. GoldEd can do everything StormEd can (except for real TABs). Furthermore it has: -Folding. Can fold functions/blocks of text. -Automatic Phrase Completion. Finishes/spell checks phrases based on dictionary or context sensitive. -ToolBar. Nice icons for loading/compiling etc. -Quickfunc. Can scan/show list of functions in current source for easy overview and for finding/jumping to particular code. -API. Smart add on programs such as automatic showing matching brackets, showing return type/parameters for a function when placing the cursor over it, etc. -Macros. Both AREXX macros and simple recording/playing of sequences. -Templates. Automatically knowing what you mean when typing switch( for example. And a dozen of other features that you will like when you see it. GoldEd is integrated nicely with StormC. It is started from StormC if you doubleclick a source file in a project window (and have chosen to use GoldEd as editor) and it can even be used as source-level debugger. COMPILER When you have written your nice C/C++ program that the world can't be without, you usually want to compile it. With StormC's IDE this is done by pressing the make button (or the run or debug button if that's what you want to do after compiling). The make button calls first the C/C++ compiler and then the linker with the options for the current project. During compiling/linking, a window showing possible warnings/errors is present. If any errors occur, they become visible in a list view and you can doubleclick on the error to get to the line containing the error in the source. If the project was successfully compiled/linked, gadgets appear to allow you to run or debug the program. The compiler is a so called optimizing compiler, which (among many other things) means that it can generate smaller/faster code by using the processors registers instead of using the stack. The code generated by StormC is REALLY nice and optimized (you can watch it by telling the compiler to also generate assembler or by disassembling the generated code). The compiler can generate code optimized for 68000-68060 and a version for PowerPC processors is also on its way according to Haage & Partner. LINKER I haven't tested the linker's abilities that extensively, but so far it has linked anything (well, at least anything correct) that I have thrown at it. The linker includes all the standard options such as which startup code to link with and which memory to relocate to. Furthermore it includes some options I have never seen before like Optimizing (Fold common code, optimize for near code) and linking as ROM code. I could imagine the latter could be comfortable if you were generating absolute code for an embedded system or in fact any place where absolute code is needed. It should be mentioned, that both the compiler and the linker can be run like regular compilers from a shell if you for some reason don't want to use the IDE. ASSEMBLER If StormC stumbles upon any assembler sources while compiling a project, it calls an external assembler. StormC uses the freeware version of the assembler PhxAss, FreePhxAss. This free version does not support includes, macros and some other things, but otherwise it does its job. As of version 4.32, PhxAss has become freeware so you can fetch PhxAss yourself (from Aminet in dev/asm/PhxAss435.lha) and use the full version, which supports just about everything. RUNTIME-ENVIRONMENT When running a program from within the IDE, the program is 'embedded' to allow resource tracking and catching of exceptions. As long as the program is running, there is a window called StormShell present. From the StormShell window you can send signals to the program (CTRL-C, D, E and F), pause, kill and change the priority of the program. If you kill the program or it terminates itself, the StormShell informs you about resources that haven't been freed properly and it can free them for you if you wish. If the project has been compiled with the debug option on, you can also enter the debugger at any time while running the program. DEBUGGER StormC features a modern source-level debugger. Source-level means that when you debug a file, you can single-step trough each line of the source. In StormC, the progress in the source is shown in the editor while debugging. This means that when you start to debug, a bar appears over the first line of the source. When you press the "Singlestep" button, the line below the bar is executed and the bar is moved to the next line. If the next line is in another source code file, the source is loaded and displayed (if you chose to step into the function and not just have it executed silently). Besides the current line bar, the editor also gets a list of checkboxes at the left of the display - one checkbox for each executable line. These checkboxes are used to set breakpoints in the source. Instead of having to single-step trough each line to get to a certain source line, you can the add a breakpoint at the particular line by pressing the "Go to next breakpoint" button. There is also a "Go until function is left" button, which finishes the current function. The debug buttons appears in the StormShell window. Naturally you can also do the things you usually can from within the runtime-environment such as send control codes to the program, kill it, etc. All these functions are very common for debuggers today. What really makes StormC shine above everything else I have seen on the Amiga, is the Variable window. In this window, you can get a list of current variables (the variables that are within the scope of the current function) and global variables. For each variable you can see its value and its location (also if it is currently in a CPU register) but almost more important - you can see its type. Since the debugger knows the type of each variable (of course it does. It is a friend of the compiler which compiled the source) it can browse through the structure hierarchy (and classes if you use the C++mode). An example: You have a global variable called MyIntuiMsg, defined as "struct IntuiMessage *MyIntuiMsg". When you debug the source, you can see the variable in the list of global variables. It has the value 0x08751588 and is currently in register A1. "Hmm I wonder how the IntuiMessage structure that MyIntuiMsg points at looks like" you think, doubleclick at the variables name and voila! The variable window changes to show you the IntuiMessage structure. You can see that it consists of, among other things, a Message structure called ExecMessage. You want to inspect what the Message structure looks like, so you doubleclick the ExecMessage. A Message consists of a Node, a pointer to a MsgPort and UWORD called Length. You are curious again so you click the Node to see its contents. When you have seen enough, you can press the "Pop inspection stack" button to get a level up in the hierarchy or get to the root by selecting global/local variables. Get the picture? Apart from the StormShell and the Variable windows which automatically pops up when debugging, you can also get a the following windows: Modules - Shows which .o files the executable consists of. You can get an overview of functions for each module and see the source. History - Shows the history of the debugging session (Which lines have been run in which source and so forth.) Breakpoints - A list of breakpoints in all sources. It is possible to disable certain breakpoints and remove all breakpoints. Stack - See which parameters/functions are on the stack. You can see source and variables for each and set breakpoints at the end of functions. Hex editor - Simple Hex memory viewer/editor. Debugger - Shows the program as 68000 assembler. You can also have other memory locations disassembled. It is also possible to debug at at assembly level and set breakpoints for each instruction. PROFILER The last window (phew!) is a new function in version 2.0 - a built in profiler. With a profiler you are able to see how much time each function takes, how many times each function is called and so on. This makes you tune your programs because you can see where it is necessary to optimize. The profiler in StormC lets you see the percent time a certain functions has taken, the total, minimum and maximum time of the calls and the number of calls. The profile report can also be saved as ASCII. Very nice to have such a simple yet powerful tool built into the IDE! DOCUMENTATION The program comes with a single 200 pages written English manual describing the various parts. It does a pretty good job explaining everything including compiler options etc. but they could really need some proof-reading (They're Germans, remember ;-). Unfortunately the manual I received with the 2.0 version of the software was for version 1.1. Therefore most of the new functions were described in a .readme and a .guide file. I couldn't find information about the following and therefore had to figure it out myself: Documentation of ARexx commands. Information on how to link assembler with C. Haage&Partner promises that the manual will be updated with the next update of StormC! LIKES -The ease of having an IDE -GoldEd included instead of trying to making a perfect editor themselves (but StormEd included in case you don't like GoldEd). -The debugger/variable watcher system and its great integration with both editors. -Built-in profiler. -Quality of the generated code (speed/size). DISLIKES AND SUGGESTIONS Dislikes: -The price - although it is cheaper than an equivalent developer environment for other platforms. -Having to run a commodity just to start on its own screen. Suggestions: - Integration with a GUI builder program (and in my opinion it should not be StormWizard - why introduce yet another standard? Why not settle for MUI/MUIBuilder or ClassAct?). - Snapshot of windows for each project, and not just globally! - Debugging of tasks/libraries. - A register watch window would be nice when debugging at assembler level. - Improvement of the manual. - And a bunch of suggestions for GoldEd, but the StormC people are not to blame directly here so I'll skip it. - Faster e-mail response. COMPARISON TO OTHER SIMILAR PRODUCTS The only other development system on the Amiga that could probably match StormC is MaxonC, but as I have no experience with MaxonC (they don't even have a demo available) I cannot compare the two. I used to use SAS/C and IMHO StormC is far better (perhaps except for the compiler itself in plain C mode) If StormC was integrated with MUIBuilder or the like, we'd have something that started to look like Delphi or Visual(Something) for Windows. BUGS I have found a few bugs and have reported them to Haage & Partner: - When dragging a drawer into the project managing window (the one containing the icons) the StormC GUI doesn't respond to input anymore and the CPU goes at 100% - The supplied fd2pragma say "No FROM file given" - no matter what parameters I pass to it. I have be promised to receive a bugfixed version soon. - When double-clicking on a file from the project management window, GoldEd opens in StormC mode with C syntax parsing etc. no matter what type of file it is. (This is not actually a bug, but at least it should not work that way). - Sometimes the disassembler output text looks a bit garbled at the end of the line. This depends very much on which font you use. - I found a bug in the compiler when using the 1.1 demo (something with overloading the '+' operator for a fraction class in C++) and reported it to Haage&Partner. It has still not been corrected (or at least I get the same error) with my version 2.00.08 of the StormC compiler. Guess I'd better tell them again!? Furthermore I have read about some people on comp.sys.amiga.programmer who claim to have found bugs in the StormC compiler. I will not say that you have to worry about StormC generating faulty code, but obviously there are a few bugs to be fixed. Haage & Partner makes patches available on their home page. VENDOR SUPPORT I have contacted Haage & Partner quite a few times by e-mail and I must say that their response time varies very much from time to time. Usually they respond within a week, but most times it takes just a day or two. One time I experienced a three week reply time where I reposted my message three times, but I hope that was a mistake (At least they apologized politely)!. WARRANTY From the StormC 2.0 demo .guide file (1) The HAAGE & PARTNER COMPUTER GmbH guarantees, that up to the point in time of delivery the data carriers are physically free of material and manufacturing defects and the product can be used as described in the documentation. (2) Defects of the delivered product are removed by the supplier within a warranty period of six months from delivery. This happens through free replacement or in the form of an update, at the discretion of the supplier. (3) The HAAGE & PARTNER COMPUTER GmbH does not guarantee that the product is suitable for the task anticipated by the customer. The HAAGE & PARTNER COMPUTER GmbH does not take any responsibility for any damage that may be caused. (4) The user is aware that under the present state of technology it is not possible to manufacture faultless software. CONCLUSIONS The product is really a state of the art developer environment. Although it is not perfect it implements many developer features never seen on the Amiga before. My ratings look like this (five stars being the best possible): Environment: **** Compiler: **** GoldEd: **** Manual: *** Support: ** General rating: **** The manual is not that important to me, but the support could be better! If you need a professional developing environment for the Amiga, this product should be the first for you to investigate. Even if you are a hobbyist programmer and don't want to pay that much, I urge you to try the demo to see just how much money can buy :-) My hobbyist programming has certainly become easier and more productive since I got StormC. COPYRIGHT NOTICE I hereby grant permission to post this document on the USENET newsgroup comp.sys.amiga.reviews, storage at the reviews ftp site and Aminet, and distribution to the Amiga Web Directory at CUCUG. Haage & Partner may also include or quote the review on their home page without taking quotes out of their context. Commercial magazines may quote or include the review providing that the send me the issue in which the quote occurs (contact me at the e-mail address below). Otherwise this document remains copyrighted by the author. Copyright 1997 Jens Kristian Jensen. Comments are welcome at judas@cs.auc.dk --- Accepted and posted by Daniel Barrett, comp.sys.amiga.reviews moderator Send reviews to: amiga-reviews-submissions@math.uh.edu Request information: amiga-reviews-requests@math.uh.edu Moderator mail: amiga-reviews@math.uh.edu Anonymous ftp site: math.uh.edu, in /pub/Amiga/comp.sys.amiga.reviews Web site: ftp://math.uh.edu/pub/Amiga/comp.sys.amiga.reviews/index.html