CBFalconer wrote:
Frank Heckenbach wrote:
After reading this discussion, I fear we'll have to keep the ballast of redundant options. That'll teach me not to add any redundant features, unless required for compatibility reasons ...
Some comments, anyway.
... snip ...
Another course, which I am sure you will not like :-) would be to make the default ISO7185-0, and use directives to expand that. However I recognize that practically noone will agree with me.
At any rate, I feel that gpc has been around too long to change such fundamental directives. I have no problem with discouraging its use.
In some ways this reminds me of the arguments that originally led to the -0 and -1 forms of the standard, which were much more heated, and delayed its release for a long time. The only deviation from J&W permitted by a large faction was specifying parameters of procedural parameters. That group considered conformal arrays an unwarranted extension.
That's quite symptomatic for the problems I have with 7185. Unwarranted, is it? Well, without them you can only write routines that handle a fixed (or limited) number of array elements. Yes, I've seen such code, and I don't like it. Granted, even with conformant arrays, you have to put a limit in the array variables (only schemata can avoid this).
Without them, you can only resort to using linked lists etc. (which often entail a severe performance penalty by adding a factor of O(n)) or you put arbitrary limits in your programs ("you can only put 32 entries in that table" etc.). That's ok for teaching programs and was typical of 1980's programs, but really should be a no-go for modern programs.
Another point is the limited I/O in 7185 (only plain file reads, no defined file naming, no seeking, i.e., if you want to modifiy one record in a typed file, you have to copy the whole thing and replace one), and the lack of modularization, i.e., if you distribute some useful routines, you can only tell users to copy them into their source which is not only ugly IMHO (makes it harder to find the real code of a program between the "library" routines) but also a maintenance hell (each time you change something in the "library", every user has to change their source to incorporate the new code).
These issues occur routinely in "real world" programs and EP addresses them (schemata, Bind, SeekRead etc., modules) -- the examples listed are not all, but among the most important ones. Therefore I really cannot support recommending 7185 as the preferred standard.
Frank