[comp.lang.modula2] TML M2 system

rlc@uvacs.CS.VIRGINIA.EDU (Robert L. Chase) (11/28/87)

Is anyone familiar with the Modula-2 system advertised in recent issues of
MacTutor by TML? Their Pascal is reportedly very good. Iv'e had very bad luck
trying to deal with MacModula Corp recently, and need a full blown Modula-2
system for my MacII for CS research. Any help would be appreciated. Please
reply to rlc@cs.virginia.edu  (INTERNET). Thanks very much. -Bob Chase
:wq


-- 
Robert L. Chase, PO Box AK, Sweet Briar College, Sweet Briar, VA 24595
INTERNET:  rlc@uvacs.cs.virginia.edu
UUCP:  ...!mcnc!uvacs!rlc     or    ...!cbosgd!uvacs!rlc

drc@dbase.UUCP (Dennis Cohen) (11/29/87)

In article <2092@uvacs.CS.VIRGINIA.EDU>, rlc@uvacs.CS.VIRGINIA.EDU (Robert L. Chase) writes:
> Is anyone familiar with the Modula-2 system advertised in recent issues of
> MacTutor by TML? Their Pascal is reportedly very good. Iv'e had very bad luck
> trying to deal with MacModula Corp recently, and need a full blown Modula-2
> system for my MacII for CS research. Any help would be appreciated. Please
> reply to rlc@cs.virginia.edu  (INTERNET). Thanks very much. -Bob Chase

I have reviewed the TML Modula-2 product for MacWorld -- the review is in this
month's (Dec. 87) issue.  It's a good compiler/product.  It is NOT stand-alone,
but runs under MPW as a tool (just like MPW Pascal and C).  The version I own
doesn't have Volume V libraries as yet, but I just received word from TML that
the new libraries are on the way.  Another MPW Modula-2 compiler, SemperSoft,
is also available.  It currently supports Volume V interfaces.  I tend to use
SemperSoft because: 1) it supports type-transfer functions  2) it produces
tighter code (both size and speed)  3) it compiles faster   4) the Volume V
stuff is already there.

