Van Snyder writes:
>
> Richard Maine wrote:
>
> > Every feature added means work for the committee and
> > for implementors.... Any work put into one feature
> > is work that won't be put into some other feature.
>
> This is almost always the case, but there are exceptions.
> Some "features" are implemented by removing restrictions
> that are harder to enforce than to ignore. A good example
> is allowing list-directed input/output for internal files.
> This was prohibited in Fortran 90, but it's allowed now.
> Several compiler writers assured me that they allowed it,
> even thought the standard prohibited it, because it was
> easier to allow than to prohibit.
Agree about that as an exception. And that there are a few others
also.
Another of my favorites was the restriction against having public
entities of private type (and a simillar one against having public
procedures with arguments of private type). The restriction didn't
achieve anything useful, prevented some things that were useful,
required implementation work to diagnose, and was very subtle
to interpret correctly anyway (quite a lot of compilers got it
wrong until after interpretation 161 came out). The compilers
that got it wrong were failing to compile some *VERY* useful
constructs. The restriction is (proposed to) go away in f2k.
My understanding is that the restriction on list-directed
internal I/O was at least partly motivated by concern about
protecting the user from him/her-self in that one might not
trivially know how big a buffer would be needed for list-directed
output - since the compiler is deciding the formatting details,
while its the user defining the buffer. But that's about 3rd
hand speculation at best, as I wasn't there. regardless of the
reasons, its certainly a restriction that I was glad was dropped.
--
Richard Maine
[log in to unmask]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|