Yet more about my projects...
The four major components of efficiency are:
1- User efficiency:
The amount of time and effort users will spend to learn how to use
the program, how to prepare the data, and how to interpret and use the
2- Maintenance Efficiency:
The amount of time and effort maintenance programmers will spend
reading a program and its accompanying technical documentation
in order to understand it well enough to make any necessary
3- Algorithmic complexity:
The inherent efficiency of the method itself, regardless of wich
machine we run it on or how we code it.
4- Coding efficiency:
This is the traditional efficiency measure. Here we are concerned
with how much processor time and memory space a computer program
requires to produce correct answer.
Twenty years ago, the most expensive aspect of programming was computer
costs, consequently we tended to "optimize for the machine." Today,
the most expensive aspect of programming is the programmers costs,
because today programmers cost more money than hardware.
Computer programs should be written with these goals in mind:
1- To be correct and reliable
2- To be easy to use for its intended end-user population
3- To be easy to understand and easy to change.
Here is among other things the key aspects of end-user efficiency:
1- Program robustness
2- Program generality
4- Input/Output behavior
5- User documentation.
Here is the the key points in achieving maintenance efficiency:
1- A clear, readable programming style
2- Adherence to structured programming.
3- A well-designed, functionally modular solution
4- A thoroughly tested and verified program with build-in debugging
and testing aids
5- Good technical documentation.
You have to know that i have used a Top-Down methodology to design my
projects.. the Top-Down methodology begins with the overall goals of the
program- what we wich to achieve instead of how -, and after that it
gets on more details and how to implement them.
And i have taken care with my objects and modules of the following
- Logical coherence
It is like making more pure functions of functional programming to avoid
side-effects and to easy the maintenance and testing steps.
- Object oriented design and coding
- and also structure design and coding with sequence , iteration and
And about the testing phase read the following:
Alexandre Machado wrote:
>You have published some very interesting code. However a
>few things I noticed, which makes difficult for anyone to
>use your code:
>- You don't have both, unit and performance tests
>Have you ever considered this? I'm sure that it would make
>make it easier for other Delphi devs to start using it, no?
You have to know that i have also used the following method of testing
called black box testing:
This is why i have written this:
I have thoroughly tested and stabilized more my parallel archiver for
many years, and now i think that it is more stable and efficient, so i
think that you can be more confident with it.
This also true for all my other projects, i have followed the black box
testing also with them...
For race conditions , i think for an experienced programmer in parallel
programming like me, this is not a so difficult task to avoid race
For sequential consistency i have also written this:
I have implemented my inventions with FreePascal and Delphi compilers
that don't reorder loads and stores even with compiler optimization, and
this is less error prone than C++ that follows a relaxed memory model
when compiled with optimization, so i have finally compiled my
algorithms implementations with FreePascal into Dynamic Link Libraries
that are used by C++ in a form of my C++ Object Synchronization Library.
So this is much easier to make a correct sequential consistency with
Delphi and Freepascal because it is less error prone.
Other than that you have to know that i am an experienced programmer in
parallel programming also, so i think that my projects are more stable
You can download all my projects from:
Amine Moulay Ramdane..