[fpc-pascal] Re: operator overloading and counting references / creating / destoying anonymous instances
Jürgen Hestermann
juergen.hestermann at gmx.de
Sat Jul 30 11:33:56 CEST 2011
Henry Vermaak schrieb:
>> I think operator overloading is a pain. As you said: What is the
>> advantage? For me operators should be defined by the language only
> It improves readability, making it more logical.
Just the opposite! It hides important imformation for the reading person.
> Say for instance you are working on Galois fields and you have to do
arithmetic on the elements like this:
> g1 + g2 / g3
> If you don't have operator overloading, you have to do it with
functions, like this:
> gf_add(g1, gf_div(g2, g3))
> This is not very readable, I'm sure you will agree.
No, I don't agree at all. The procedure call clearly shows me that a
complex calculation is done instead of an (atomic) add and division
command on numbers.
For me the basic operators should be just that: Basic operators.
Otherwise you have problems to interpret code.
For example, IMO the assignment := should just copy bytes, nothing
more. There can be additional range checks but it should not lead to
side effects you are not aware of. I had a hard time to find out that a
simple "A:=nil" on a dynamic array does more than just copying bytes to
the memory adress of A. As a side effect it uses the current pointer in
A and frees memory. But I had just read this data from a file so that
the pointer was garbage. I just wanted to init A. But what a surprise
that this atomic assignment command does more on dynamic arrays! If I
create pointers to types on my own, this does not happen.
Operator overloading weakens the meaning of the operators. It can be
just everything but you do not see it anymore.
>> clear. But now there is no way back. It's implemented. Pascal moves
in C direction...
> Troll. C has no operator overloading.
I meant it in a more general spirit: Pascal was created to be clear and
unambiguous while C was an improved assembler which ignored any kind of
readability. Now all these obscure things creep into Pascal too so that
in this respect there is not much difference between current C(++) and
current Pascal compilers anymore.
More information about the fpc-pascal
mailing list