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


Groups > comp.lang.c++ > #87505

Re: What a reference actually is

From "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>
Newsgroups comp.lang.c++
Subject Re: What a reference actually is
Date 2022-11-21 16:32 -0800
Organization A noiseless patient Spider
Message-ID <tlh5a8$3th2a$2@dont-email.me> (permalink)
References (12 earlier) <e31cdf34-4c51-4917-af4a-055e7a9aec68n@googlegroups.com> <tlc8gq$3elcf$2@dont-email.me> <c6c26a53-eb7d-4e4b-905e-176db3ce7091n@googlegroups.com> <b243c54b-886f-40dc-9e11-29792b4d8eafn@googlegroups.com> <c0b5219c-08c0-46b7-8b84-d056e4b443dbn@googlegroups.com>

Show all headers | View raw


On 11/20/2022 6:32 AM, Öö Tiib wrote:
> On Sunday, 20 November 2022 at 14:24:38 UTC+2, Michael S wrote:
>> On Sunday, November 20, 2022 at 1:47:53 PM UTC+2, Öö Tiib wrote:
>>> On Sunday, 20 November 2022 at 05:56:28 UTC+2, Chris M. Thomasson wrote:
>>>> On 11/19/2022 5:57 PM, Öö Tiib wrote:
>>>>> On Sunday, 20 November 2022 at 01:51:19 UTC+2, Michael S wrote:
>>>>>> On Sunday, November 20, 2022 at 1:43:28 AM UTC+2, Öö Tiib wrote:
>>>>>>> On Sunday, 20 November 2022 at 01:36:50 UTC+2, Michael S wrote:
>>>>>>>> On Sunday, November 20, 2022 at 1:33:16 AM UTC+2, Öö Tiib wrote:
>>>>>>>>> On Sunday, 20 November 2022 at 01:18:59 UTC+2, Chris M. Thomasson wrote:
>>>>>>>>>> On 11/19/2022 3:13 PM, Öö Tiib wrote:
>>>>>>>>>>> On Saturday, 19 November 2022 at 18:21:05 UTC+2, Michael S wrote:
>>>>>>>>>>>> On Saturday, November 19, 2022 at 9:34:32 AM UTC+2, james...@alumni.caltech.edu wrote:
>>>>>>>>>>>>> On 11/18/22 06:23, Michael S wrote:
>>>>>>>>>>>>>> On Friday, November 18, 2022 at 11:40:43 AM UTC+2, Juha Nieminen wrote:
>>>>>>>>>>>>> ...
>>>>>>>>>>>>>>> If we start dismissing everything that one could deem "unnecessary"
>>>>>>>>>>>>>>> then we could start dropping off quite many features even from C itself.
>>>>>>>>>>>>>>> After all, for example the syntax 'a[b]' is just syntactic sugar for
>>>>>>>>>>>>>>> '*(a+b)', and thus the former is "unnecessary" and could just be
>>>>>>>>>>>>>>> dropped off.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> The [] variant is shorter by 2 characters. In DRM view, shortness of
>>>>>>>>>>>>>> most frequently used language features was of high priority.
>>>>>>>>>>>>>> Also, in slightly more complex expressions, in case of *(a+b) variant
>>>>>>>>>>>>>> reader has to look for more information in order to figure out which
>>>>>>>>>>>>>> of two homonyms
>>>>>>>>>>>>>> of * is actually used. I would speculate that DRM was not really
>>>>>>>>>>>>>> pleased with
>>>>>>>>>>>>>> using asterisk for dereference, but had no better choice in available
>>>>>>>>>>>>>> character set.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> A 'for()' statement is unnecessary because you can write the same
>>>>>>>>>>>>>>> thing using a 'while()' statement.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Except that 'continue' behave differently.
>>>>>>>>>>>>>> The better argument is that 'while' loops are unnecessary and that is
>>>>>>>>>>>>>> absolutely correct. A mistake on part of DRM.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> And obviously the 'do' keyword is completely unnecessary.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I don't see it. Please elaborate.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> As well as the 'switch' keyword.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> What alternative do have in mind? if-else-if chains?
>>>>>>>>>>>>>> Both more typing and intentions of using the same selection variable
>>>>>>>>>>>>>> for all choices is not pronounced clearly.
>>>>>>>>>>>>> I get the impression that you've missed his point. He's not arguing that
>>>>>>>>>>>>> C would be made better by dropping all of those things. He's pointing
>>>>>>>>>>>>> out that just because something is not necessary, is not a reason for
>>>>>>>>>>>>> dropping it from the language. It is precisely his point that the
>>>>>>>>>>>>> language would be less easy to use if these features were removed for no
>>>>>>>>>>>>> better reason than the fact that they are unnecessary.
>>>>>>>>>>>> I don't know about your or Juha, but I personally draw a line at DRY.
>>>>>>>>>>>> Features that help to DRY can be controversial, can be even harmful,
>>>>>>>>>>>> (as many preprocessor macros) but they are not nutrient-free syntactic
>>>>>>>>>>>> sugar.
>>>>>>>>>>>> Of all features of 'C' listed by Juha, only 'while' and 'const' do not help
>>>>>>>>>>>> DRY at all and only [] help it minimally, but [] obviously help other aspects
>>>>>>>>>>>> of readability.
>>>>>>>>>>>> C++ references do not help DRY at all, except if you consider & here
>>>>>>>>>>>> or * there as repeating yourself. And, IMHO, presence of references
>>>>>>>>>>>> in the language makes understanding somebody else's code
>>>>>>>>>>>> significantly harder.
>>>>>>>>>>>
>>>>>>>>>>> Pointer can be null, so everywhere it is passed has to check that it is
>>>>>>>>>>> not null and that gets quite repetitive to do after a while.
>>>>>>>>>>
>>>>>>>>>> Or, a lib writer can say passing a null pointer into function void*
>>>>>>>>>> foo(void*) will result in undefined behavior.
>>>>>>>>> So caller has to check, that is even worse violation of DRY as a function is
>>>>>>>>> usually called from multiple places. Meanwhile lib writer can accept a
>>>>>>>>> reference and then the check is needed on neither side.
>>>>>>>> No, caller does not have to check, because caller knows that he passes non-null.
>>>>>>> About reference it is known that it is not null but about pointer it is known only
>>>>>>> after checking ... like if the caller is he or she takes checking.
>>>>>>
>>>>>> No. in code below caller does non need to check anything.
>>>>>> int bar;
>>>>>> foo(&bar);
>>>>>
>>>>> That function foo there is done weirdly. Why it wasn't done without using neither
>>>>> pointer nor reference? Like:
>>>>>
>>>>> int bar = foo();
>>>>>
>>>>>
>>>> Because foo takes a pointer to an int that _shall_ not be a nullptr.
>>> I mean the int pointed at must be present but may be uninitialized so it is
>>> lot more logical to have it as return value.
>>
>> This was an example intended to illustrate *one* point.
> 
> It did not do that very well as it looked like badly designed interface.

