[fpc-devel] Macro Processing

Martin fpc at mfriebe.de
Tue May 17 13:59:57 CEST 2011


On 17/05/2011 12:19, Joerg Schuelke wrote:
> Am Mon, 16 May 2011 15:35:24 +0100
> schrieb Martin<fpc at mfriebe.de>:
>
>> {$EXPAND ProcFoo(1)}
>> // the code in thr try finally block
>> {$EXPAND ProcFooEnd}
>>
>> I can see that happen very easy?
>> And there we are, Pascal would be down to where C is now.
> There is no answer for that, you know. But you can always decide not to
> accept any code inside rtl, packages,tools, whatever which contains
> macros. Easy. If it compiles with warning, back to sender.
1) The point is, one may not be able to reject it.
If I used a 3rd party package (open source) for a long time, heavily 
relaying on it. And the add it, and I need a bug fix, that requires me 
to update....

2) the example itself is beside the point.
All our examples are beside the point. Mine, yours, any

I think we can easily agree on the following:
1) It is possible to find examples that some people may want to use 
(never mind if alternatives exist)
2) It is always possible to find examples of (lack of a better word): 
"abuse"

As for 1, you made yourself a statement: It will be a few people only in 
some rare cases. I can try to find your emails.
As for 2, it is mostly there problem, so why bother? Except for if such 
code gets into the public domain, as described above

Any way, I feel neither of those 2 statements can be argued (with the 
hope of success). I think that can be concluded,  after about 85 mails, 
trying to find the ultimate example for either side, and no-one any 
closer to "proving their point"...

-----

Or at least they can not be argued, unless we answer this question:

Should the compiler protect people from doing potentially dangerous 
thinks (knowing this is never a 100% protection anyway)

C obviously doesn't give a damm what people do to themself.
Pascal is supposed to care about it?

If that care is wanted, then the bad examples may gain some importance....

------
To me that leaves one other remaining questions. But feel free to add 
other points...

Looking at it as a potential feature. How does one evaluate if a feature 
should be added.
After all adding features has always been a selective process. this is 
not new for this case....

1) Is there a need for this feature => We apparently have trouble to 
agree on this point. There may be a need for some
2) Does the cost/benefit equation work out

We need to define "need (for feature)", "cost" and "benefit" (benefit is 
somewhat coupled to need)

For you as an individual, there is a need, and the benefit is bigger 
than the cost.
For me as individual, it is the opposite.

To get a fairer measure we can (in my opinion) only base this on average 
values. If you take the entire community, and (in lack of better data 
take a guess how many people need it, how many may use it, and how many 
may be affected. And assume some averages based on this.

The definition of the terms below, are not solely meant for "macro 
feature" => they apply to every feature (past/future/accepted/rejected)
- every feature shares the same risks, and provides benefits, and for 
every feature this cost/benefit can be calculated

"need"
  => The amount of people that want this feature to be implemented (in 
this case feature means the extension from what it currently already is)
  => It should not matter "why" they want it (because we tried that 
discussionm without success), but only "if" they want it.

"cost"
=> side-effects of the feature
- This can be the above described undesired exposure to the use of the 
feature by others (in the case that use of the code of the other can not 
be avoided). Probably low risk.
- this can be any side effect it has on the compiler.  (all those are 
potential / the may or may not apply, the may pose a very small, or not 
so small risk...)
    Bugs intruduced (now or in future)
    Resource usage, memory, cpu time (potential slow down)
    Effects on future features / making it harder to add other features 
(which may be wanted by a bigger amount of people, provide greater benefits
    Maintenance cost of the code itself

"benefit"
- objective benefits: like the ability to write code that by some 
definition is better/cleaner
- subjective benefits: the ability for some individuals,to use the 
feature, for whatever perceived gain


As for the need/benefit => It is not known how many people would be 
affected.
But you said yourself several times, probably only a few, and only in 
few cases

As for cost, we do not know how many risks will actually turn into 
reality (so maintenance cost for example will exist). But if any risk 
happens to come true, it affects every one.

Based on this. The question is does the benefits really outweigh the cost ?






More information about the fpc-devel mailing list