[M3devel] Modula-3 questions

Rodney M. Bates rodney_bates at lcwb.coop
Thu Apr 19 16:54:06 CEST 2012



On 04/18/2012 06:13 PM, Coleburn, Randy wrote:
> Marresh:
>
> I've programmed in a number of different languages.
>
> For me, I've found that Modula-3 is the best for most of what I do.
>
> Further, I've found that the concepts in Modula-3 help you think through things in a more complete manner, thereby making you a better programmer.
>
> When I've been forced to use other languages, I've often found myself starting out in Modula-3 and then translating to the other language once the main concepts are defined.
>
> Just because Modula-3 is touted as a systems programming language doesn't mean it is too complex for simpler projects; however, if you are only wanting to write very simple, independent programs that won't ever have any parts reused anywhere else, you may find the initial discipline of interfaces and implementations a bit verbose.
>
> The language itself is really quite compact, given its power, and the concepts are straightforward and don't throw you curve balls.
>
> I can't really comment much about Oberon as I haven't used it much.
>
> As for C and C++, I remember a quote from an instructor years ago that you may find interesting:  "The good news about C++ versus C is that it is harder to shoot yourself in the foot, but the bad news is that when you do, you blow your whole leg off."
>

I don't really believe this, for several reasons.  C++ does add some things that make it harder.  For example, you can use
library (library is not language, BTW) versions of arrays, at the usual costs of heap-allocation, sometimes unnecessary.
But it only works if you use it.  If you do an array-bounds thing, you can blow your leg off just as badly in C as in C++.
C++ preserves C's broken half-treatment of arrays, with the same possibilities for these bugs.

Meanwhile, C++ adds a lot of additional ways to shoot yourself in the foot.  For example, the user-defined overloading system
means you can add a function declaration and have existing calls silently switch from whatever function they used to call
to your new one.  Or the reverse.  Deleting a declaration could result in existing calls on it silently switching to some
other function, instead of giving compile errors, as you would expect.  A nightmare if the code is anything but small.

> WRT Java, my understanding is that the original designers borrowed some concepts from Modula-3, but that alone doesn't make up for other problems with Java.
>
> I'm not sure if anyone has done any recent bindings to GUI toolkits.
>
> Hope this helps.
>
> --Randy Coleburn
>
>
> -----Original Message-----
> From: penn43 at gmx.com [mailto:penn43 at gmx.com]
> Sent: Wednesday, April 18, 2012 6:10 PM
> To: m3devel at elegosoft.com
> Subject: [M3devel] Modula-3 questions
>
> Dear Modula-3 developers,
>
> I am not a Modula-3 user, but I am considering becoming one. I have already had a look at the language, and it certainly looks interesting. However, I still have some misgivings about starting learning Modula-3, since it would be a considerable time investment and I am not even sure if Modula-3 is the right tool for me.
> I hope you can help me clarify some points and dispel some doubts.
>
> The first point is that I would neither be working on large projects, nor doing systems programming. I understand these were the two major strengths of Modula-3, but neither would be useful in my case, as I would be programming mostly small- and medium-sized applications, not even industrial-level. What I need is simply a tool that can be used instead of C++ and Java. Modula-3 looks fine, because it promises to be simple. However, having read that Modula-3 was designed especially for industrial-strength and advanced uses, I am afraid that adopting Modula-3 as my development tool might be an overkill. Could you advise me in this regard?
>
> Secondly, could you please help me understand what are the reasons for which one may prefer Modula-3 over Oberon-2/Active Oberon? I have been considering Oberon too because, like Modula-3, it promises to be simple and minimalistic.
> So, again, keeping in mind that I don't need the advanced features mentioned above, nor multithreading, does it make any sense for me to choose Modula-3 instead of Oberon, or Object Pascal?
>
> Lastly, what is the current availability of Modula-3 libraries? I have read that Modula-3 has a rich set of libraries, but that was many years ago. Are there any up-to-date libraries, fulfilling today's needs? I am mostly interested in GUI support (possibly bindings to some standard GUI toolkit, like GTK or QT, or wxWidgets), internet libraries and UTF-8 support.
>
> I thank you in advance.
>
> Best regards,
>
> Marresh
>
> P.S. is the creation and maintenance of module interfaces all that trouble? I read somewhere that it is a pain, and that the inconvenience of it would only be paid off when one has to manage large projects (which is not my case).
>



More information about the M3devel mailing list