A C API that requires a non-null pointer is not badly designed, right?


>> It was not an attempt to justify a passing of parameters by pointer/reference
>> vs other methods, but illustration of absence of material difference between
>> pointer and reference in this case and of weakness of your argument about need
>> to check for null by caller.
> 
> Where did I claim that there do not exist such circumstances where we know
> that some pointer can't be null? Reference communicates that situation better
> and with less stars to type.
^^^^^^^^^^^^^^^^^^^^^^^^^
[...]

Hard to disagree with this.




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


Thread

What a reference actually is Juha Nieminen <nospam@thanks.invalid> - 2022-11-17 09:01 +0000
  Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-17 06:09 -0800
    Re: What a reference actually is Paavo Helde <eesnimi@osa.pri.ee> - 2022-11-18 00:36 +0200
      Re: What a reference actually is JiiPee <kerrttuPoistaTama11@gmail.com> - 2022-11-18 07:49 +0200
      Re: What a reference actually is Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-20 05:48 -0800
    Re: What a reference actually is Juha Nieminen <nospam@thanks.invalid> - 2022-11-18 09:40 +0000
      Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-18 03:23 -0800
        Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-18 05:11 -0800
        Re: What a reference actually is James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-11-19 02:34 -0500
          Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-19 08:20 -0800
            Re: What a reference actually is Paavo Helde <eesnimi@osa.pri.ee> - 2022-11-20 00:37 +0200
              Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-19 15:35 -0800
            Re: What a reference actually is Öö Tiib <ootiib@hot.ee> - 2022-11-19 15:13 -0800
              Re: What a reference actually is "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-11-19 15:18 -0800
                Re: What a reference actually is Öö Tiib <ootiib@hot.ee> - 2022-11-19 15:33 -0800
                Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-19 15:36 -0800
                Re: What a reference actually is Öö Tiib <ootiib@hot.ee> - 2022-11-19 15:43 -0800
                Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-19 15:51 -0800
                Re: What a reference actually is Öö Tiib <ootiib@hot.ee> - 2022-11-19 17:57 -0800
                Re: What a reference actually is "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-11-19 19:56 -0800
                Re: What a reference actually is Öö Tiib <ootiib@hot.ee> - 2022-11-20 03:47 -0800
                Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-20 04:24 -0800
                Re: What a reference actually is Öö Tiib <ootiib@hot.ee> - 2022-11-20 06:32 -0800
                Re: What a reference actually is "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-11-21 16:32 -0800
                Re: What a reference actually is Öö Tiib <ootiib@hot.ee> - 2022-11-22 08:30 -0800
              Re: What a reference actually is Michael S <already5chosen@yahoo.com> - 2022-11-19 15:27 -0800
                Re: What a reference actually is Paavo Helde <eesnimi@osa.pri.ee> - 2022-11-20 01:28 +0200
      Re: What a reference actually is Paavo Helde <eesnimi@osa.pri.ee> - 2022-11-18 14:51 +0200
        Re: What a reference actually is JiiPee <kerrttuPoistaTama11@gmail.com> - 2022-11-18 18:32 +0200
        Re: What a reference actually is Juha Nieminen <nospam@thanks.invalid> - 2022-11-21 11:56 +0000
  Re: What a reference actually is Bonita Montero <Bonita.Montero@gmail.com> - 2022-11-17 19:27 +0100
  Re: What a reference actually is Jorgen Grahn <grahn+nntp@snipabacken.se> - 2022-11-19 17:10 +0000
    Re: What a reference actually is Juha Nieminen <nospam@thanks.invalid> - 2022-11-21 11:59 +0000

csiph-web