<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_1_1475945206453_12895"><span>Hello Dirk:</span></div><div dir="ltr" id="yui_3_16_0_1_1475945206453_12943"><span id="yui_3_16_0_1_1475945206453_12942">have you seen this module system</span></div><div dir="ltr" id="yui_3_16_0_1_1475945206453_12951"><span id="yui_3_16_0_1_1475945206453_12950"><a href="http://bitsavers.trailing-edge.com/pdf/dec/prism/mica/Pillar_Language_Specification_Nov88.pdf" id="yui_3_16_0_1_1475945206453_12949">http://bitsavers.trailing-edge.com/pdf/dec/prism/mica/Pillar_Language_Specification_Nov88.pdf</a><br></span></div><div dir="ltr"><span id="yui_3_16_0_1_1475945206453_12950"><br></span></div><div dir="ltr" id="yui_3_16_0_1_1475945206453_12955"><span id="yui_3_16_0_1_1475945206453_12950">Thanks in advance</span></div> <div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"><font size="2" face="Arial"> El Sábado 8 de octubre de 2016 12:01, dirk muysers <dmuysers@hotmail.com> escribió:<br></font></div>  <br><br> <div class="y_msg_container"><div id="yiv2727275971">

 

<div>
<div id="yiv2727275971__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 rel="nofollow" target="_blank" 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="yiv2727275971mb_sig"></div>
</div>
</div>

</div><br>_______________________________________________<br>M3devel mailing list<br><a ymailto="mailto:M3devel@elegosoft.com" href="mailto:M3devel@elegosoft.com">M3devel@elegosoft.com</a><br><a href="https://m3lists.elegosoft.com/mailman/listinfo/m3devel" target="_blank">https://m3lists.elegosoft.com/mailman/listinfo/m3devel</a><br><br><br></div>  </div> </div>  </div></div></body></html>