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.