[net.micro.mac] TML

bart@reed.UUCP (Bart Massey) (08/06/86)

Well, I've made fairly extensive use of both the 1.1 TML and Beta MPW
compilers.  It's hard to talk about them authoritatively though, since
neither is the final version.  If TML really does support full object
Pascal, seperate units, and good code generation in the 2.0 release,
it's practically a different product.  And I have no idea how long it
will be before Apple releases MPW.  But here's a few comments on the
two... 

TML: I was very impressed with this compiler, especially as a basically
one-person job done quickly.  Nothing really important was left out,
and I used it to write several good-sized programs.  There were a few
annoying features, most of which have been presumably fixed in the 2.0
release, so I won't go into it...  The lack of units and the poor code
generation were actually my two biggest objections to this compiler,
and they're apparently gone now -- I'm sure the upgrade will be well
worth $25.00, even if you only use it for a couple of months before
the release of... 

MPW: This is pretty much the definitive language standard for the Mac
-- just the name Apple on it alone would probably guarantee that, so
it's good to see that they've done a *very* nice job of it.  The
Pascal compiler supports everything I've ever seen Pascal compilers
support, generates reasonable code, and is well adapted to building
obscure things (CDEFs, frinstance).  The biggest drawbacks right now
are the compile-time error checking and recovery, which will hopefully
be fixed in the release version, and the "speed" (yawn) which I
suspect won't be.  On the plus side, any time you lose over TML on a
shortish program is gained back by not compiling all the interfaces
every time...  :-) (or is that fixed too?) And the error checking and
recovery aren't that bad -- I was just annoyed by such things as the
compiler not noticing that I had assigned no return value to a
function (understandable, but not too hard for the compiler) and
undeclared identifiers generating cascades of errors (not so easy to
understand -- as near as I can tell, the compiler never tries to
figure out what type a variable was supposed to be, or sets it to an
infinitely compatible type, either one of which would be acceptable --
thus you get an error on *every* reference to the identifier...). 
	But the best thing about the compiler is the surrounding Mac
Programmer's Workshop.  It's got a make utility (which unfortunately
does all its work before anything is compiled, thus allowing the
possibility of phase errors -- no real workaround, as the manual says,
given no multitasking), a *nice* standalone linker, an assembler, a
disassembler, a resource compiler, a resource decompiler, a librarian,
a resource file consistency checker, and more!*  All of which are
callable from the MPW "shell" which is very Unix-shell-like (but
single-tasking, of course :-) and supports scripts, regular
expressions, etc.  

In sum, both Pascals are complete, robust, and *very* pleasant to work
with.  For projects of enormous size, I would definitely wait until
MPW comes out -- it's hard to imagine using anything else once this is
available.  On the other hand, for small projects, TML2.0 may even be
superior -- MPW doesn't fit very comfortably (read "barely works") on
2 DS drives, and there's some overhead associated with its development
process...  and, sight unseen, TML is definitely worth the upgrade
price in my mind.  Besides which TML code ports *very* readily -- a
friend and I got up a TML DA in literally 15 or 20 minutes -- not bad
for a *DA*! 

You know, it's hard to believe that, one year ago, I had the choice of
writing Pascal in the infinitely obnoxious "Lisa Workshop", using Rascal,
or paying $200 minimum for a C compiler with an atrocious interface to
the Mac.  Or I could keep using Turbo Pascal on my IBM-PC (what an
icky machine!  (but Turbo wasn't bad -- whatever happened to their
Mac compiler??)).  Happy times indeed for a confirmed Pascalite...

				Bart Massey
				..tektronix!reed!bart

* I couldn't resist the "more":  a Pascal prettyprinter, a Pascal
cross-referencer, an optional C compiler, the shell is built with
amazing cleverness to double as a *very* effective program editor
(something one has to see to believe, I suppose -- I know I wouldn't
have), MacApp (a way to use object Pascal to put up applications
*fast*), magic beans that will grow a beanstalk all the way to the
sky (just kidding about the beans, the rest is honest-to-someone true)...