<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div id="__MailbirdStyleContent" style="font-size: 8pt;font-family: arial;color: #000000">
<div>In another life, my favorite Pascal child had been Oberon, and for many years now I use Modula 3,<span style="font-size: 8pt;line-height: 1.5"> because of some programmer-friendly, or let's say laziness-encouraging :-) features </span><span style="font-size: 8pt;line-height: 1.5"> such
as constructors, default values and nested blocks, but the main reason was that I needed to make stand-alone</span><span style="font-size: 8pt;line-height: 1.5"> distributable
<b>programs</b>, while Oberon runs in a closed workstation IDE environment. Also Oberon --unlike Modula 3-- has no make facility, modules are compiled one par one interactively as they are written. To remain honest, it now also has a rather complicated release
tool that kind of imitates Quake. I still prefer writing relatively </span><span style="font-size: 8pt;line-height: 1.5">big (but not huge) modules rather than a multitude of very small modules. What I still miss </span><span style="font-size: 8pt;line-height: 1.5"> in
Modula 3 is the possibility of read-only global and field exports, which let you avoid making many types opaque</span><span style="font-size: 8pt;line-height: 1.5"> and providing their corresponding xxxRep modules.<br>
<br>
</span></div>
<div><span style="font-size: 8pt;line-height: 1.5">What makes compiling Modula 3 rather difficult is the possibility</span><span style="font-size: 8pt;line-height: 1.5"> of n:m relationships between modules and interfaces, rather than
<b>the</b> module and its interface like in</span><span style="font-size: 8pt;line-height: 1.5"> Oberon. It also makes dynamic loading near impossible. An other sensitive point is the existence of packages.</span><span style="font-size: 8pt;line-height: 1.5"> Note
that the ComponentPascal dialect of Oberon also has packages (called subsystems) but modules are known as belonging </span><span style="font-size: 8pt;line-height: 1.5">to the package named by the characters until the first LC/UC transition of the module name
which obviates the</span><span style="font-size: 8pt;line-height: 1.5"> need to deal with it at the m3makefile level. </span></div>
<div><br>
</div>
<div>Let's face it, the Modula 3 compiler<span style="font-size: 10.6667px;line-height: 1.5"> </span><span style="font-size: 10.6667px;line-height: 1.5">with its four packages and hundreds of modules,</span><span style="font-size: 8pt;line-height: 1.5"> is
what I call a monster and</span><span style="font-size: 8pt;line-height: 1.5"> what the French call "une usine 'a gaz". In comparison, the Fox compiler of the last Active Oberon avatar</span><span style="font-size: 8pt;line-height: 1.5"> is much simpler, consisting
of some 60 modules and compiles ultra fast. </span><span style="font-size: 8pt;line-height: 1.5">It doesn't need a Quake and yet, being used in a research environment, offers a great flexibility with regard</span><span style="font-size: 8pt;line-height: 1.5"> to
platforms, architectures and backends.</span></div>
<div><br>
</div>
<div>Many problems that plague the Modula 3 implementations could be solved by having a look at Oberon.<span style="font-size: 8pt;line-height: 1.5"> Unfortunately not many community members seem to be familiar with the Oberon world.</span><span style="font-size: 8pt;line-height: 1.5"> In
addition most of them are Linux based which makes them --unlike the Oberonists-- neglect the different Windows systems</span><span style="font-size: 8pt;line-height: 1.5"> which still represent 80% of all desktop computers.</span></div>
<div><span style="font-size: 8pt;line-height: 1.5"><br>
</span></div>
<div>I think the whole compiler should be rewritten from the ground. As for me, I am, at 82, just too old for such a workload. <span style="font-size: 8pt;line-height: 1.5">Having a look at Oberon's new </span><a href="http://e-collection.library.ethz.ch/eserv/eth:47094/eth-47094-02.pdf" style="font-size: 8pt;line-height: 1.5"><span style="font-size: 8pt;color: rgb(0, 0, 0)">very
clever cooperative multitasking system</span></a><span style="font-size: 8pt;line-height: 1.5"> that runs on as much processes as </span><span style="font-size: 8pt;line-height: 1.5">there are system processors (also heard about Go?) would be very beneficial
for the Modula 3 community.</span></div>
<div><br>
</div>
<div>
<div style="font-size: 10.6667px"><span style="font-size: 8pt;line-height: 1.5">As a final rant, if cm3 improved in many ways the compiler, many features were better in pm3 like texts and threading. I would have left the text system as it was, just encoding
it in UTF-8 as nearly everybody does nowadays, and also --just a peanuts detail-- I prefer RUNE over WIDECHAR because it just has four letters that make </span><span style="font-size: 8pt;line-height: 1.5">RUNE/CHAR written one above the other as it often
happens in selects and conditionals, more readable.<br>
I <b>love</b> readable programs.</span></div>
</div>
<div><br>
</div>
<div class="mb_sig"></div>
</div>
</body>
</html>