Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

Victory or defeat!


devel / comp.lang.ada / More of my philosophy about Superpascal and about CSP(Communicating sequential processes) and more..

SubjectAuthor
o More of my philosophy about Superpascal and about CSP(CommunicatingAmine Moulay Ramdane

1
More of my philosophy about Superpascal and about CSP(Communicating sequential processes) and more..

<5fb7adc5-fcf8-44eb-8aee-afc1c8e232b0n@googlegroups.com>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=6346&group=comp.lang.ada#6346

 copy link   Newsgroups: comp.lang.ada
X-Received: by 2002:ac8:5a84:: with SMTP id c4mr2382386qtc.565.1638308833888;
Tue, 30 Nov 2021 13:47:13 -0800 (PST)
X-Received: by 2002:a5b:950:: with SMTP id x16mr1969886ybq.675.1638308833667;
Tue, 30 Nov 2021 13:47:13 -0800 (PST)
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.ada
Date: Tue, 30 Nov 2021 13:47:13 -0800 (PST)
Injection-Info: google-groups.googlegroups.com; posting-host=173.178.84.155; posting-account=R-6XjwoAAACnHXTO3L-lyPW6wRsSmYW9
NNTP-Posting-Host: 173.178.84.155
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5fb7adc5-fcf8-44eb-8aee-afc1c8e232b0n@googlegroups.com>
Subject: More of my philosophy about Superpascal and about CSP(Communicating
sequential processes) and more..
From: amine...@gmail.com (Amine Moulay Ramdane)
Injection-Date: Tue, 30 Nov 2021 21:47:13 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: Amine Moulay Ramdane - Tue, 30 Nov 2021 21:47 UTC

Hello,

More of my philosophy about Superpascal and about CSP(Communicating sequential processes) and more..

I am a white arab from Morocco, and i think i am smart since i have also
invented many scalable algorithms and algorithms..

I think i am smart, and i am also programming in Object Pascal
of Delphi and Freepascal, and i think i am also a smart "Wirthian" programmer of the Wirthian familly of ALGOL-like languages, since i have programmed in Pascal and i have also programmed in Superpascal(You can read about it here: https://en.wikipedia.org/wiki/SuperPascal), and
i have programmed in Object Pascal of Delphi and Freepascal, and i know more about Superpascal, that was an interesting enhancement of the pascal language, that brought an enhanced in a form of a "Forall" statement that is like a Parallel For loop, and that brought an
enhancement in a form of "Channels" that look like Go channels and that permit to code parallel programs, so the Superpascal channels allowed us to program like in CSP(Communicating sequential processes) that is a formal language for describing patterns of interaction in concurrent systems. And CSP(Communicating sequential processes) is a member of the family of mathematical theories of concurrency known as process algebras, or process calculi, based on message passing via channels, so Superpascal Channels allowed us to avoid parallel bugs such as race conditions, but i think that those channels can also be used in a more simple way like in the following article, so that they permit to avoid race conditions and that's also i think a much better enhancement, so read the following article so that to know about the more simple way of using Go channels or Superpascal channels so that to avoid race conditions:

https://fodor.org/blog/go-avoiding-race-conditions/

And so that you get an idea about Superpascal, you can look
at its source code in Freepascal here in Gitub:

https://github.com/octonion/superpascal

So as you notice that Superpascal programming language, that was invented in year 1993, has preceded Go programming language by providing Channels etc.. that permit to do parallel programming by avoiding race conditions and such parallel programming bugs.

But you have to know that i am smart and i have also enhanced
Object Pascal of Freepascal and Delphi by inventing the following
Threadpool that scales well and that supports parallel for loop,
you can read about it carefully here in my websites:

https://sites.google.com/site/scalable68/an-efficient-threadpool-engine-with-priorities-that-scales-very-well

And i have also enhanced Object Pascal of Freepascal and Delphi by
inventing a Scalable reference counting with efficient support for weak references, you can take a look carefully about it here in my websites:

https://sites.google.com/site/scalable68/scalable-reference-counting-with-efficient-support-for-weak-references

So as you notice that i am also an inventor of many scalable algorithms
and algorithms..

More of my philosophy about stack memory allocations and about preemptive and non-preemptive timesharing..

I think i am smart, and as you are noticing in my below thoughts that
i am abstracting smartly so that to make you understand preemptive and non-preemptive timesharing , other than that i will also give you
an interesting Stack memory allocation algorithm in Delphi and Freepascal so that to use it smartly with my below sophisticated Stackful coroutines Library, so i will extend my sophisticated Stackful coroutines Library so that to support it smartly, and here it is:

--

var pool: array [1..limit] of integer;
memory: array [min..max] of integer;
top: integer;

procedure initialize;

var index: integer;

begin
for index := 1 to limit do
pool[index] := empty;
top := min − 1
end;

procedure allocate( index, length: integer; var address: integer);

begin

address := pool[index];
if address <> empty then
pool[index] := memory[address]
else
begin
address := top + 1;
top := top + length;
if not (top <= max)
then raise Exception.Create('Stack overflow..')

end
end;

procedure release( index, address: integer);
begin
memory[address] := pool[index];
pool[index] := address
end;

--

More of my philosophy about about the paper and about preemptive and non-preemptive timesharing and more..

I have just forgotten to post about who has written the following
paper about cooperative and preemptive tasking:

https://users.ece.cmu.edu/~koopman/pubs/koopman90_HeavyweightTasking.pdf

Here is the Professor Phil Koopman of Carnegie Mellon University from Department of Electrical and Computer Engineering who has written
this paper:

https://users.ece.cmu.edu/~koopman/personal.html

And note that i am calling, in my thoughts below, cooperative and preemptive tasking: "preemptive and non-preemptive timesharing"

More of my philosophy about Intel 8051 controller and about preemptive and non-preemptive timesharing and more..

I have just quickly read the following interesting paper and it says
that judicious use of cooperative tasking techniques can also often meet an embedded system's multitasking requirements, while giving better
performance and a simpler software environment than a preemptive multitasker, so read it carefully here:

https://users.ece.cmu.edu/~koopman/pubs/koopman90_HeavyweightTasking.pdf

And notice that it also says in the above paper that so that to meet
the requirements with cooperative multitasking you have to move the time-critical code to interrupt-service routines. And let us look
for example at the Intel 8051 controller here:

https://www.electronicwings.com/8051/introduction-to-8051-controller

So as you notice that it has many hardware interrupts that you can
use so that to make the cooperative tasking efficient, and i think it also comes with two clock timers interrupts that you can use to implement preemptive multitasking if you want, and you have also to know about interrupt latency when programming embedded systems with hardware controllers, and you have to know that the hardware interrupts have to get serviced fast enough and often enough, so you shouldn't disable
interrupts for too long a period of time, and just to give you an idea
, look for example at the nonbuffered communication UART (Universal
Asynchronous Receiver Transmitter) operating at 38,400 bits per second will interrupt every 208 microseconds. This is 1/38,400*8 because they
will interrupt for every byte (8 bits), and a processor or controller running at 25MHz executes most of its instructions in
2 or 3 system-clock periods. That would be an average of 120 nanoseconds
(1/25,000,000*3). In theory, this means you could execute as
many as 1,730 instructions in the interrupt interval. So that was only
in theory, now you have to do the reality check. You must take into
consideration that there are more interrupts than just that communication channel. The timer interrupt will be firing off every so often. And the communication interrupt itself will have interrupts
disabled for good period of time, and not only that, but there is also the tasks switch that can be expensive, so you have to think about
it efficiently.

So i invite you to read my below thoughts about preemptive and non-preemptive timesharing and more so that to understand much more efficiently:

More of my philosophy about preemptive and non-preemptive timesharing and more..

I have just took a smart look at Modula-2 language(Modula-2 is a structured, procedural programming language developed between 1977 and 1985 by Niklaus Wirth at ETH Zurich, and he has also developed Pascal
language, read about Niklaus Wirth here: https://en.wikipedia.org/wiki/Niklaus_Wirth), and i think Modula-2 language was among the first languages that has provided preemptive and non-preemptive timesharing with coroutines, but the preemptive timesharing in Modula-2 uses Interrupt handling using IOTRANSFER, but it is best reserved for programs that will run without operating system support. Installing an interrupt handler on a multiuser system is not feasi­ble because doing so would affect other users. (For this reason, IOTRANSFER is not a mandatory feature of Modula-2.) Even on single-user systems, IOTRANSFER can be difficult to use because installing an interrupt handler causes the old interrupt handler (which most likely belongs to the operating system) to be lost. So this is why i think that the best way in modern operating systems is to use non-preemptive timesharing with coroutines, so this is why i am providing you with my sophisticated implementation of stackful coroutines, read about it in my thoughts below:

More of my philosophy about timesharing that is a Solution to Computer Bottlenecks..

I invite you to look at the following very interesting video about timesharing that is a Solution to Computer Bottlenecks:

https://www.youtube.com/watch?v=Q07PhW5sCEk

I think i am smart, and you have to understand one important thing
and it is: What is the difference between a software architect and
a software engineer?, i think there is an important difference and it
is also like abstracted in the following question:

"How it is made?"

So i think that software engineering works at a higher level than
a software architect, this is why you will notice that i am
quickly implementing a sophisticated stackful coroutines
Library and i am quickly implementing setjmp() and longjmp() with
x64 assembler or code machine, read my below thoughts about them, but you have to know that my sophisticated stackful coroutines Library
does a kind of timesharing as in the above video, but i think that there is two kinds of timesharing: the preemptive one, and the non-preemptive one, but the difference is that the preemptive one does interrupt with a timer the coroutines from an external scheduler in
a form of function, but notice below that i am implementing the non-preemptive timesharing in my sophisticated coroutines Library, but you have to be smart and notice that my way of doing is like the software architect way, since i am implementing it from the lowest level with x64 assembler routines that are part of the non-preemptive scheduler, but not only that, but you have also to look at how i am also implementing a
sophisticated and much more rich interface in my stackful coroutines Library, so it is like both software achitecting and software engineering, so here is all my below thoughts that shows how i am implementing it quickly, so read it carefully since you have also to know what's the problem with the stack frames when architecturing and using the setjmp() and longjmp() so that to implement coroutines:


Click here to read the complete article
1
server_pubkey.txt

rocksolid light 0.9.7
clearnet tor