TML has better documentation and costs $25 less, plus it was out there first.
If you need a stand-alone Modula-2, there is MacMeth (Modula Corp, so it's
probably the one you're having problems with), TDI M-2 (TDI, Dallas TX, buggy
and awkward with what might be the worst editor I've ever used), and MacLogimo
(shareware, $18.50, based upon the ETHZ compiler).  None of them currently
have the Volume V support, but it should be easy to roll your own with MacLogimo
since you get all the other library sources.

Dennis Cohen
Ashton-Tate Glendale Development Center
dBASE Mac Development Team
--------------------------
Disclaimer:  Everything above is personal opinion and experience.  It has
nothing to do with my employer.

keith@oophost.UUCP (Ed Keith John) (12/02/87)

In article <273@dbase.UUCP> drc@dbase.UUCP (Dennis Cohen) writes:
>In article <2092@uvacs.CS.VIRGINIA.EDU>, rlc@uvacs.CS.VIRGINIA.EDU (Robert L. Chase) writes:
>> Is anyone familiar with the Modula-2 system advertised in recent issues of
>> MacTutor by TML? Their Pascal is reportedly very good. Iv'e had very bad luck
>> trying to deal with MacModula Corp recently, and need a full blown Modula-2
>
>I have reviewed the TML Modula-2 product for MacWorld -- the review is in this
>
>
>Dennis Cohen

Dennis,
 
 I've read your review of TML Modula-2 and I have to correct a mistake on your
part. VAL or any other intrinsic funtion does not incur any overhead in code
generation. How could you have thought that?

About SemperSoft and TML, I use TML, and I prefer it over Semper. I've run
my personal benchmarks and I found that overall there was no difference
between the two compilers in code speed or code size. These benchmarks will
be published in APDAlog in January. SemperSoft does compile faster than the
current TML compiler Ver. 1.2, which does include the latest Inside Mac traps.
TML and Semper are about neck and neck in comparison. The differences are
mostly astetic. Semper allows lowercase keywords and Pascal strings. Its
VAL does not work according to Wirth, for conversion between different sized
types. TML supports FileSystem and Streams and supports the Performance
analysis tool in MPW, Signal Handler. Anyway, I've ranted enough. The full
article in APDAlog covers a great deal of the differences between the
compilers.
  I think that Semper has a nice compiler, but its syntax has taken great
liberties with Wirth's definition. I don't like using CHAR and PASCHAR
order to work with the Macintosh tool traps. I perfer null terminated strings
but it becomes awkward to use both types in a Macintosh program. I'd rather
let TML's libraries do the conversions for me. My Personal Preference,of
course.

Happy Programming.
Keith Nemitz
A9F4

drc@dbase.UUCP (Dennis Cohen) (12/03/87)

In article <307@oophost.UUCP>, keith@oophost.UUCP (Ed Keith John) writes:
> In article <273@dbase.UUCP> drc@dbase.UUCP (Dennis Cohen) writes:
> Dennis,
>  
>  I've read your review of TML Modula-2 and I have to correct a mistake on your
> part. VAL or any other intrinsic funtion does not incur any overhead in code
> generation. How could you have thought that?
I drew that conclusion from working with 1.0, the only one that I have received
or heard of from TML since it came out of beta (and I WAS one of the beta
sites).  Looking at the generated code with TMON, I saw jumps to glue routines
at every turn.  I have since learned that the glue was used for almost every-
thing but what I thought it was used for, my mistake there.
> 
> About SemperSoft and TML, I use TML, and I prefer it over Semper. I've run
> my personal benchmarks and I found that overall there was no difference
> between the two compilers in code speed or code size. These benchmarks will
I'll be glad to send you the conversions of such things as TransSkel, Trans-
Display, and TransEdit for both compilers.  The differences in the sources
are few, the IMPORTs and the use of type transfers in Semper vs. VAL in TML.
I think that you will find the Semper compiler to generate significantly smaller
applications.  The current Semper compiler, 1.05, is only slightly faster than
TML in the code that it generates, up until now I agree that there was no
discernible difference in code speed -- I can't compare it to 1.2 of TML since
Tom has not sent me any notification of the upgrade.
> be published in APDAlog in January. SemperSoft does compile faster than the
> current TML compiler Ver. 1.2, which does include the latest Inside Mac traps.
> TML and Semper are about neck and neck in comparison. The differences are
> mostly astetic. Semper allows lowercase keywords and Pascal strings. Its
> VAL does not work according to Wirth, for conversion between different sized
> types. TML supports FileSystem and Streams and supports the Performance
> analysis tool in MPW, Signal Handler. Anyway, I've ranted enough. The full
> article in APDAlog covers a great deal of the differences between the
> compilers.
I haven't found any place that Semper allows lowercase keywords; however, they
do supply an alternate set of IM libraries and modules which are lower-cased for
people that don't want to remember that it's SetPort rather than Setport, etc.
These have nothing to do with the language definition.  The fact that it allows
Pascal strings I consider to be a major benefit since I write code that calls
the ToolBox a lot, and the ROMs expect Pascal strings.  If I were writing plain
vanilla Modula-2 programs that use FileSystem and Streams rather than Macintosh
applications which use the FileManager, I would be glad of that distinction,
but I don't and do not deem it a consideration for someone who is going to be
writing Macintosh programs, DAs, and INITs.  SemperSoft also supports the
MPW Performance Analysis tool.

In short, I still prefer Semper's compiler for what I do (as you say, personal
preference).  If Bob will allow type-transfer functions and does get the code
size down on toolbox-intensive applications, I will recommend it over TML.  I
like Bob and Tom.  They put out a quality product with good documentation, and
got it out first.  Nevertheless, for the things I do, Semper does the job a
little better (and a whole lot easier).  I get extremely aggravated when I have
to type VAL conversion after VAL conversion to compare things.  It obscures the
source and tires my fingers.

