Sujet : Re: Top 10 most common hard skills listed on resumes...
De : janis_papanagnou+ng (at) *nospam* hotmail.com (Janis Papanagnou)
Groupes : comp.lang.cDate : 08. Sep 2024, 16:22:08
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vbkff0$1vge6$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
On 08.09.2024 12:18, Bart wrote:
On 08/09/2024 04:44, Janis Papanagnou wrote:
On 06.09.2024 13:34, Bart wrote:
>
(c ? a : b) = x;
>
In Algol 68 you can write
>
IF c THEN a ELSE b FI := x
>
or, in a shorter form, as
>
( c | a | b ) := x
>
if you prefer.
But the feature (using them in lvalue contexts) was rarely used.
Sure.
[...]
This is only a "visual" symmetry, not a semantical one.
>
The LHS of the Algol 68 example is of 'REF' (lvalue) type, as it would
be the case with a language that supports a syntax as you show it here.
This is where I differ from Algol68,
Since Algol 68 is conceptually an extremely well designed language
I don't expect such formally elaborated and consistent design in
any language of much lower level.
where I had to considerably
simplify the semantics to get something I could understand and implement.
Take this C:
int A, B;
A = B;
There are two types associated with the LHS: 'int*' which is the type
the name A (its address), and 'int' which is the type of A's value.
Erm, no. The LHS of the assignment is a 'ref' 'int'; in "C" and in
(almost) all other languages I encountered. - If you have an issue
in seeing that, and with your decades of engagement with computers,
you may now have a serious practical effort to fix that view. (No
offense intended, honestly!)
So, why would a language choose int* over int as /the/ type of an
assignment target?
I suspect the "C terminology" might be in the way of understanding.
If you intend to grasp the LHS type it's probably better as analogy
to take C++'s 'int &' as the type of the LHS. (Probably the same
problem you had in understanding the "call by reference" concept,
which is also more like a '<type> &' and not a '<type> *'.)
As far as the user is concerned, they're only dealing
with int value types.
Only where values are (syntactically and semantically) expected.
Not at the LHS of an assignment. - I sense (but may be wrong) you
might have some ideas from the functional programming paradigm or
why don't you see (or can't accept) that?
If they have to consider that variables have addresses, then the same
applies to B!
Not sure what you think here. - Others in this thread have already
codified the 'A = B' for explanation purposes using functions; e.g.
assign (int &, int)
so let's add operator definitions from other languages
int & operator = (int & , int)
OP ASSIGN = (REF INT a, INT b) REF INT
This is where I think Algol68 got it badly wrong.
I strongly suspect you have no clue.
Algol 68 as probably the formally mostly elaborated and consistent
language defines the assignment semantics not differently from any
other of the many existing languages that work with variables.
Janis