Here's my hot take: if you're designing a new programming language in the modern era, even a systems language, ignore the precedent of C and don't use &|^~ as bitwise operators. You can still have infix bitwise operators, but spell them out as bitand/bitor/bitxor/bitnot. Then you can just use &| for logical and/or, which are 1000x more common than bitwise and/or, and you can reclaim ^ for exponentiation as well. And don't forget to fix C's broken bitwise operator precedence while you're at it.
Hard disagree on single characters for logic and exponentiation. ASCII has too few special characters and you'd want to use those elsewhere, without creating ambiguity. Elixir got it right.
Re:ᚣ the Rune Programming Language
by PointyFluff on Sunday November 27, 2022 @12:29PM
(#33764703)
ASCII has tones of unused chars we could grab for coding.
Mm yes but BEL is not a character that can be typed on a keyboard with any amount of ease.
Re:ᚣ the Rune Programming Language
by dragonwriter on Sunday November 27, 2022 @01:02PM
(#33764996)
> ASCII has too few special characters
Unicode, OTOH, doesn’t have this problem.
True, but we don’t have Unicode keyboards.
Re:ᚣ the Rune Programming Language
by mumblemumble on Sunday November 27, 2022 @12:00PM
(#33764403)
Interesting. I'd go the other way. Continue using single-character bitwise operators, but spell out "and" and "or" for the logical operators.
Rationale: in normal usage, short-circuiting logical operators are, in effect, a special kind of control flow statement, and control flow statements are typically spelled out. Bitwise operators are more unequivocally meant for calculation, and therefore perhaps more deserving of similar syntax to the arithmetic operators, despite their less frequent usage.
I think that this way of drawing the distinction might be particularly relevant in a language that disallows conditional branching - and, by extension, short-circuiting logical operations - such as Rune.
This is exactly what Python did and it works out very well for the most part.
Or the Pascal way. "And"/"or" for logical operators on bools. "And"/"Or" for bitwise operators on integers
With a strong type system, it knows if the input is bool or integer
Some language use three characters for bitwise operators, like `>>>`, `!!!`, `&&&`.
I think it is a good compromise.
Re:ᚣ the Rune Programming Language
by sacnoradhq on Sunday November 27, 2022 @04:12PM
(#33767024)
Sheer insanity. Sensible languages use ** for exponentiation and ^ for xor.
https://github.com/google/rune/blob/main/bootstrap/database/...
That innovation does seem like a potential footgun.