[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