[Oberon] a module a page (keeps the mind sane)?

Frans-Pieter Vonck fp at vonck.nl
Sun Nov 11 15:54:06 CET 2018


Found the rule in Nasa/JPL  document "Rules of Ten" , written by Gerard 
Holzmann.
The Power of Ten –
Rules for Developing Safety Critical Code


-----------------------------
Rule 4
---------------
  No function should be longer than what can be printed on a single sheet 
of
paper in a standard reference format with one line per statement and one 
line per
declaration. Typically, this means no more than about 60 lines of code 
per function.

Rationale
----------------------
Each function should be a logical unit in the code that is 
understandable
and verifiable as a unit. It is much harder to understand a logical unit 
that spans
multiple screens on a computer display or multiple pages when printed. 
Excessively
long functions are often a sign of poorly structured code.
--------------------------------------
See,
http://spinroot.com/gerard/pdf/P10.pdf

Also interesting presentation by Holzmann about mission critical 
software standards.

Mars Code
https://youtu.be/Dk-tchkQXoQ

Greets,
F.P.

Frans-Pieter Vonck schreef op 2018-11-06 17:45:
> Thanks,
> F.P.
> 
> Charles Perkins schreef op 2018-11-06 16:05:
>> I have found a copy here:
>> http://norayr.am/papers/WirthTasksVersusThreads.pdf
>> 
>> On Tue, Nov 6, 2018 at 5:00 AM Frans-Pieter Vonck <fp at vonck.nl> wrote:
>> 
>>> Hi Chris,
>>> 
>>> do you have by any chance a link for the article "Tasks versus
>>> Threads
>>> [..]"
>>> I cannot find it on the net.
>>> 
>>> From Wirth: "Embedded Systems and Real-Time Programming"
>>> 
>>> " The next decision was to eliminate the RT-OS, as it seemed
>>> possible
>>> to  do  essentially  without  concurrent  processes  in  the  form
>>> of
>>> threads.  The  third
>>> decision was to program the entire software in Oberon [2], which is
>>> very
>>> suitable for
>>> programming close to the hardware."
>>> So he probably used Tasks vs Threads concept for the helicopter.
>>> 
>>>> "Tasks, called commands, are a conceptual pillar of the Oberon
>>>> operating environment. Making them interruptible adds significant
>>>> power to the concept
>>> In the oberon loop the commands are already interrupted by input
>>> events:
>>> keyboard, mouse, network communication. Does he mean, tat a task can
>>> 
>>> interrupt another task?
>>> Explanation must be found in his article.
>>> 
>>> Greets,
>>> F.P.
>>> 
>>> Chris Burrows schreef op 2018-11-06 11:48:
>>>> I recommend that you read Wirth's 1996 paper titled "Tasks versus
>>>> Threads: An Alternative Multiprocessing Paradigm". The relative
>>> merits
>>>> of tasks, processes, coroutines and threads are discussed.
>>>> 
>>>> "An alternative to threads is presented as a paradigm for
>>>> single-processor multi-tasking systems. It avoids complex and
>>> hidden
>>>> mechanisms for process scheduling, and is therefore particularly
>>>> suitable for realtime systems requiring fast response times, and
>>> for
>>>> small systems in general."
>>>> 
>>>> "Tasks, called commands, are a conceptual pillar of the Oberon
>>>> operating environment. Making them interruptible adds significant
>>>> power to the concept and is shown to require surprisingly few
>>> changes
>>>> and additions to the existing system, hence retaining its basic
>>>> compactness and efficiency."
>>>> 
>>>> An implementation of these ideas (called System7) on Native Oberon
>>> can
>>>> be downloaded from the ETH Oberon site:
>>>> 
>>>> ftp://ftp.ethoberon.ethz.ch
>>>> 
>>>> by following the path:
>>>> 
>>>> ETHOberon/Contrib/System7/
>>>> 
>>>> Now that interrupts are working on Project Oberon 2013 it would be
>>> an
>>>> interesting exercise to try out these concepts there as well,
>>>> 
>>>> Regards,
>>>> Chris
>>>> 
>>>> Chris Burrows
>>>> CFB Software
>>>> http://www.astrobe.com/RISC5
>>>> 
>>>>> -----Original Message-----
>>>>> From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf
>>> Of
>>>>> Frans-Pieter Vonck
>>>>> Sent: Tuesday, 6 November 2018 6:39 PM
>>>>> To: Jörg Straube
>>>>> Cc: ETH Oberon and related systems; paulreed at paddedcell.com
>>>>> Subject: Re: [Oberon] a module a page (keeps the mind sane)?
>>>>> 
>>>>> Hi J rg,
>>>>> 
>>>>> I saw the coroutine module is not yet written for project oberon.
>>>>> But that does not keep me from trying out the concept of
>>> cooperatieve
>>>>> multitasking.
>>>>> I will look into that,
>>>>> 
>>>>> Thanks.
>>>>> F.P.
>>>>> 
>>>>> J rg Straube schreef op 2018-11-05 23:22:
>>>>>> F.P.
>>>>>> 
>>>>>> Installing tasks in the Oberon loop is THE way to enable multi
>>>>> tasking
>>>>>> in Oberon.
>>>>>> 
>>>>>> T := Oberon.NewTask(myHandler, 1000);
>>>>>> Oberon.Install(T);
>>>>>> 
>>>>>> Every 1000 ms the procedure  myHandler  will be called.
>>>>>> 
>>>>>> Another way to have cooperative multitasking is to implement
>>> module
>>>>>>  Coroutines .
>>>>>> 
>>>>>> br
>>>>>> J rg
>>>>>> 
>>>> 
>>>> 
>>>> --
>>>> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
>>>> systems
>>>> https://lists.inf.ethz.ch/mailman/listinfo/oberon
>>> --
>>> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
>>> systems
>>> https://lists.inf.ethz.ch/mailman/listinfo/oberon
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related 
> systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon


More information about the Oberon mailing list