[comp.lang.modula2] Why M2 "needs" special software management tools

scc@cl.cam.ac.uk (Stephen Crawley) (07/22/88)

In article <1501@crete.cs.glasgow.ac.uk> jack@cs.glasgow.ac.uk (Mr Jack Campin) writes:
>One point that mystified me is why Modula should need special make and
>version control gubbins, as Sun, ACE and Oregon all provide. Why can't
>the general purpose ones - SCCS, nmake, and friends - hack it?

The reason for needing a special make or at least a makefile generator
for M2 is that most (all?) compilers base their interface checking on
timestamps rather than on an encoding of the interface types.  This
puts tight constraints on the order of compilation of definition and 
implementation modules: you get the dependencies just a tinsey bit
wrong in a hand built makefile and the M2 linker will give you the bird.  

By contrast, in C you don't have to compile "interfaces definitions" 
(header files), so it is trivial to write a niave makefile that works.
On the down side, the C compiler and linker will happily let you 
produce an executable from components compiled with (really) 
incompatible interfaces.  This does not make for reliable software.

In an ideal world, the interface signatures for M2 definitions would
only change when the interface types actually changed.  It is a pain
to not to be able to change a comment in a library interface for fear
of having to recompile the world.  (Incidentally, this is the way that
the MIT Clu compilers have worked for years ... )

As for version control, tools like RCS and SCCS are okay for maintaining
versions of individual source files, but lousy for entities composed of
a number of files (i.e. libraries, or large programs).  Also you probably
want to be able to keep those blasted interface timestamps ... unless
you have enough CPU/disc/patience to make recompiling the world bearable.


-- Steve