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 connectionsPath: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Ben Bacarisse
Newsgroups: comp.lang.c
Subject: Re: Top 10 most common hard skills listed on resumes...
Date: Wed, 28 Aug 2024 15:57:30 +0100
Organization: A noiseless patient Spider
Lines: 55
Message-ID: <87mskwy9t1.fsf@bsb.me.uk>
References:
<92ab79736a70ea1563691d22a9b396a20629d8cf@i2pn2.org>
<87r0abzcsj.fsf@bsb.me.uk>
<874j75zftu.fsf@bsb.me.uk>
MIME-Version: 1.0
Content-Type: text/plain
Injection-Date: Wed, 28 Aug 2024 16:57:30 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="237f3e3432f89091aec497bdbc144a02";
logging-data="3689870"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/XIUHq03Ci0oq1NFkDQHOdcdDiyJY/Ops="
User-Agent: Gnus/5.13 (Gnus v5.13)
Cancel-Lock: sha1:Kt91dl/nWBgHDj95K49is9JXx1s=
sha1:j36FL04/tvVYcsmuGViv6PaGKTg=
X-BSB-Auth: 1.5378a3815d2dffb9834e.20240828155730BST.87mskwy9t1.fsf@bsb.me.uk
Bytes: 3350
Bart 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.
> 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 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.
--
Ben.