Again, if you are talking about which Modula-2 compiler would I recommend for
someone who wants to write the same code (essentially) on a number of different
systems, I would recommend TML without question.  The inquiry, however, was for
the compiler recommendation for programming the Mac.  I take that to mean,
"Which one does the best job of creating real-life Macintosh applications and
does it with the minimum of fuss?"  On this point, I still say that it is the
Semper compiler as there are too many contortions involved with the TML
interface to the toolbox and too much glue overhead.

Enough ranting from me as well.

Take care,

Dennis Cohen
Ashton-Tate Glendale Development Center
dBASE Mac Development Team
--------------------------
Disclaimer:  Opinions expressed above are all mine, based on my preferences
and experiences.  Any connection to those of any corporate entity are purely
coincidental.

>   I think that Semper has a nice compiler, but its syntax has taken great
> liberties with Wirth's definition. I don't like using CHAR and PASCHAR
> order to work with the Macintosh tool traps. I perfer null terminated strings
> but it becomes awkward to use both types in a Macintosh program. I'd rather
> let TML's libraries do the conversions for me. My Personal Preference,of
> course.

bobc@oophost.UUCP (Bob Campbell) (12/15/87)

I should first say that I am the copyright owner of TML Modula-2, and
I have a strong interest in what people think about it.  I am
attempting to present a review of each of the items about my compiler
that have been presented.  I have looked at the code produced by both
TML Modula-2 and SemperSoft Modula-2, as well as the other features of
the langauges, and I feel that while my compiler could be improved
some (and it is being worked on), but it is still as good or better then
the SemperSoft compiler when all things are considered.

Dennis was one of TML Systems beta testers (and a very good one
at that, thank you Dennis).  Keith is was and always will be one
of my primary testers.  (I limit my beta testers because I can't
affort to be sending a lot of disks out.)  I have several other
testers in the seattle area and one in Vancouver BC (that's Canada).
It is up to TML systems to send copies to their beta testers.

I know what kind of code TML Modula-2 generates, and I also
know that the only glue code that exists is for MULTIPLY and
DIVIDE of 32 bit numbers, and a special routine called HALT, 
that is called sometimes for things like reaching the end of a
function with out returning anything.  In addition the JSR
instruction is used for handling case statements.  I don't
think that the "jumbs to glue routines at every turn" is a
valid statement.  There were a few extra MOVE instructions
used in type conversions but these will be taken care of in
the next release (1.3).

TML Modula-2 produces larger applications in many cases because
it uses the same libraies that Apple's C and Pascal compiler use.
The side effect of this is that it is painless to write a
simple application that uses the "InOut", and "Terminal"
modules and convert it into a MPW Tool by only changing the
File Type of the application from APPL to MPST.  Most of this
code is from the fact that TML Modula-2 always calls RTInit,
instead of just calling DataInit, and forcing the user to to
know when RTInit is needed instead.  (I may solve this in 1.3
which is currently in alpha test).

The conversion of TransSkel, was well done but limited in
scope to being a simple port.  I know of many things that can
be done to the sources (for TML Modula-2 at least) that will
make the program smaller and easier to read.

I will concide the point that SemperSoft's compiler is about
3-4% faster, then My compiler, and I don't expect this to last
forever.  The benchmarks that have been done indicate that his
compiler beats my by at most 12%, and my beats his at most by
20% (or more).  These bench marks are subjective and when
writing a macintosh application it is even harder to tell the
difference.

SemperSoft does not support lower case keywords, but it does
have a library of all the routines in lower case.  I
personally feel that case is sensitive, and that the
identifiers could be typed correctly.  For some people I
understand using the shift key is a problem not yet mastered,
and for those people Apple has nicly supplied the canon tool
that will convert the cases to be correct (very easy to use,
but don't used the default dictionary or LONGINT will look
like LongInt).  The rules for spelling names of routines is
very simple, just capitlize the first letter of each new
word (little if any memory work is required my fingers do it
automaticly).  And should I make a mistake I have a command
key to solve the problem:

AddMenu 'Modula' 'Lookup/=' \
	'Search /`cat "{Active}.O-6"`/ \
	{ModLib}MInterfaces.DEFs:O-X.MOD'
It is hard to do a MPW Script in Unix but "\" is really
option-d, "O-6" is option-6, and "O-X" is option-X.  There are
many other ways to do this, but this produces output that can
be selected and executed to open up the file in question and
let me see the actual declaration.

Pascal Strings, well SemperSoft does support pascal strings,
and while I personally don't like Pascal strings (they are far
too limiting for me), he has done a good job of supporting
them.  I would rather support Pascal Strings the way MPW C
supports them (using the \p escape inside of strings).  In
fact there is no real solution to this problem that will
make all factions happy.  In every case I tend towards making
the system as easy to use as possible, and I try to give
information so that more aware people can do things the harder
and faster way.  Also the vast majority of the ToolBox calls
do not need strings or characters as parameters.

