Hello,
More "philosophy" about parallel computing and computing..
As you have noticed in my previous post i have just spoken
about the local views and understanding and the global views and understanding, those are important characteristics of smartness of
computing, i give you an example, look at how i am explaining
the following (and read the rest in what's following):
==============================================================
More about research and software development..
I have just looked at the following new video:
Why is coding so hard...
https://www.youtube.com/watch?v=TAAXwrgd1U8
I am understanding this video, but i have to explain my work:
I am not like this techlead in the video above, because i am also an "inventor" that has invented many scalable algorithms and there implementions, i am also inventing effective abstractions, i give you an example:
Read the following of the senior research scientist that is called Dave Dice:
Preemption tolerant MCS locks
https://blogs.oracle.com/dave/preemption-tolerant-mcs-locks
As you are noticing he is trying to invent a new lock that is preemption tolerant , but his lock lacks some important characteristics, this is why i have just invented a new Fast Mutex that is adaptative and that is much much better and i think mine is the "best", and i think you will not find it anywhere, my new Fast Mutex has the following characteristics:
1- Starvation-free
2- Good fairness
3- It keeps efficiently and very low the cache coherence traffic
4- Very good fast path performance (it has the same performance as the
scalable MCS lock when there is contention.)
5- And it has a decent preemption tolerance.
this is how i am an "inventor", and i have also invented other scalable
algorithms such as a scalable reference counting with efficient support
for weak references, and i have invented a fully scalable Threadpool,
and i have also invented a Fully scalable FIFO queue, and i have also
invented other scalable algorithms and there inmplementations, and
i think i will sell some of them to Microsoft or to Google or Embarcadero or such software companies.
Read my following writing to know me more:
More about computing and parallel computing..
The important guaranties of Memory Safety in Rust are:
1- No Null Pointer Dereferences
2- No Dangling Pointers
3- No Buffer Overruns
I think i have solved Null Pointer Dereferences and also solved Dangling Pointers and also solved memory leaks for Delphi and Freepascal by inventing my "scalable" reference counting with efficient support for weak references and i have implemented it in Delphi and Freepascal, and reference counting in Rust and C++ is "not" scalable.
About the (3) above that is Buffer Overruns, read here about Delphi
and Freepascal:
What's a buffer overflow and how to avoid it in Delphi?
http://delphi.cjcsoft.net/viewthread.php?tid=49495
And I have just read the following web page:
https://www.codeproject.com/Articles/1252175/Fixing-Delphis-Interface-Limitations
But i don't agree with the writting of the guy of the above web page, because i think you have to understand the "spirit" of Delphi, here is why:
A component is supposed to be owned and destroyed by something else, "typically" a form (and "typically" means in english: in "most" cases, and this is the most important thing to understand). In that scenario, reference count is not used.
If you pass a component as an interface reference, it would be very unfortunate if it was destroyed when the method returns.
Therefore, reference counting in TComponent has been removed.
Also because i have just added TAMInterfacedPersistent to my invention.
To use scalable reference counting with Delphi and FreePascal, just replace TInterfacedObject with my TAMInterfacedObject that is the scalable reference counted version, and just replace TInterfacedPersistent with my TAMInterfacedPersistent that is the scalable reference counted version, and you will find both my TAMInterfacedObject and my TAMInterfacedPersistent inside the AMInterfacedObject.pas file, and to know how to use weak references please take a look at the demo that i have included called example.dpr and look inside my zip file at the tutorial about weak references, and to know how to use delegation take a look at the demo that i have included called test_delegation.pas, and take a look inside my zip file at the tutorial about delegation that learns you how to use delegation.
I think my Scalable reference counting with efficient support for weak references is stable and fast, and it works on both Windows and Linux, and my scalable reference counting scales on multicore and NUMA systems,
and you will not find it in C++ or Rust, and i don't think you will find it anywhere, and you have to know that this invention of mine solves
the problem of dangling pointers and it solves the problem of memory leaks and my scalable reference counting is "scalable".
And please read the readme file inside the zip file that i have just extended to make you understand more.
You can download my new scalable reference counting with efficient support for weak references version 1.37 from:
https://sites.google.com/site/scalable68/scalable-reference-counting-with-efficient-support-for-weak-references
================================================================
So as you are noticing that smartness of computing is also that
we are also the process of going from the local view and understanding to the general or global view and understanding that is more efficient, this
is why you are noticing that scientists are first studying equipping themselves with local views and understanding and also with smartness they
are going further to a more global view and understanding , and also
this permits them to invent more efficient inventions like
i am doing above with my new invention of my Fast Mutex.
This is why i said the following:
I said before:
What is smartness in computing or parallel computing ?
I think being smart at computing or parallel computing is
also what we call smartness , but what is it ?
I think you have to analyze my below SemaMonitor and SemaCondvar
to notice that it is also smartness, because what i am
doing in my below software project is like playing "smartly" at the game of chess to be able to be successful, so if you are noticing in my below software project that i am constructing like a "protocol" that is efficient,
this protocol is based on a language constituted of efficient commands, it
is also like a sophisticated automaton that is constructed with smartness,
and this sophisticated automaton permits an efficient protocol that is based on an efficient language that must be able to allow us to "express" "efficiently"(with smartness) what we want, this is what i am doing in my software project below, and the inner of the sophisticated automaton must be efficient (notice also that i am garbage collecting efficiently inside the wait() method), and notice how i am thinking it smartly, i am like finding the different ways of the game of chess and after that "organizing" and "managing" so that to be successful, and it is what we call smartness.
Look at the source code of my following new SemaCondvar and SemaMonitor version 2.2 to notice it:
My SemaCondvar and SemaMonitor version 2.2 are here..
Now i think they are working perfectly, and notice that i have
changed a little bit there interface.
Please read the readme file to know how to use them.
You can download them from:
https://sites.google.com/site/scalable68/semacondvar-semamonitor
And the lightweight version is here:
https://sites.google.com/site/scalable68/light-weight-semacondvar-semamonitor
If i say to you the following:
I need an efficient protocol to express efficiently this or that..
This is a good way to understand more computing, because you are
feeling that it needs transcendence and it needs smartness to compose,
this is the same for morality, you have to be able to define the rules
of morality , but this needs global views and understanding
and local views and understanding, this is how is smartness of computing,
because when i invented and implemented my SemaMonitor and SemaCondvar,
i needed to be capable local understanding and views of how to implement a Semaphore and how to implement an Eventcount and how to implement a condition variable and how to implement windows event objects and make them portable, and i needed also to be capable of a global understanding and view so that to combine them efficiently and combine them also in an efficient protocol, so as you are noticing that smart computing needs transcendence and smartness and efficiency, and speaking about efficiency , i invite you to read my following thoughts of my political philosophy:
But you have to be capable of philosophy to understand more,
because read my following thoughts about other requirements that are important:
What is happening in my brain ?
I will speak more about me so that you understand my way of doing since
it is also like my philosophy, to be more smart you have to be capable
of reducing efficiently "complexity" so that to be efficient and so that
to be more successful, but how can you do it ? you have to be able
to know about the steps that guides you into the right direction,
first i will speak about my way so that you understand me better,
first step you have to be able to "prioritize" efficiently, because
to be able to be successful you have to prioritize, so look for example
at me, i have decided to "study" more and to study more "efficiently" so that to be more successful, but this is not "sufficient" to know, because to be able to be efficient at reducing complexity you have to be able to be efficiently selective of your knowledge, and this efficiently "selective" has to adhere in its turn to the process of being efficient at reducing "complexity", so you have to be able to select "efficiently" "efficient" knowledge that is more "easy" to learn so that to reduce complexity, thus you have to be able to ask "questions" to this or that right persons to be able to be efficient at selecting your "knowledge", next step you have to be "tenacity" at studying efficiently and you have to study more and more and you have to ask questions to your professors and next step after you have been able to learn more and more you have to be able at being efficient at "reusability" of your efficient knowledge and this is a very important step , so don't neglect efficient "reusability" of your knowledge, this is also the steps that i have followed and i have also used my "smartness" to be more efficient.
Thank you,
Amine Moulay Ramdane.