home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaDemoCD2.iso / ASCII / TEXTE / c.s.a.reviews / software / programmer / DICE3.0 < prev    next >
Encoding:
Internet Message Format  |  1994-06-02  |  21.1 KB

  1. Path: news.uh.edu!barrett
  2. From: alien@acheron.amigans.gen.nz (Ross Smith)
  3. Newsgroups: comp.sys.amiga.reviews
  4. Subject: REVIEW: DICE C compiler, version 3.0
  5. Followup-To: comp.sys.amiga.programmer
  6. Date: 13 May 1994 18:29:44 GMT
  7. Organization: The Amiga Online Review Column - ed. Daniel Barrett
  8. Lines: 462
  9. Sender: amiga-reviews@math.uh.edu (comp.sys.amiga.reviews moderator)
  10. Distribution: world
  11. Message-ID: <2r0guo$da0@masala.cc.uh.edu>
  12. Reply-To: alien@acheron.amigans.gen.nz (Ross Smith)
  13. NNTP-Posting-Host: karazm.math.uh.edu
  14. Keywords: programming, C, compiler, commercial
  15. Originator: barrett@karazm.math.uh.edu
  16.  
  17.  
  18. PRODUCT NAME
  19.  
  20.     DICE 3.0
  21.  
  22.  
  23. BRIEF DESCRIPTION
  24.  
  25.     C compiler and integrated development environment for the Amiga.
  26.  
  27.  
  28. AUTHOR/COMPANY INFORMATION
  29.  
  30.     Name:        Obvious Implementations Corporation
  31.     Address:    PO Box 4487
  32.             Cary, NC 27519-4487
  33.             USA
  34.     Telephone:    (800) 761-2042
  35.     E-mail:        info@oic.com
  36.  
  37.  
  38. LIST PRICE
  39.  
  40.     Standard purchase price:                  $150.00 (US)
  41.     Student price:                            $95.00 (US)
  42.     For SAS C owners:                         $95.00 (US)
  43.     For registered owners of DICE shareware:  $75.00 (US)
  44.  
  45.     Currently, DICE 3.0 is available directly from OIC only; it is not
  46. distributed through any other source.  It can be ordered by mail from the
  47. address above or by calling the 800 number if you have a Visa card.  (Never
  48. send your credit card number to anyone by email!  There are too many people
  49. who could read it along the way.)
  50.  
  51.     The shareware version of DICE is no longer available.  See below
  52. concerning the freeware version.
  53.  
  54.  
  55. SPECIAL HARDWARE AND SOFTWARE REQUIREMENTS
  56.  
  57.     HARDWARE
  58.  
  59.         Requires 1 MB RAM.
  60.         (DICE 3.0 uses 1.5 to 8 MB; see "Installation").
  61.         Hard drive recommended but not required.
  62.         No CPU restrictions.
  63.  
  64.     SOFTWARE
  65.  
  66.         Requires AmigaDOS 1.3 or better.
  67.         Works fine under AmigaDOS version 2 and 3.
  68.         A few features require AmigaDOS 2.0 or better.
  69.  
  70.  
  71. COPY PROTECTION
  72.  
  73.     None.
  74.  
  75.  
  76. MACHINE USED FOR TESTING
  77.  
  78.     Model:             Amiga 2000HD
  79.     Processors:        25 MHz 68030 CPU, 68882 FPU
  80.     Chipset:           PAL ECS
  81.     RAM:               5 MB (1 MB Chip, 4 MB Fast)
  82.     Hard drive:        Quantum 50 MB internal SCSI
  83.     Floppy drive:      One internal 880K
  84.     Monitor:           Commodore 1084S
  85.     Operating system:  3.0 Beta (Kickstart 39.106, Workbench 39.29)
  86.  
  87.  
  88. INSTALLATION
  89.  
  90.     DICE 3.0 comes on five disks.  Installation is done by the Commodore
  91. Installer program.  There are three Installer scripts with icons on Disk 1 of
  92. the distribution.  One installs DICE on your hard drive, a second installs
  93. it on floppy disks, and the third creates the freeware version (see below).
  94.  
  95.     The hard drive installation works perfectly.  It offers an
  96. assortment of options -- whether to install the 1.3, 2.0, and/or 3.0 header
  97. files and link libraries; whether to include all, none, or a selected subset
  98. of the examples; which editor to install; and so on.  Anything not selected
  99. in the initial installation can be added later; an option in the Installer
  100. script allows the addition of selected modules to an existing installation.
  101.  
  102.     Unlike some badly-written installers, DICE's installation process
  103. is very careful never to change or replace any existing files without
  104. explaining exactly what it's going to do and waiting for permission.
  105.  
  106.     Depending on which options you select, DICE can take up anywhere
  107. from 1.5 to 8 megabytes of hard drive space.  Mine took up 4.7 megs, which
  108. is probably a fairly typical amount; few users are likely to need the full 8
  109. megs (which assumes, for example, that you install all three complete sets of
  110. includes and libraries).  Incidentally, although the installer and the
  111. manual refer to "3.0", the include files actually supplied are version 3.1.
  112.  
  113.     The freeware DICE is a freely distributable version of the compiler
  114. with floating point support and some Amiga-specific features disabled, but
  115. otherwise a perfectly good C compiler.  Users are encouraged to distribute
  116. the freeware version, which consists of the compiler, link libraries,
  117. standard C include files, and the relevant documentation -- no editor or any
  118. other tools (though DME can be found on a Fred Fish disk).
  119.  
  120.     The freeware version Installer script attempts to install DICE onto a
  121. single floppy, which doesn't work -- it's about 1.3 megs and needs two (I
  122. guess they must have tested it on an Amiga 4000 with high density 1.76 MB
  123. drives and forgot that most Amigas only have 880K drives).  This is easy to
  124. get around if you're running the installation on an Amiga with a hard drive:
  125. just create a drawer on your hard drive and assign "Freeware_Dice:" to it
  126. before you start.  (You'll still need a spare floppy for the install script
  127. to format, though.)  Afterwards, you can split the installed files between
  128. two floppies.  You can't run the freeware installation on a floppy-only
  129. system.
  130.  
  131.  
  132. COMPILER
  133.  
  134.     The actual compiler is changed little from the shareware version of
  135. DICE, apart from a few enhancements (mostly related to the VMAKE interface
  136. -- see below) and bug fixes.  Anyone familiar with the shareware DICE will
  137. find no surprises here.
  138.  
  139.     The compiler was designed with quick and reliable code generation as
  140. the primary goal, with optimisation secondary.  That's not to say DICE does
  141. no optimisation; it doesn't do the kind of aggressive optimisation
  142. performed by GCC or SAS C, but it produces perfectly good code for all but
  143. the most demanding cases (where most programmers would probably switch to
  144. assembly language anyway).
  145.  
  146.     The DICE compiler, DCC, is almost entirely conformant to the
  147. ANSI/ISO C standard, which is only to be expected these days.  There are a
  148. very few features and functions omitted, such as the atan2() function, and a
  149. large number of enhancements.
  150.  
  151.     Compiler features include precompiled header files, automatic
  152. generation of function prototypes, profiling (a special set of link
  153. libraries that allow you to keep track of exactly how much run time each
  154. part of your program is taking up), and a "typeof" operator.
  155.  
  156.     Most of the enhancements, of course, are related to writing
  157. Amiga-specific code.  These include automatic opening and closing of shared
  158. libraries; the "__chip" type qualifier to force data into Chip RAM; dynamic
  159. stack checking (which automatically gives your program more stack space when
  160. it runs short); the "wbmain()" function (giving a program different entry
  161. points depending on whether it was started from the Shell or Workbench);
  162. full control over parameter passing via registers or stack; and an extensive
  163. set of functions that make giving your program an ARexx interface fairly
  164. painless.
  165.  
  166.     The DICE package includes the complete set of include files and
  167. link libraries for Workbench 1.3, 2.0, and 3.0/3.1.
  168.  
  169.  
  170. INTEGRATED DEVELOPMENT ENVIRONMENT
  171.  
  172.     The centrepiece of the whole system is VMAKE, which, as you might
  173. expect from the name, is a visual "make" tool.  It's really an integrated
  174. development environment.  You create a "Project" and tell VMAKE what source
  175. files belong to it.  VMAKE gives you access to the editor of your choice (see
  176. below), compiler, debugger, and help system.  Compiler options are selected
  177. through VOPTS, which is basically a GUI for DCC -- you use the usual
  178. Intuition tools (gadgets, list windows, and so on) to select the compiler
  179. options, link libraries, and so on.  If you select a source file from VMAKE,
  180. the editor is invoked.  Once you've written the source code and set the
  181. compile options, you hit the "Make" button to compile and link everything
  182. that needs it, then pick one of the "Run" options to test it (there are
  183. three options -- CLI, Workbench, or Debugger).
  184.  
  185.     VMAKE knows what to do with individual source files by looking at
  186. their names -- a name ending in ".c" is C code, ".a" is assembler source,
  187. and so on.  It's smart enough to know not to compile a source file that
  188. hasn't changed since the last compile.
  189.  
  190.     If you get compile errors, the editor is automatically brought up
  191. with the cursor positioned on the line containing the first error; when
  192. you've fixed that, you hit Shift-F5 (or whatever alternative key you want to
  193. define) and the cursor is moved to the next error.  The full list of errors
  194. is visible in another window.
  195.  
  196.     VMAKE is highly customisable.  All the gadget and menu details are
  197. stored in plain text files rather than being hard-coded, and the formats are
  198. fully documented.  You can rewrite, add, and subtract menus and gadgets to
  199. your heart's content.
  200.  
  201.     I have a couple of nitpicks with VMAKE.  One concerns the "Save"
  202. options on VMAKE and VOPTS.  Every time I make any changes and save them, I
  203. get a requester that warns me that I'll be overwriting my existing project,
  204. and do I really want to do that?  Well of course I do, that's why I chose
  205. "Save".  I'm all for safety measures in important things, but VMAKE has far
  206. too many "Are you sure?" requesters for my taste Surprisingly, given the
  207. impressive configurability of VMAKE in most respects, there doesn't seem to
  208. be any way to switch them off.
  209.  
  210.     My other complaint is that VOPTS causes an Enforcer hit every time
  211. it's invoked!  (If you're not familiar with Enforcer, see below.) This is
  212. inexcusable in commercial software.  It doesn't seem to cause any problems
  213. (it appears to be a dereferenced null pointer), but it's not exactly the
  214. most encouraging sign, especially since Enforcer is included in the DICE
  215. package.
  216.  
  217.     A feature I like a lot is DiceHelp.  This is a program that takes
  218. the name of a C function, type, or include file, looks it up in the
  219. Autodocs, and opens a window to show you the documentation (if it finds
  220. any).  DICE 3.0 comes with docs for the standard C and DICE-specific
  221. functions; if you have the Commodore Autodocs it will use them too.  The
  222. installation program automatically creates the necessary ARexx scripts to
  223. integrate this with your choice of editor.  You just move the cursor over
  224. the function name and hit F5; the editor opens a second window showing the
  225. relevant documentation.
  226.  
  227.  
  228. DEBUGGER
  229.  
  230.     DICE includes a source code debugger, DD.  It can be used either
  231. standalone (from the command line) or through VMAKE.
  232.  
  233.     I'm not quite sure what to report about DD.  Most of it seems to
  234. work; you can see the source code in a window, set breakpoints and so on,
  235. but it seems to be missing one of the most important features of a
  236. debugger:  I can't find any way to inspect (or set) the value of a
  237. variable.  (You can read the values of memory locations, but since there's
  238. no way of finding the address of a variable, that's not much help.) I say
  239. "seems to" because I can't believe OIC could have left out anything so
  240. important; but if it's there, it isn't documented, and I haven't been able
  241. to figure it out by trial and error.  I'll reserve judgement on the debugger.
  242.  
  243.  
  244. EDITORS
  245.  
  246.     The DICE package includes two editors.  DME is the standard editor
  247. that has been included with all versions of DICE.  The new one is AME
  248. (Advanced Micro Emacs).  I switched to AME immediately and haven't regretted
  249. it; it's basically all the good features of Emacs without the megabloat
  250. (less than 100K!).
  251.  
  252.     Many features are common to both editors:  multiple windows, full
  253. ARexx support, programmable keys and menus, and all the usual features you'd
  254. expect in an editor (search and replace, clipboard support, paragraph
  255. formatting, and so on).  AME has a few features not found in DME:  multiple
  256. undo steps (although this still has a few bugs in it); the ability to open
  257. on its own screen or a public screen (DME opens only on the Workbench) and
  258. even jump to a different screen while running; and 16-bit character support.
  259.  
  260.     AME also has a "C mode" which is automatically invoked when you edit
  261. a file whose name ends in ".c".  You can also switch it on manually.  It
  262. provides programmer-friendly features like bracket matching (warning you if
  263. you enter a mismatched bracket).
  264.  
  265.     Besides its own two editors, DICE also supplies sets of ARexx macros
  266. for integrating VMAKE with Cygnus Ed and TurboText and promises to provide
  267. more editor options in the future.
  268.  
  269.  
  270. OTHER TOOLS
  271.  
  272.     Besides the compiler, editors, debugger, and VMAKE, a large number
  273. of other tools are supplied with DICE.
  274.  
  275.     RCS (Revision Control System) helps with the development of large
  276. projects.  It keeps track of who is working on each source file, recording
  277. all changes to allow later reversion to an old version if necessary.  I
  278. don't use this myself (it seems like overkill for one-person projects), but
  279. it would be extremely useful for large projects involving several
  280. programmers and many source files.  (I program mainframes for a living, and
  281. we use a similar system in our work.)  RCS is fully integrated with VMAKE.
  282.  
  283.     There is an assembler, DAS.  It's designed primarily to be called by
  284. DCC as part of the compilation process, so its features are fairly minimal
  285. and somewhat specialised, but it can be used as a standalone assembler if
  286. you need one.  Again, VMAKE knows about it.
  287.  
  288.     Mike Sinz's Enforcer is included.  Enforcer is run in the background
  289. (most programmers put it in their s:User-Startup and leave it running
  290. permanently) and uses the MMU (Memory Management Unit) to watch for illegal
  291. access to certain regions of memory, such as the low page and nonexistent
  292. pages.  With the help of auxiliary tools like SegTracker and FindHit (both
  293. included), you can often locate the exact line of code that produced such
  294. errors -- the classic example is a dereferenced null pointer.  Enforcer
  295. works only on an Amiga with an MMU, which basically means a 68030 (not
  296. 68EC030) or 68040 CPU.
  297.  
  298.     Other tools include DOBJ, a disassembler; DPROF, a profiler for use
  299. with the profiling libraries; FDTOLIB, which creates link libraries from FD
  300. files; and many others.
  301.  
  302.     Massive quantities of source code are provided.  The source for
  303. VMAKE and many of the other tools is present.  There are also working
  304. examples of a shared library, an Exec device, a DOS handler, and a printer
  305. driver.
  306.  
  307.  
  308. DOCUMENTATION
  309.  
  310.     DICE 3.0 comes with a printed manual of about 450 pages.  It's very
  311. tightly bound and won't lie flat; in fact, it's difficult to even hold it
  312. open with one hand.  I recommend that the first thing any purchaser does is
  313. take the manual to the nearest printer and get it spiral bound (thanks to
  314. Liam Greenwood for the suggestion).  It cost me NZ$4.00 (about US$2.50).  I
  315. don't know why so many software publishers are unwilling to add the extra
  316. dollar or so to the price in order to have spiral binding.
  317.  
  318.     The manual is well-organised and fairly well written and should be
  319. equally useful to beginners and experts.  The proof-reading occasionally
  320. leaves something to be desired, though.  There are a few humorous comments
  321. of the "This page unintentionally left blank" variety.
  322.  
  323.     The manual begins with an outline of DICE's features and
  324. instructions for installing it, which amount to little more than "Put Disk 1
  325. in the drive and hit the Install icon".  This is followed by an introduction
  326. to C, which is probably a waste of space -- it's far too sketchy for a
  327. novice actually to learn C from it without a real textbook, and it is
  328. redundant if you have a real textbook.
  329.  
  330.     Next comes the description of VMAKE.  This is thorough and easy to
  331. follow, although the section on VOPTS is missing (the relevant page just
  332. says "[TBA]", so I guess someone forgot to stick it in).  This isn't a
  333. serious problem; if you read the section later in the manual that describes
  334. the compiler's command line options, it's pretty obvious how they correspond
  335. to the gadgets in VOPTS.
  336.  
  337.     The next sections cover the DICE compiler, the various tools and
  338. utilities, the two editors, and the online help system.  Full documentation
  339. for most of these is also provided on disk.
  340.  
  341.     The biggest section of the manual is the function reference, which
  342. documents all of the standard C functions, as well as those specific to
  343. DICE.  These are in the standard Autodocs format and are also provided on
  344. disk for use with DiceHelp.
  345.  
  346.     The last section will be very helpful to those new to C
  347. programming.  It's a problem-solving guide that describes many of the most
  348. common errors made by C programmers and how to avoid them.
  349.  
  350.     There is a fairly thorough index.
  351.  
  352.  
  353. LIKES
  354.  
  355.     Installation:  Painless and apparently flawless hard disk
  356. installation.
  357.  
  358.     Compiler:  Very fast compilation; almost complete ANSI/ISO
  359. standardisation; useful extensions, especially the ARexx package.
  360.  
  361.     Editors:  Ability to use several editors; extensive customisation
  362. capability; multi-window and multi-screen capability in AME; ARexx interface.
  363.  
  364.     Development environment:  VMAKE gives access to everything you need
  365. for development; Style Guide compliant interface; fully customisable and
  366. extensible; excellent online help system.
  367.  
  368.  
  369. DISLIKES AND SUGGESTIONS
  370.  
  371.     Installation:  Freeware version installation doesn't work properly.
  372.  
  373.     Editors:  Buggy "undo" in AME; AME opens on the Workbench by default
  374. when you invoke it from VMAKE, which is annoying.  It has always mystified me
  375. why so many people write editors that insist on taking over the Workbench,
  376. when opening their own screen is so easy.
  377.  
  378.     Development environment:  Major missing feature in debugger (this
  379. is my only really serious complaint); Enforcer hit in VMAKE/VOPTS; annoying
  380. "Are you sure?" requesters.
  381.  
  382.     Suggestions:  Apart from bug fixes, I'd like to see an "off" switch
  383. for VMAKE's annoying requesters.  You can edit VMAKE's options to make AME
  384. use its own screen, which I prefer, but it takes some digging in the
  385. documentation to figure out how to do this; it should be easier (or, better
  386. yet, the default).  A good, standalone assembler would be very useful.  The
  387. manual says at one point that A68K is included, but it isn't; I guess it got
  388. left out at the last moment.
  389.  
  390.     One major feature I'd like to see is some sort of interface
  391. designer.  Most compilers on the PC and Mac come with GUI design toolkits;
  392. we're always saying how marvellous the Amiga's interface is, so why are
  393. there so few GUI tools for the Amiga?  GUIs have been around long enough now
  394. that it's about time compiler vendors started thinking of interface toolkits
  395. as part of the necessary minimum standard rather than an optional extra.
  396.  
  397.  
  398. COMPARISON TO OTHER SIMILAR PRODUCTS
  399.  
  400.     The other C compilers I have used are GCC on the Amiga and Borland
  401. C++ on the PC.  Comparison to Borland C++ is hardly fair, given the very
  402. different markets the products are aimed at; I don't think it counts as a
  403. "similar product".
  404.  
  405.     GCC has the obvious advantage of being free.  DICE's user interface
  406. is so much better there's no comparison.  GCC is ported from UNIX and takes
  407. the standard UNIX "user friendly is for wimps" attitude.  DICE is much
  408. smaller and faster; GCC produces better optimised code.  Both include many
  409. additional tools and extensive online documentation; DICE's is better
  410. organised and easier to use.  GCC includes C++ as well as C.  DICE has many
  411. features adapted for writing Amiga-specific code; GCC has practically none.
  412. Executables produced by DICE are the property of the writer and can be
  413. distributed under whatever terms you choose, whereas those produced by GCC
  414. are subject to the General Public Virus, sorry, Licence.
  415.  
  416.     [MODERATOR'S NOTE:  I am not sure that Ross's statement about GCC
  417.     and the GNU Public Licence is correct.  I am checking it out.
  418.     - Dan]
  419.  
  420.     DICE's natural competitor is SAS C, which I've never used.  SAS is
  421. far more expensive; I gather it includes counterparts to most of the tools
  422. provided with DICE.  SAS's editor is reputed to be fairly minimal, whereas
  423. DICE includes two full-featured editors; but there are enough good editors
  424. available in the commercial, shareware, and PD worlds that this is probably
  425. not an important consideration.  SAS includes some C++ features, although
  426. since it lacks templates and exceptions it can't be considered a serious C++
  427. development system).  DICE is plain C only.  Like GCC, SAS does much better
  428. optimisation than DICE; I don't know how it compares in compilation speed,
  429. or whether it includes the equivalent of VMAKE or an interface toolkit.  I
  430. assume SAS's debugger works properly.
  431.  
  432.  
  433. BUGS
  434.  
  435.     I've described the few bugs I found elsewhere in this review.  I've
  436. contacted the support address about the debugger problem and the Enforcer
  437. hit but have received no reply so far.
  438.  
  439.  
  440. VENDOR SUPPORT
  441.  
  442.     Internet, Compuserve, and US Mail addresses are given for support.
  443. Although I've received no reply after a couple of weeks to my query about
  444. the debugger, I have received very helpful replies to some questions about
  445. AME.
  446.  
  447.  
  448. WARRANTY
  449.  
  450.     None.
  451.  
  452.  
  453. CONCLUSIONS
  454.  
  455.     Overall, despite a few minor niggles and one major one, I like
  456. DICE.  The compiler is very fast, and produces good enough code for all but
  457. the most speed-critical applications, and the other tools are well-chosen,
  458. well-designed, easy to use, and highly customisable.  I recommend DICE 3.0
  459. highly to anyone interested in C programming on the Amiga.
  460.  
  461.     I give it 8 out of 10, rising to 8.5 if they fix that hole in the
  462. debugger and the Enforcer hit in VOPTS.
  463.  
  464.  
  465. COPYRIGHT NOTICE
  466.  
  467.     Copyright 1994 Ross Smith.  All rights reserved.  This review is
  468. freely distributable.
  469.  
  470.     Ross Smith (Wanganui, New Zealand) ... alien@acheron.amigans.gen.nz
  471.     GCS/S d? p c++++ l u-- e- m---(*) s+/++ n--- h+ f g+ w+ t+(-) r+ y?
  472.         Keeper of the FAQ for rec.aviation.military
  473.     "Well, we know what to get you for Christmas.  A double lobotomy and
  474.     ten rolls of rubber wallpaper."                         (A J Rimmer)
  475.  
  476. ---
  477.  
  478.    Daniel Barrett, Moderator, comp.sys.amiga.reviews
  479.    Send reviews to:    amiga-reviews-submissions@math.uh.edu
  480.    Request information:    amiga-reviews-requests@math.uh.edu
  481.    Moderator mail:    amiga-reviews@math.uh.edu
  482.    Anonymous ftp site:  math.uh.edu, in /pub/Amiga/comp.sys.amiga.reviews
  483.