Subject Re: [IB-Architect] How about {$IFDEF xxx} {$ENDIF}
Author Jim Starkey
At 03:43 PM 12/13/01 -0300, Clément Doss wrote:
>Hi all
>
>I was thinking now that IB and FB have shown signs of different paths, it
might be useful to have
>some kind of
>
>{$IFDEF __FIREBIRD}
> SELECT FIRST 10 SKIP 5 * FROM MYTABLE
>{$ELSE}
> SELECT * FROM MYTABLE
> ROWS 6 to 10
>{$ENDIF}
>

<rant level=wolf authorization=helen>

I know of no way to render a code base unmaintainable more
quickly or more effectively that to introduce conditional
compilation.

Much of the reason that I was able to write the Interbase engine,
remote interfaces (tcp, decnet, apollo ring), gpre (C and two
pascal variants), gbak, gdef, qli, and dsql in about a year
while 40 open source developers have struggled for nearly a
year and a half to make the most modest of extensions is that
I had clean, simple code, and you guys have an absolute warren
of horrible, intertwined, utterly incomprehensible, infinitely
conditional crap. When I left the code base not 5% of the modules
contained any conditional code whatsoever. Now, I can't
even follow the code I wrote without considering the effects
of a half dozen dead code branches.

Conditional code is either admission of incompetence, an
unavoidable recognition of incompetence in a base system,
or (legitimately) a highly locallized effort to cope with
different environments, such as the difference between Win32
and the Unix APIs.

Perhaps the most courageous stand taken by the original Java
developers was an absolute refusual to pollute their language
with conditional compilation.

Firebird has forked. If Borland Interbase won't participate in an
architectural process to manage interoperability, write them
off and get on with life.

Please, please don't propogate pollution.

</rant>

Jim Starkey