<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Apple Color Emoji";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.E-MailFormatvorlage18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=DE-CH link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>J.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>I know it’s not perfect but:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>1 and 2 can somewhat (not totally perhaps kind of) be covered with Oberon SETs.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>3 I do with MODs and DIVs (the compiler converts those in simple shifts)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>4 ARRAY OF SETs<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>5 is called “ofront”<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Under the assumption that the underlying instruction set (assembler code) does not allow to access those single or multi-bit entities (e.g. only access BYTEs), the whole bit variables you request is “syntactical sugar”. The compiler would have to translate it in ANDs, ORs, RORs, Shifts and so. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>br<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Jörg<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:12.0pt;color:black'>Von: </span></b><span style='font-size:12.0pt;color:black'>Oberon <oberon-bounces@lists.inf.ethz.ch> im Auftrag von Jan de Kruyf <jan.de.kruyf@gmail.com><br><b>Antworten an: </b>ETH Oberon and related systems <oberon@lists.inf.ethz.ch><br><b>Datum: </b>Donnerstag, 16. August 2018 um 11:53<br><b>An: </b>ETH Oberon and related systems <oberon@lists.inf.ethz.ch><br><b>Betreff: </b>Re: [Oberon] FPGA - Simple OOP example<o:p></o:p></span></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So let me be the devil's advocate:<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I program embedded stuff. And for lack of integration of Oberon into main line engineering <o:p></o:p></p></div><div><p class=MsoNormal>I am forced to use another language. I chose Ada because it is relatively easy to understand <o:p></o:p></p></div><div><p class=MsoNormal>the syntax when you first start out.<o:p></o:p></p></div><div><p class=MsoNormal>At the same time it is bulky and slow in use. The paranoid security of it hampers the readbility and does<o:p></o:p></p></div><div><p class=MsoNormal>not really improve the bug situation.  The code is as efficient as GCC can make it. <o:p></o:p></p></div><div><p class=MsoNormal>Which is pretty good, but at a price.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>For Oberon to be a real alternative I would minimally need:<o:p></o:p></p></div><div><p class=MsoNormal>1. single bit variables.<o:p></o:p></p></div><div><p class=MsoNormal>2. packed arrays of those.<o:p></o:p></p></div><div><p class=MsoNormal>3. if at all possible multi bit variables (2, 3, 4, 5 etc.)<o:p></o:p></p></div><div><p class=MsoNormal>4. packed records of single and multi bit variables.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The single bit stuff I did many years ago in Oberon-0 for AVR and it was not difficult.<o:p></o:p></p></div><div><p class=MsoNormal>All the OOP stuff as in C++ and Ada only confuse me further so I have no use for them. <o:p></o:p></p></div><div><p class=MsoNormal>There are other ways of sane thinking that give the same benefits. I am very<o:p></o:p></p></div><div><p class=MsoNormal>much in agreement with NW on that.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>In any case: then there is item 5:<o:p></o:p></p></div><div><p class=MsoNormal>  An Oberon front end for GCC. so we have a proper Application Binary Interface and<o:p></o:p></p></div><div><p class=MsoNormal>can hang some libc onto it. And have an interface to other languages. AND use any <o:p></o:p></p></div><div><p class=MsoNormal>controller for which GCC has a back end. And have industry standard load files that can <o:p></o:p></p></div><div><p class=MsoNormal>used where ever.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>To think that we must forever and in eternity use hand-crafted compilers that become, <o:p></o:p></p></div><div><p class=MsoNormal>after time, most difficult to maintain is to me plain religious lunacy.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So I am open to suggestions from the group. The GCC stuff must be done first. <o:p></o:p></p></div><div><p class=MsoNormal>The rest can be discussed over time.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Enjoy the summer holidays all.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>j.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>On Thu, Aug 16, 2018 at 10:02 AM, Diego Sardina <<a href="mailto:dsar@eml.cc" target="_blank">dsar@eml.cc</a>> wrote:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><p class=MsoNormal>On Thu, Aug 16, 2018, at 9:23 AM, Tomas Kral wrote:<br>> On Thu, 16 Aug 2018 08:38:04 +0200<br>> Jan de Kruyf <<a href="mailto:jan.de.kruyf@gmail.com">jan.de.kruyf@gmail.com</a>> wrote:<br>> <br>> > The spirit of Edsger Dijkstra is still haunting us. <span style='font-family:"Apple Color Emoji"'>😠</span> Rational<br>> > western man or not.<br>> <br>> Modern trends usually are very complex, the spirit of Oberon is quite<br>> the opposite, keep it simple minimal, and leave out the fancy.<br>> <br><br>Just some days ago I (casually) found in my old hard disk an interesting<br>paper by Hoare about language design, it's still available on the web:<br><br><a href="http://web.eecs.umich.edu/~bchandra/courses/papers/Hoare_Hints.pdf" target="_blank">http://web.eecs.umich.edu/~bchandra/courses/papers/Hoare_Hints.pdf</a><br><br>Briefly, Oberon fullfills all of Hoare's requirements:<br><br>"A good language design may be summarized in five catch phrases: simplicity, security, fast translation, efficient object code, and readability."<br><br>--<br>Diego Sardina<o:p></o:p></p><div><div><p class=MsoNormal>--<br><a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br><a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><o:p></o:p></p></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>-- Oberon@lists.inf.ethz.ch mailing list for ETH Oberon and related systems https://lists.inf.ethz.ch/mailman/listinfo/oberon <o:p></o:p></p></div></body></html>