Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Bartc <bc@freeuk.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: "Death To C" |
| Date | 2015-05-06 14:29 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <mid4ua$70g$1@dont-email.me> (permalink) |
| References | (3 earlier) <gq6gkapsgtcnsrmulg96q7nvd1v919i5u6@4ax.com> <mia43h$gc2$1@dont-email.me> <pan.2015.05.06.07.10.05.543000@nowhere.invalid> <micko3$bvi$1@dont-email.me> <mid2ik$trt$1@dont-email.me> |
On 06/05/2015 13:49, Richard Heathfield wrote:
> On 06/05/15 09:53, Bartc wrote:
> In which case, why did you set i to 0?
It just got mixed up.
>> But an automatic system would deal with it properly:
>
> So does a programmer who is used to the idiom, and he can deal with it
> without incurring the overhead of automatic bounds-checking. There is no
> such thing as a free lunch. Everything costs cycles. The programmer who
> can be trusted to think about bounds himself is able to squeeze more out
> of the processor than someone who has to rely on an automated
> bounds-check to save his code from blowing up. It is absolutely right
> and proper that automatic bounds-checking systems should be available,
> but absolutely wrong that everyone should be forced to use them, or even
> to be forced into the decision of whether or not to use them all the
> time. So if an implementation wants to offer optional bounds-checking
> via a command line switch, I'm all for it. But it has to be
> switchable-offable.
Sure. It would be for debugging only. In any case, an array-bounds error
is of no more use to a customer than a seg-fault (but might contains
information useful to the developer).
>> A 'for' that didn't need you to specify the exact
>> compare op needed, or better still a 'forall', would have fewer such
>> problems.)
>
> The latter would be a better option. Not quite sure how you'd implement
> it in C, though, given that the compiler may not be able to tell how
> many items forall should cover. Consider:
>
> void foo(int *p)
> {
> size_t n;
> forall(p, n) /* how does the compiler know how many times to run this
> loop? */
> {
> foo(p[n]);
> }
> }
>
> It would be a fairly major change to the language, and would almost
> certainly involve information about the array being squirrelled away by
> the compiler, which squirrelling would inevitably incur a performance
> overhead.
I added forall to my own language last week (just so I could say how it
could be done in C). It was a simple implementation that only copes with
the cases where the compiler knows the size of the array.
Where the array is dynamic then, assuming the programmer knows what the
size is, that information can perhaps be imparted in the form of a slice
of the array (I might use A[1..n] or A[:N] or something like that). In
the simple case, the forall looks like this in the source language:
[0:10]int data
int x
forall x in data do
println x
od
(I've made the array 0-based which is what the 0: means), and the output
C code is along these lines (edited to change things like illegal $
signs in names and extraneous labels):
int data[10];
int x;
int _temp1;
for (_temp1=0; _temp1<=9; ++_temp1) {
x = data[_temp1];
printf("%d\n",x);
}
(Interestingly, this uses the "=" and "<=" pattern that I'd used wrongly
before!)
Possibly the C code could take the form of a pointer iterating across
the array, but I'm sure a C compiler can optimise this. Notice the C
needs: a loop index, an 0 initialiser, a "<=" compare, a "9" limit, a
"++" operation, and an assignment, which are not needed in the original.
(As well as a "%d", which needs to match the array element type, but
that's another matter.)
--
Bartc
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
"Death To C" Lynn McGuire <lmc@winsim.com> - 2015-05-04 14:41 -0500
Re: "Death To C" Melzzzzz <mel@zzzzz.com> - 2015-05-04 22:16 +0200
Re: "Death To C" Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-05-04 13:26 -0700
Re: "Death To C" Melzzzzz <mel@zzzzz.com> - 2015-05-04 22:51 +0200
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-04 22:02 +0100
Re: "Death To C" Melzzzzz <mel@zzzzz.com> - 2015-05-05 00:06 +0200
Re: "Death To C" Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-05-04 13:22 -0700
Re: "Death To C" Melzzzzz <mel@zzzzz.com> - 2015-05-04 22:41 +0200
Re: "Death To C" Robert Wessel <robertwessel2@yahoo.com> - 2015-05-04 20:25 -0500
Bounds checking in C (Was: "Death To C") gazelle@shell.xmission.com (Kenny McCormack) - 2015-05-05 02:15 +0000
Re: Bounds checking in C (Was: "Death To C") BGB <cr88192@hotmail.com> - 2015-05-06 10:23 -0500
Re: "Death To C" Les Cargill <lcargill99@comcast.com> - 2015-05-04 21:36 -0500
Re: "Death To C" Robert Wessel <robertwessel2@yahoo.com> - 2015-05-05 01:01 -0500
Re: "Death To C" Les Cargill <lcargill99@comcast.com> - 2015-05-05 12:23 -0500
Re: "Death To C" CHIN Dihedral <dihedral88888@gmail.com> - 2015-05-05 03:06 -0700
Re: "Death To C" Ian Collins <ian-news@hotmail.com> - 2015-05-05 17:43 +1200
Re: "Death To C" Robert Wessel <robertwessel2@yahoo.com> - 2015-05-05 01:00 -0500
Re: "Death To C" Robert Wessel <robertwessel2@yahoo.com> - 2015-05-05 01:13 -0500
Re: "Death To C" Ian Collins <ian-news@hotmail.com> - 2015-05-05 19:15 +1200
Re: "Death To C" Robert Wessel <robertwessel2@yahoo.com> - 2015-05-05 02:41 -0500
Re: "Death To C" Ian Collins <ian-news@hotmail.com> - 2015-05-05 20:12 +1200
Re: "Death To C" glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-05-05 06:48 +0000
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-05 10:57 +0100
Re: "Death To C" asetofsymbols@gmail.com - 2015-05-05 16:53 -0700
Re: "Death To C" Nobody <nobody@nowhere.invalid> - 2015-05-06 08:10 +0100
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-06 09:53 +0100
Re: "Death To C" Richard Heathfield <rjh@cpax.org.uk> - 2015-05-06 13:49 +0100
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-06 14:29 +0100
Re: "Death To C" Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-05-06 09:43 -0700
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-06 18:24 +0100
Re: "Death To C" asetofsymbols@gmail.com - 2015-05-08 00:44 -0700
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-08 13:49 +0100
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-04 22:15 +0100
Re: "Death To C" BGB <cr88192@hotmail.com> - 2015-05-08 09:09 -0500
Re: "Death To C" Stephen Sprunk <stephen@sprunk.org> - 2015-05-04 16:18 -0500
Re: "Death To C" Ian Collins <ian-news@hotmail.com> - 2015-05-05 12:49 +1200
Re: "Death To C" raltbos@xs4all.nl (Richard Bos) - 2015-05-08 21:52 +0000
Re: "Death To C" Merikissa <merikissa@no.spam.net> - 2015-05-10 04:04 +0300
Re: "Death To C" "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-05-13 08:11 -0700
Re: "Death To C" David Kleinecke <dkleinecke@gmail.com> - 2015-05-13 10:00 -0700
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-13 18:20 +0100
Re: "Death To C" David Kleinecke <dkleinecke@gmail.com> - 2015-05-14 10:47 -0700
Re: "Death To C" "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-05-14 11:09 -0700
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-15 19:21 +0100
Re: "Death To C" David Kleinecke <dkleinecke@gmail.com> - 2015-05-16 09:10 -0700
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-16 20:45 +0100
Re: "Death To C" David Kleinecke <dkleinecke@gmail.com> - 2015-05-17 09:38 -0700
Re: "Death To C" raltbos@xs4all.nl (Richard Bos) - 2015-05-17 10:47 +0000
Re: "Death To C" Bartc <bc@freeuk.com> - 2015-05-17 12:20 +0100
Re: "Death To C" "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-05-13 10:24 -0700
Re: "Death To C" David Brown <david.brown@hesbynett.no> - 2015-05-13 22:01 +0200
Re: "Death To C" Nobody <nobody@nowhere.invalid> - 2015-05-14 07:48 +0100
csiph-web