[net.micro.atari16] Lattice C: a mini-review

rwb@druxu.UUCP (BlackR) (05/05/86)

I've had the Lattice C compiler for the 520ST (from METACOMCO for $150
U.S., list) for several weeks and have a few impressions to report.

1) though the supplied editor appears useful, it is different enough
from common editors (vi, emacs, or wordstar) that I haven't used it.

2) Lattice C does appear to follow K&R very closely, but I have found a
few things it doesn't like that other C compilers do.  Fortunately, it
was easy to program around those things.

3) METACOMCO expended a lot of effort in creating a package that runs on a
"small" computer system.  That is, I was able to compile all of the
PCHACK sources with 1 single sided drive on a 512K ST (TOS in ROM) with a RAM
disk sized to hold just the compiler and standard header files (because
PCHACK is so large and the compiler generates large intermediate files,
I had to place the sources on 5 disks).  The compiler is broken into two
programs (passes), each around 88K in size, which communicate via a file
of intermediate code (quadruples).  Combined with the separate
compilation facilities of C, this makes it possible (though
inconvenient) to compile some large programs.

4) the package is not integrated into a command interpreter (as is
Personal Pascal or Hippo C), so you can run the compiler from the
desktop or any other command interpreter you desire.  It is arguable if
this is a benefit or not, but I have the freedom to chose my own shell. 
The tradeoff is that the integrated packages make it easy to go from a
syntax error to editing.

5) the supplied libraries provide enough of the UNIX(tm) Operating
System feeling to be familiar (i.e. stdio.h, math.h, setjmp.h, etc.) and
they allow stdin and stdout to be redirected (but no pipes).

6) the documentation will not teach the C language or how to program in
a GEM environment, but are adequate for an experienced C programmer. 
There is very little on how to access GEM, the BIOS, or XBIOS, so other
guides are mandatory to take full advantage of the 520.

7) the linker is very powerful, operating in interactive or batch mode. 
In the latter, one can generate a very long list of files and libraries
to link, longer than one's memory will permit.

8) finally, there is error handling by both the compiler and linker. 
Only the first pass of the compiler does a decent job of error handling.
It tells you the error and the source line it was found on, so you have
an idea of where to look (the first pass does the preprocessing and most
of the compilation, generating intermediate code in the form of
quadruples).  The second pass (which does code selection on the
quadruples, generating a relocatable code) and the linker (which pulls
all the relocatable code into an executable image), do not seem to know
about source lines and only report that files have errors.  They don't
give any indication of where in the file the problem is.  One might
accept this if the first pass caught all the errors, but it doesn't.  In
compiling PCHACK, the second pass found one error and the linker found a
relocation error in about one out of every five files.  I was able to
guess on the pass 2 problem and fix it, but am out of luck on the linker
problems.  Needless to say, I am less than pleased with the Lattice
package and am not recommending that anyone buy it until METACOMCO gets
some things fixed (I should also note that I have compiled and linked
several small programs successfully, so the package works some of the
time).  Since the Lattice C compiler is the compiler in the Amiga
developer's kit, I expected these kinds of bugs to have been resolved.

9) compilation speed was nothing to cheer about, but can be improved by
using a RAM disk for the compiler and source files (i.e. a 1Meg system
with half Meg of RAM disk).  The generated code was comparable in size
to that of the Personal Pascal compiler (about half as big as the Hippo
C).  I have not performed any timing tests.

In summary, this product has potential, but save your money until it is
fixed.  I don't know what METACOMCO's update policy is, but expect
to soon find out.  I also welcome responses from others who have had
other experiences with this product than I have.

Rodney Black
AT&T Information Systems (usual disclaimers about the company disavowing any
approval of my opinions)
..!ihnp4!druxu!rwb

gnu@hoptoad.uucp (John Gilmore) (05/21/86)

In article <133@druxu.UUCP>, rwb@druxu.UUCP (BlackR) writes:

> 7) the linker is very powerful...

Also, unfortunately, it is ridiculously slow.  It runs several
minutes(!) on hello.c style programs, and becomes the main slowdown in
a compile-link-debug -edit cycle.

> In summary, this product has potential, but save your money until it is
> fixed.

Agreed.  I wouldn't buy it.  I would get the developers kit from Atari instead.
(I have not used the Atari kit but haven't heard complaints.)
-- 
John Gilmore  {sun,ptsfa,lll-crg,ihnp4}!hoptoad!gnu   jgilmore@lll-crg.arpa