From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,dab7d920e4340f12 X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,dab7d920e4340f12 X-Google-Attributes: gid1014db,public From: cosc19z5@Bayou.UH.EDU (Spasmo) Subject: Re: Ada is 'better' than C because... Date: 1996/08/13 Message-ID: <4uoo3b$677@Masala.CC.UH.EDU>#1/1 X-Deja-AN: 173812137 organization: University of Houston newsgroups: comp.lang.ada,comp.lang.c Date: 1996-08-13T00:00:00+00:00 List-Id: OBryan Anthony H (aho450s@nic.smsu.edu) wrote: : William Clodius (clodius@hotspec.lanl.gov) wrote: : : Not quite. First when passed as an argument to a user defined function : : a C array looses a lot of its distinction from a pointer, a problem : : that many other languages do not have. Second, while (almost?) all : I have a hard time seeing this as a problem. It's one of the fantastic : advantages of the C language. An array of any given type can be passed : to a user function and treated as an array of any other integral type, : converted, processed, etc. in any manner the programmer desires. Actually it's an awful problem and it's one of the crippling problems that plagues C. Since an array is in many respects interchangable with a pointer you have (once again) opened the door to the types of disasters that C is infamous for. I mean you can pass a pointer to a function, and treat it like an array by accident, or vice versa. The Ada method is much better. There is a distinction between arrays and pointers (hell, they aren't anywhere near the same thing), and so when you have an array parameter in Ada, it will expect an array. Still no flexibility is lost since you can declare types of unconstrained arrays which means arrays of any size can be passed, and this of course can be combined with the generic capabilities of Ada to give you far more flexibility than you could ever hope to have in C, and something else you don't have in C -- safety. : : additional capabilities that C arrays lack, the ability to specify : : array shape in arguments (Fortran I), and various forms of whole array : : operations, APL, PL/I, Algol 68, and Fortran 90. : What do you mean by array shape? C is fully capable of performing whole : array operations. The capability is not embedded in the language, as C : is designed to provide only the bare necessicities for program : development with all else being provided in function extensions, but the : language itself allows for anything a machine is capable of doing. I'm assuming actually having the size of the array be specified in the parameter and checked. In C while you can specify an array size in a parameter, it does absolutely nothing since you are free to overrun that size to your heart's content. As for array operations, again I think he may mean doing things like assignment and equality comparisons on arrays, something that C again cannot do with any aggregate types. This limitation becomes a major pain in the posterior when you get to C++ and generic subprograms since you end up having to code all sorts of ugly hacks just to get many generic types to behave properly. -- Spasmo "Everyone has secrets, but sometimes you get caught, So if it's just between us, my silence can be bought" "Blackmail" by Sloppy Seconds