The FileManager, well the FileManager is very limited in it's
usefulness.  If you do a Open, followed by a small number of reads
or writes using large buffers then the FileManager is ok,
otherwise it is very slow having the Trap over head for each
read and write.  The Streams module does a reasonable job of
buffering the I/O, and is very easy to use.  There is no reason that a
real macintosh application could not use Streams instead of the
FileManager (if the program uses a lot of File I/O it might run
faster.)

I will never support type-transfer functions other then the
VAL function.  I support Dr. Wirth's current design of the
language, type-transfer functions can cause problem, and
should be clearly marked.  It is not much harder to type
VAL(INTEGER,foo) and if you started doing it instead of just
complaining about it, it would be come just as easy.  I did
not like it at first, but I started using it and it really is
not that hard.  In addition there are a lot of places where
you have to use conversions in MacIntosh Pascal, that Modula-2
does not need.

PR time:  To answer the question "Which one does the best job
of creating real-life Macintosh applications and does it with
the minimum of fuss?"  I feel that TML Modula-2 is a better
choice for the following reasons:

[a]	The interface files for TML Modula-2 are orginized by
	Manager, this means that the interfaces are orginized
	the same way Inside Macintosh orginizes them, it is
	also the same way that MPW C orginizes them.  It is
	also as close as is reasonable to the way other
	Modula-2 compilers like TDI, MacLogicmo (spelling?)
	and MacMETH orginize them.

[b]	I have worked with professional programmers using my
	compiler to support a released product.  I spend a
	lot of time making sure then when I release something
	it will not cause them any problems, this means that I
	take a little bit more time per release, but I think
	that they are well worth the effort.

[c]	I feel (and most people agree) that I have the best
	documentation, and I believe that a product is only as
	good as the manual that you use it with.

[d]	TML Modula-2 supports commando, so you don't have to
	know how what all of the options work.

[e]	TML Modula-2 provides example worksheets that contain
	the instructions for building all of it's examples.
	You can open the file and select the commands and execute
	them with out opening the manual.

[f]	TML Modula-2 provides a set of menu commands that can
	be used from inside MPW for generating Modula-2
	statements like IF, REPEAT, WHILE, CASE, PROCEDURE...

In summary I feel that SemperSoft's compiler is a little better (at
the current time...), but based on my information it is not any easier
to use, it does not have any major features that TML Modula-2 does not
have.  TML Modula-2 does have a number of features that SemperSoft
does not have and I intend to keep it that way.  Mike from SemperSoft
is a good person, and I wish that I was not competing with him, but
since I am, I intend to do a first class job of it.