Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <vapitn$3u1ub$1@dont-email.me>
Deutsch   English   Français   Italiano  
<vapitn$3u1ub$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.nobody.at!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Bart <bc@freeuk.com>
Newsgroups: comp.lang.c
Subject: Re: Top 10 most common hard skills listed on resumes...
Date: Thu, 29 Aug 2024 11:35:35 +0100
Organization: A noiseless patient Spider
Lines: 104
Message-ID: <vapitn$3u1ub$1@dont-email.me>
References: <vab101$3er$1@reader1.panix.com>
 <vad7ns$1g27b$1@raubtier-asyl.eternal-september.org>
 <vad8lr$1fv5u$1@dont-email.me> <vaf7f0$k51$2@reader1.panix.com>
 <vafgb2$1to4v$2@dont-email.me>
 <92ab79736a70ea1563691d22a9b396a20629d8cf@i2pn2.org>
 <vafim7$1ubg8$1@dont-email.me> <vah4hr$2b9i8$5@dont-email.me>
 <vahngt$2dtm9$1@dont-email.me> <87r0abzcsj.fsf@bsb.me.uk>
 <vai1ec$2fns2$1@dont-email.me> <874j75zftu.fsf@bsb.me.uk>
 <valrj7$367a8$2@dont-email.me> <87mskwy9t1.fsf@bsb.me.uk>
 <vanq4h$3iieb$1@dont-email.me> <875xrkxlgo.fsf@bsb.me.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 29 Aug 2024 12:35:35 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="f25609d88f29f3eda9765667c5ab1831";
	logging-data="4130763"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/r+bcfrpnNPjXyOAZlRzpU"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:gaIg1IOWUAQperuQ/+K3zDHo32w=
Content-Language: en-GB
In-Reply-To: <875xrkxlgo.fsf@bsb.me.uk>
Bytes: 5490

On 29/08/2024 00:43, Ben Bacarisse wrote:
> Bart <bc@freeuk.com> writes:
> 
>> On 28/08/2024 15:57, Ben Bacarisse wrote:
>>> Bart <bc@freeuk.com> writes:
>>>
>>>> On 28/08/2024 00:49, Ben Bacarisse wrote:
>>>
>>>>> Indeed, and BLISS is not like that.  I had hoped to shed some light on
>>>>> why there is some logic to BLISS's rather idiosyncratic design.
>>>>>
>>>>>> Given a declaration like 'int A' then:
>>>>>>
>>>>>>                               BLISS   C
>>>>>>
>>>>>> Read or write A's value   .A       A
>>>>> I don't think that's right.  To change the value at address A (what I
>>>>> think you mean by "write A's value") you write
>>>>>      A = 42;
>>>>> in BLISS.  And to add one to the value at address A you write
>>>>>      A = .A + 1;
>>>>
>>>> OK. That's just makes it more bizarre than I'd thought.
>>> Curious.  It's what makes it consistent, though it is definitely an
>>> uncommon approach.
>>>
>>>> The example I saw
>>>> included these lines:
>>>>
>>>>       GETNUM(X);            ! returns a value via X
>>>>       Y = STEP(.X);
>>>>       PUTNUM(.Y)
>>>>
>>>> So in an rvalue context:  X reads its address; while .X reads its
>>>> value.
>>> The whole point is to remove the two contexts.  A variable name is
>>> /always/ an lvalue (which is why it can be assigned).  C has an implicit
>>> lvalue to rvalue conversion in the contexts you have come to expect it.
>>> BLISS does not.  You always need a dot to convert to an rvalue.
>>
>> This is the kind of thing I meant a few posts back. You don't need to take
>> A (which refers to some place where you can store values), and tell it to
>> fetch that value. Most HLLs will do that without being told.
>>
>> (My point was that that was a distinguishing feature of HLLs, which is
>> missing in Forth for example.)
> 
> We are talking at cross purposes then.  I was not addressing anything
> about your view of what makes an HLL.
> 
>>>> But in an lvalue one:     Y writes its value; .Y may not be defined
>>>>
>>>> It looks asymmetric. C like most languages is symmetric, you write 'A = A'
>>>> with the same syntax on both sides.
>>> Since assignment is inherently asymmetric (you can't write 3 = A but you
>>> can write A = 3) C's syntactic symmetry hides a semantic difference.
>>> What is needed on the two sides is not the same.
>>
>> I would argue that it is exactly the same.
> 
> How do you argue that, given that A=3 is allowed and 3=A is not?

I explained that. LHS and RHS can be identical terms for assignment in 
pretty much every aspect, but there are extra constraints on the LHS.

In the case of :

    (c?a:b) = (z?x:y);

C won't allow it, but some other languages will.

Remember that the programmer can only express their intentions in the 
form of syntax.

> ...
>>>> I assume that in BLISS, A = A is legal, but does something odd like copy
>>>> A's address into itself.
>>> What's odd about that?  And why call is a copy operation?  Do you think
>>> of A = 42 as a copy operation?  BLISS is a low-level system language.
>>
>> Why do you mean by call?
> 
> Typo.  I meant to write... And why call /it/ a copy-operation?  Do you
> think of A = 42 as a copy operation?

If '=' means assignment, then what else is it?

Depending on language, it might be shallow, or deep, or something 
depending how it works or what is being assigned.

According to Wikipedia:

"In computer programming, an assignment statement sets and/or re-sets 
the value stored in the storage location(s) denoted by a variable name; 
in other words, it COPIES a value into the variable"

(My emphasis.)

I don't know why you're always so contradictory. Is it a game trying to 
catch me out on some pendanty? It seems to be popular here.

This subthread started with me asking which HLL goes between Assembly 
and C, if C was supposedly mid-level. I don't know how it got on 
discussing what exactly assignment means.