Re: [Bulk] Re: quoted identifier behaviour - Mailing list pgsql-general

From Ted Byers
Subject Re: [Bulk] Re: quoted identifier behaviour
Date
Msg-id 06fc01c7667c$38fa3cd0$6401a8c0@RnDworkstation
Whole thread Raw
In response to quoted identifier behaviour  (Randall Smith <randall@tnr.cc>)
Responses Re: [Bulk] Re: quoted identifier behaviour
List pgsql-general
----- Original Message -----
From: "Randall Smith" <randall@tnr.cc>
>
> I'll give the pghackers forum a visit and since I'm already on the subject
> here, I'll make a direct comparison of the situation. Microsoft's Internet
> Explorer web browser is known to have poor support for the CSS standard,
> but refuses to fix it saying that it's too difficult and would break
> existing websites.  Many developers, myself included, prefer to code to
> the standard and have the html/css render correctly in all browsers.  In
> the long run, it's better to do it right even if that means breaking
> things today. If the standard is good (there are poor standards), there's
> no reason to not use the standard.
>
In principle, I don't disagree with you.  However, I tend to be much more
pragmatic.  Often we have little choice in the tools we use.  I have seen
occasions where developers were constrained to use MS Visual Studio.  It is
an outstanding product now (I have, and use the professional edition of MS
VS 2005).  However, MS VS v6 was mediocre at best.   And a majority of WIN32
developers had to use it.  It was popular despite its problems.  It had very
poor compliance to the ANSI C++ standards at the turn of the century,
although that isn't too surprising given its age.  But many people thought
they were writing standards compliant code, and that code broke big time
once they tried to use it with later, better, compilers.  That is just one
example.   Yours is another, and there examples relating to FORTRAN (is
there anyone other than me old enough to remember that? - I recently
encountered IT professionals who didn't know what punch cards where or how
they were used). Yet much FORTRAN code that is four or five decades old is
still valuable a) because it was written to a standard and b) there are
tools to automate converting it into C, allowing it to be used while an old
C++ programmer like myself adapts it to take advantage of key C++
programming idioms and language features (templates, template
metaprogramming).  This is because in many cases the core algorithms
developed at the time have not been supplanted by better ones, and they are
still essential for intensive number crunching.  I have seen technologies
and standards come and go (or better, be upgraded), and while we ought to
write our code to be as compliant as possible to the relevant standards, if
there is one (there isn't one, last I checked, for VB, Java or Perl), in the
end our tools are the final arbiters of what is legal and what isn't.
Therefore, when the investment in the code in question is significant, and
only then, the most viable approach to trying to preserve the value of the
code is to use the highest common factor between the standard and what the
tools say the standard is (it isn't unusual for tool developers to disagree
about what the standard really means, especially when dealing with some of
the harder issues, and nothing is as simple as it appears at first glance).

It is important to remember that standards change.  Just compare the
different versions of the ANSI standard for SQL that have existed over the
years.  Or do the same for some of the other languages such as FORTRAN, C
and C++.  Since it is certain that even the best standards will change, and
that some of those changes will break existing code, I do not believe it is
worth getting paranoid or worried or upset just because one or another of
our favourite tools lacks perfect compliance with the standard.  I do not
define what is right by what a standard has to say.  Rather, I define it
according to whether or not the correct answers are obtained and whether or
not the application does for the user what the user needs it to do.  In this
view, then, there are multiple right options, and this takes us back to our
tools being the final arbiter of whether or not our code is correct.

So, I say that good standards are valuable tools that can be used to
preserve the value of code that carries significant investment.  At the same
time, they are only tools and the value they provide may well pale relative
to other considerations.  I disagree with you when you say there's no reason
not to use the (good) standard.  Often tool developers put considerable
effort into providing features in addition to what the standard specifies,
often without compromising compliance to the standard since often details
are specified to be implementation dependant.  Regardless of their motives
for doing so, there are good, economic and practical reasons to use such
features.  The trick, if one must worry about using the code fifty years
from now, is to ensure that implementation specific code is well separated
from standard compliant code and that it is well documented.  That way, when
the technology evolves in a way that will likely break your code (as the
coming demise of MFC will certainly do to countless WIN32 applications), it
becomes easier to replace what is broken and preserve what is not broken.

HTH

Ted



pgsql-general by date:

Previous
From: Raymond O'Donnell
Date:
Subject: Re: Debugging Server Code
Next
From: Tony Caduto
Date:
Subject: Re: How to write a function that manipulates a set of results