Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #73278

Re: Pointers, constant values

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: Pointers, constant values
Date 2015-10-19 12:55 +0100
Organization A noiseless patient Spider
Message-ID <871tcrkr8i.fsf@bsb.me.uk> (permalink)
References (16 earlier) <mvvum2$f1b$1@dont-email.me> <87wpujlt5f.fsf@bsb.me.uk> <n016ml$akq$1@dont-email.me> <87k2qjlm80.fsf@bsb.me.uk> <n02hqs$uif$1@dont-email.me>

Show all headers | View raw


Bartc <bc@freeuk.com> writes:

> On 19/10/2015 01:45, Ben Bacarisse wrote:
>> Bartc <bc@freeuk.com> writes:
>
>>> (No-one has yet mentioned how this works in other languages. Pointers
>>> and arrays being interchangeable must surely be only another C thing.)
>>
>> It's very neat in Go:
>>
>>    func amax(data []int) int {
>>         if l := len(data); l > 1 {
>>              return max(amax(data[:l/2]), amax(data[l/2:]));
>>         }
>>         return data[0]
>>    }
>
>>    function Amax(A: IntArray) return Integer is
>>           return Integer'Max(Amax(A(A'First .. A'First + L/2 - 1)),
>
> So, they are both dealing with arrays or slices as parameters and
> within the function. Neither uses raw pointers and offsets into array
> elements in the user code (although no doubt that goes on internally).

Yes.

> Why then shouldn't I try to do the same in C? The whole point of the
> sub-thread is that C has some of that capability, even if you wouldn't
> normally use it because the code is also more unwieldy (not a problem
> for generated code).

You can't pass an array or a slice in C so you have to pick some other
type.  I don't think there is any point in re-hashing the arguments
about which type is the best one to use.  Anyone not already convinced
by your example won't budge now.

<snip>
> (One observation on the A[n:] and A[:n] syntax: I used that in a
> recent language, but found it really unintuitive. I replaced it with
> left(A,n) and right(A,n). You get a hint of why, here: A[n:] is the
> right part of the array, not the left!

I don't find A[n:] and A[:n] unclear but I am not a fan of debates about
the details of syntax.  I will, however, note something abut your
preferred names.  Some people are left and right "blind" -- the words
have almost no meaning to them (other than being complimentary) unless
they stop and think about which is which.  Such people would not care if
data[l/2:] is the left or the right part.  What they (and indeed
everyone) really cares about is what *indexes* are included, so I might
choose first(n, data) and last(n, data) rather than left and right.

> It's not so bad with full specified slice of A[m:n])

FIW, Go's full slice has three parts where the third gives the capacity.

>>> I never use const (why not would be another thread). My code was a
>>> self-contained program and it worked fine without it.
>>
>> But any claim to know what the proper type to use must apply to C as a
>> whole.  If all you meant is that "it works for me and the kind of C I
>> write" then I doubt I'd have taken the bait!  Pointers to array types
>> have const issues, and these should be part of a discussion of which
>> wrong type us best to use for passing arrays around.
>
> Where's the 'const' equivalent in those examples above from other
> languages?

The translations given are, as far as I know, as close as the languages
in question can get.  The Ada parameter is, by default, "in" only and Go
has no way to mark as slice as read-only.

-- 
Ben.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Pointers, constant values Alla _ <modelling.data@gmail.com> - 2015-10-16 00:49 -0700
  Re: Pointers, constant values Philip Lantz <prl@canterey.us> - 2015-10-16 01:49 -0700
  Re: Pointers, constant values James Kuyper <jameskuyper@verizon.net> - 2015-10-16 09:41 -0400
    Re: Pointers, constant values supercat@casperkitty.com - 2015-10-16 08:55 -0700
  Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 08:25 -0700
    Re: Pointers, constant values supercat@casperkitty.com - 2015-10-16 09:11 -0700
      Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 12:06 -0700
        Re: Pointers, constant values supercat@casperkitty.com - 2015-10-16 12:55 -0700
    Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-16 17:49 +0100
      Re: Pointers, constant values Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2015-10-16 13:23 -0400
        Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-16 19:34 +0100
          Re: Pointers, constant values supercat@casperkitty.com - 2015-10-16 12:05 -0700
        Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 12:18 -0700
      Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 12:13 -0700
        Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-16 20:33 +0100
          Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 13:01 -0700
            Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-16 21:09 +0100
              Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 13:41 -0700
          Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-16 21:07 +0100
            Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-16 21:20 +0100
              Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-16 22:02 +0100
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-16 22:21 +0100
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-16 14:39 -0700
                Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 15:26 -0700
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-16 15:44 -0700
                Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 16:58 -0700
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-16 17:28 -0700
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-16 22:50 +0100
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-16 15:14 -0700
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-17 01:23 +0100
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-17 19:39 +0100
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-17 22:42 +0100
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-18 00:31 +0100
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-18 02:11 +0100
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-18 11:59 +0100
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-18 12:12 +0100
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-18 12:28 +0100
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-18 23:16 +0100
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-18 23:34 +0100
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-19 01:45 +0100
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-19 11:51 +0100
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-19 12:55 +0100
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-19 13:51 +0100
                Re: Pointers, constant values Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-10-19 06:02 -0700
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-19 07:02 -0700
                Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-19 15:39 +0100
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-19 08:54 -0700
                Re: Pointers, constant values Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-10-19 09:14 -0700
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-19 10:21 -0700
                Re: Pointers, constant values Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-10-19 12:57 -0700
                Re: Pointers, constant values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-19 21:20 +0000
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-20 20:50 -0700
                Re: Pointers, constant values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-21 04:58 +0000
                Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-19 08:40 -0700
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-19 20:17 +0100
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-17 16:44 -0700
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-18 11:52 +0100
                Re: Pointers, constant values Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-10-18 05:15 -0700
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-18 21:54 +0100
                Re: Pointers, constant values Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-10-18 16:09 -0700
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-18 07:55 -0700
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-18 21:47 +0100
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-18 15:37 -0700
                Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-19 00:10 +0100
                Re: Pointers, constant values supercat@casperkitty.com - 2015-10-18 19:04 -0700
        Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-16 21:13 +0100
      Re: Pointers, constant values Ian Collins <ian-news@hotmail.com> - 2015-10-17 11:27 +1300
        Re: Pointers, constant values Bartc <bc@freeuk.com> - 2015-10-17 00:56 +0100
  Re: Pointers, constant values Les Cargill <lcargill99@comcast.com> - 2015-10-16 12:37 -0500
    Re: Pointers, constant values James Kuyper <jameskuyper@verizon.net> - 2015-10-16 14:22 -0400
  Re: Pointers, constant values Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-10-16 18:57 +0000
    Re: Pointers, constant values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-16 20:40 +0100
      Re: Pointers, constant values Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-10-16 20:46 +0000
        Re: Pointers, constant values Keith Thompson <kst-u@mib.org> - 2015-10-16 14:24 -0700
          Re: Pointers, constant values Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-10-19 12:43 +0000
  Re: Pointers, constant values Siri Cruz <chine.bleu@yahoo.com> - 2015-10-16 13:20 -0700
    Re: Pointers, constant values supercat@casperkitty.com - 2015-10-17 13:59 -0700

csiph-web