On 06/01/2013 10:58 PM, Shmuel Metz (Seymour J.) wrote:
In
<985915eee6984740ae93f8495c624c6c2318055...@jscpcwexmaa1.bsg.ad.adp.com>,
on 05/31/2013
at 03:40 PM, "Farley, Peter x23353" <[email protected]>
said:
The problem with recompilation is not purely technical though. ISTM
that there is far more bureaucracy needed to monitor and guarantee
successful completion of full regression testing at each
recompilation than there is payback from using notionally "better"
translators and runtimes at a given stage.
Yes, additional regression checking is expensive. However, how do you
validate a new release or service level of the compiler without it?
What do you do when you roll a new release of the compiler into
production and discover six months later that you can't compile a
module that you need to update? Sometimes pay now is less expensive
than pay later.
Now, if there is an LPAR hierarchy with the same levels of the
compilers and static libraries, no recompile is necessary. But when
you promote changes to the compilers (static libraries), a recompile
(rebind) of everything, followed by testing, is the only way to be
sure that you didn't break anything.
Our experience over multiple decades was that actual compiler or
language run-time bugs or undocumented changes that affected our code
were so rare that it was the last thing to consider when application
development was having code problems. Subtle mis-use of the langauge or
just logic bugs accounted for 99.99%+ of problems encountered. I recall
a few subtle undocumented changes in three decades in either the
compiler or run-time environment which caused some minor grief to
applications until they were resolved or code modified, but the only
cases which required or justified a massive recompile of everything were
a very few cases where significant documented changes in compiler syntax
and semantics made it clearly necessary.
It is IBM's job, not that of individual installations, to do regression
testing of the compiler and language run-time environments across
version changes and maintenance that is not intended to change syntax or
semantics, and at least in our experience any bugs that escaped their
testing were so subtle that UNLESS you re-compiled everything you would
have a low probability of encountering them before someone else hit them
and a resolution was available. We tested new compiler versions to
validate basic functionality, but this was always just to be sure there
wasn't some obvious installation configuration error on our part.
Recompiling everything for each new compiler version only proves a clean
compile is possible, not that the semantic behavior of the code has not
been changed in some subtle way that may not surface until 6 months
later. It always seemed to us that the much saner approach with a new
compiler level was to only force its use with new development and
on-going maintenance, so that any problems would be manifested in code
that was already being closely monitored for unexpected behavior; and
any subtle issues that weren't' immediately apparent would be confined
to that code, rather than unnecessarily exposing all in-house applications.
One of the big advantages to MVS has always been the deliberate design
for upward compatibility, precisely so you don't have to recompile and
retest all applications every time there is major maintenance to the
Operating System or its component parts, which would increase
programming costs by a significant factor. It is absolutely essential
to have adequate program management in place to guarantee that for every
application program running you also have the matching program source.
It is not essential, and just asking for problems, to attempt to
recompile everything whenever there is a compiler version or
maintenance change, unless that change has documented compatibility
issues with old source code and previously compiled code.
--
Joel C. Ewing, Bentonville, AR [email protected]
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN