By: FrankHB (frankhb1989.delete@this.gmail.com), July 12, 2021 9:57 am
Room: Moderated Discussions
Brendan (btrotter.delete@this.gmail.com) on July 12, 2021 2:34 am wrote:
> > Also recently I've found the stupidity like this:
> > https://github.com/Rust-for-Linux/linux/commit/c606d85a0d3c67b8221fee5fa67028bdebd4b0cc#diff-521fe5c9ece1aa1f8b66228171598263574aefc6fa4ba06a61747ec81ee9f5a3
> >
> >
> > Instead of doing this
> > void foo()
> > {
> > p[1].x().y() = p[2].x().y();
> > }
> >
> >
> > Now you have to do this. Who the fuck in rust team though this is a good idea.
> > ///SAFETY: p has 5 elements
> > ///XXXX
> > ///XXXX
> > unsafe fn foo()
> > {
> > (unsafe{p.get_mut_unchecked(1)}.unsafe {x()}.unwrap().unsafe{y()?})? =
> > (unsafe{p.get_mut_unchecked(2)}.unsafe {x()}.unwrap().unsafe{y()?})?;
> > }
> >
> > Rust one is completely unreadable, wasting programmers time and probably even leading to slower compilation.
>
> Unlike C++; where it's impossible to be sure what something as innocent looking as "a = b + c;"
> actually does without scouring the source code to determine who overloaded what; where compile
> times have a reputation for being the worst of any language ever created (despite scavenging the
> concept of modules from other languages and slapping it onto their huge pile recently)?
This is red herring. The example is about some crazy and absurd code abuse, which is also complaint by average Rust users. In constrast, operator overloading is quite idiomatic and irrelavant to the point here.
As of this C++ case, it should not cause trouble once the overloaded operator is well-designed to expose its intent properly. It is also ridiculous to blame the contextual-dependent nature solely of the overloading. The name lookup on variables "a", "b" and "c" also requires reading the declaration to ensure the meaning clear, so you are actually forbidden from being that innocent unless you don't use any languages having such kinds of scoped variables.
BTW, overloading, being a form of ad-hoc polymorphism, is certainly evil in many sorts. But in the context of C++, my hatred to the feature mostly comes from the effects that over-complicated overloading rules bloat the language specification (i.e. ISO/IEC 14882) a lot. As of Rust... well, where is the language specification?
And thanks to Rust, reputation of compile time of today's C++ seems to be promoted a bit. (I'm against C++ module for some other reasons, though.)
> > If the goal of Rust team is to make everything painful, why should I waste time to fight against
> > the compiler? Instead of using that time to sanitize and fuzz? What's the benefit of using it?
>
> Heh. This is how I feel about "smart pointers" in C++. If the goal of C++ is to double
> the (already 10 times worse) learning curve why should I fight against the compiler?
Why do you feel C++'s smart pointers difficult to learn? Is Rc really simpler than shared_ptr besides the spelling?
> Note: I'm not a Rust advocate (I'm just willing to let other people spend their time experimenting
> so I can obtain better empirical evidence about the benefits and pitfalls of certain language features).
> To me; the goal should be to reduce complexity of the language (because I think "more complexity" translates
> directly into "higher chance of mistakes" and that programmers have enough complexity to deal with
> from the problem their code is trying to solve), and to reduce the time between a programmer making
> a mistake and the programmer finding out a mistake was made (primarily by designing language to maximize
> the practicality and effectiveness of "continual analysis while you type").
>
Professional empirical evidence (in the sense of programming language theory and authoring the language specification) shows both C++ and Rust are the kind of most evil ones about both complexity of language rules and learning curves for most users. There do exist a few worse, say, Haskell; but C++ and Rust are already enough far from easy and simple for non-specialists. And they will both become worse in the forseeable future. I don't see the essential differences here, besides "disgned by commitee v. community".
> > Also recently I've found the stupidity like this:
> > https://github.com/Rust-for-Linux/linux/commit/c606d85a0d3c67b8221fee5fa67028bdebd4b0cc#diff-521fe5c9ece1aa1f8b66228171598263574aefc6fa4ba06a61747ec81ee9f5a3
> >
> >
> > Instead of doing this
> > void foo()
> > {
> > p[1].x().y() = p[2].x().y();
> > }
> >
> >
> > Now you have to do this. Who the fuck in rust team though this is a good idea.
> > ///SAFETY: p has 5 elements
> > ///XXXX
> > ///XXXX
> > unsafe fn foo()
> > {
> > (unsafe{p.get_mut_unchecked(1)}.unsafe {x()}.unwrap().unsafe{y()?})? =
> > (unsafe{p.get_mut_unchecked(2)}.unsafe {x()}.unwrap().unsafe{y()?})?;
> > }
> >
> > Rust one is completely unreadable, wasting programmers time and probably even leading to slower compilation.
>
> Unlike C++; where it's impossible to be sure what something as innocent looking as "a = b + c;"
> actually does without scouring the source code to determine who overloaded what; where compile
> times have a reputation for being the worst of any language ever created (despite scavenging the
> concept of modules from other languages and slapping it onto their huge pile recently)?
This is red herring. The example is about some crazy and absurd code abuse, which is also complaint by average Rust users. In constrast, operator overloading is quite idiomatic and irrelavant to the point here.
As of this C++ case, it should not cause trouble once the overloaded operator is well-designed to expose its intent properly. It is also ridiculous to blame the contextual-dependent nature solely of the overloading. The name lookup on variables "a", "b" and "c" also requires reading the declaration to ensure the meaning clear, so you are actually forbidden from being that innocent unless you don't use any languages having such kinds of scoped variables.
BTW, overloading, being a form of ad-hoc polymorphism, is certainly evil in many sorts. But in the context of C++, my hatred to the feature mostly comes from the effects that over-complicated overloading rules bloat the language specification (i.e. ISO/IEC 14882) a lot. As of Rust... well, where is the language specification?
And thanks to Rust, reputation of compile time of today's C++ seems to be promoted a bit. (I'm against C++ module for some other reasons, though.)
> > If the goal of Rust team is to make everything painful, why should I waste time to fight against
> > the compiler? Instead of using that time to sanitize and fuzz? What's the benefit of using it?
>
> Heh. This is how I feel about "smart pointers" in C++. If the goal of C++ is to double
> the (already 10 times worse) learning curve why should I fight against the compiler?
Why do you feel C++'s smart pointers difficult to learn? Is Rc really simpler than shared_ptr besides the spelling?
> Note: I'm not a Rust advocate (I'm just willing to let other people spend their time experimenting
> so I can obtain better empirical evidence about the benefits and pitfalls of certain language features).
> To me; the goal should be to reduce complexity of the language (because I think "more complexity" translates
> directly into "higher chance of mistakes" and that programmers have enough complexity to deal with
> from the problem their code is trying to solve), and to reduce the time between a programmer making
> a mistake and the programmer finding out a mistake was made (primarily by designing language to maximize
> the practicality and effectiveness of "continual analysis while you type").
>
Professional empirical evidence (in the sense of programming language theory and authoring the language specification) shows both C++ and Rust are the kind of most evil ones about both complexity of language rules and learning curves for most users. There do exist a few worse, say, Haskell; but C++ and Rust are already enough far from easy and simple for non-specialists. And they will both become worse in the forseeable future. I don't see the essential differences here, besides "disgned by commitee v. community".
Topic | Posted By | Date |
---|---|---|
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/09 08:56 PM |
Is unsafe hell truly good for linux kernel in the future? | Brendan | 2021/07/09 11:59 PM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 12:37 PM |
Is unsafe hell truly good for linux kernel in the future? | anon | 2021/07/10 03:14 AM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 12:40 PM |
Is unsafe hell truly good for linux kernel in the future? | Gabriele Svelto | 2021/07/10 02:59 PM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 03:42 PM |
Is unsafe hell truly good for linux kernel in the future? | anon | 2021/07/11 05:11 AM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/12 11:40 AM |
Is unsafe hell truly good for linux kernel in the future? | Foo_ | 2021/07/10 05:56 AM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 08:59 AM |
Most RWT posters don’t decide what goes into the Linux kernel | Mark Roulo | 2021/07/10 11:55 AM |
Is unsafe hell truly good for linux kernel in the future? | Foo_ | 2021/07/22 10:10 AM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 09:22 AM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 09:24 AM |
Déja Vu | Dismissive | 2021/07/10 09:41 AM |
Déja Vu | cqwrteur | 2021/07/10 09:47 AM |
Déja Vu | Dismissive | 2021/07/10 09:51 AM |
Déja Vu | Michael S | 2021/07/10 12:11 PM |
Is unsafe hell truly good for linux kernel in the future? | Gabriele Svelto | 2021/07/10 11:51 AM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 12:32 PM |
Is unsafe hell truly good for linux kernel in the future? | Michael S | 2021/07/10 01:04 PM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 01:25 PM |
Is unsafe hell truly good for linux kernel in the future? | Gabriele Svelto | 2021/07/10 02:56 PM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 03:41 PM |
Is unsafe hell truly good for linux kernel in the future? | Rayla | 2021/07/10 04:33 PM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 05:27 PM |
Interesting response... (NT) | Rayla | 2021/07/10 08:02 PM |
perhaps just another lousy AI bot? (NT) | anonymou5 | 2021/07/10 08:33 PM |
perhaps just another lousy AI bot? | dmcq | 2021/07/10 10:26 PM |
perhaps just another lousy AI bot? | cqwrteur | 2021/07/10 10:56 PM |
perhaps just another lousy AI bot? | dmcq | 2021/07/11 02:29 AM |
perhaps just another lousy AI bot? | anon | 2021/07/11 05:16 AM |
perhaps just another lousy AI bot? | cqwrteur | 2021/07/12 02:56 PM |
perhaps just another lousy AI bot? | Rayla | 2021/07/11 05:13 AM |
perhaps just another lousy AI bot? | cqwrteur | 2021/07/11 10:59 AM |
When did I call you a bot, Kebabbert? (NT) | Rayla | 2021/07/11 07:51 PM |
Alternatives? | Brendan | 2021/07/11 12:54 AM |
Alternatives? | Michael S | 2021/07/11 05:01 AM |
Alternatives? | Brendan | 2021/07/11 05:51 AM |
Alternatives? | cqwrteur | 2021/07/11 10:58 AM |
Alternatives? | Gabriele Svelto | 2021/07/12 12:31 AM |
Alternatives? | Michael S | 2021/07/12 02:58 AM |
Alternatives? | anon2 | 2021/07/12 08:08 AM |
Alternatives? | Michael S | 2021/07/12 08:22 AM |
cqwrteur: Keep it polite | David Kanter | 2021/07/13 07:59 AM |
Alternatives? | dmcq | 2021/07/12 08:37 AM |
Alternatives? | cqwrteur | 2021/07/12 03:04 PM |
Alternatives? | dmcq | 2021/07/12 03:26 PM |
Alternatives? | cqwrteur | 2021/07/13 12:47 AM |
Alternatives? | dmcq | 2021/07/13 05:54 AM |
Alternatives? | Jörn Engel | 2021/07/13 03:53 PM |
Alternatives? | FrankHB | 2021/07/17 06:56 AM |
Differences between Rust and C/Go | Gabriele Svelto | 2021/07/14 04:57 AM |
Differences between Rust and C/Go | FrankHB | 2021/07/17 08:47 AM |
Alternatives? | FrankHB | 2021/07/12 09:08 AM |
Alternatives? | Gabriele Svelto | 2021/07/14 01:28 PM |
Inappropriate messages removed: cqwrteur | David Kanter | 2021/07/15 09:59 AM |
Alternatives? | FrankHB | 2021/07/16 05:43 AM |
Alternatives? | Anon | 2021/07/16 11:01 AM |
Alternatives? | Gabriele Svelto | 2021/07/16 12:44 PM |
Type abstraction and kernel programming | FrankHB | 2021/07/17 12:44 AM |
Type abstraction and kernel programming | dmcq | 2021/07/18 03:00 AM |
Type abstraction and kernel programming | dmcq | 2021/07/18 03:36 AM |
Type abstraction and kernel programming | Etienne Lorrain | 2021/07/19 12:03 AM |
Type abstraction and kernel programming | dmcq | 2021/07/19 01:01 AM |
Type abstraction and kernel programming | Anon | 2021/07/19 01:05 AM |
Type abstraction and kernel programming | dmcq | 2021/07/19 02:23 AM |
Type abstraction and kernel programming | Brendan | 2021/07/19 06:05 AM |
Alternatives? | gallier2 | 2021/07/20 03:57 AM |
Alternatives? | Anon | 2021/07/20 05:24 AM |
Alternatives? | Michael S | 2021/07/20 09:14 AM |
Alternatives? | Anon | 2021/07/20 09:53 AM |
Alternatives? | gallier2 | 2021/07/21 10:44 PM |
Alternatives? | Adrian | 2021/07/20 11:00 AM |
Alternatives? | Brett | 2021/07/20 10:13 PM |
Alternatives? | Michael S | 2021/07/21 01:12 AM |
Alternatives? | dmcq | 2021/07/22 11:58 AM |
Alternatives? | Anon | 2021/07/21 07:58 AM |
Alternatives? | Brendan | 2021/07/12 01:34 AM |
Alternatives? | FrankHB | 2021/07/12 09:57 AM |
Alternatives? | cqwrteur | 2021/07/12 11:55 AM |
Alternatives? | FrankHB | 2021/07/12 08:44 PM |
Alternatives? | Brendan | 2021/07/12 07:52 PM |
Alternatives? | cqwrteur | 2021/07/12 10:05 PM |
Alternatives? | Anon | 2021/07/12 10:42 PM |
Alternatives? | cqwrteur | 2021/07/12 11:42 PM |
Alternatives? | cqwrteur | 2021/07/12 11:44 PM |
Alternatives? | Anon | 2021/07/13 07:32 PM |
Alternatives? | cqwrteur | 2021/07/13 08:36 PM |
Alternatives? | cqwrteur | 2021/07/13 08:39 PM |
Alternatives? | Anon | 2021/07/13 09:02 PM |
Alternatives? | cqwrteur | 2021/07/13 09:18 PM |
Alternatives? | cqwrteur | 2021/07/13 08:49 PM |
Alternatives? | Anon | 2021/07/13 09:07 PM |
Alternatives? | cqwrteur | 2021/07/13 09:16 PM |
Alternatives? | Anon | 2021/07/13 10:31 PM |
Alternatives? | cqwrteur | 2021/07/13 11:30 PM |
Alternatives? | Anon | 2021/07/14 12:55 AM |
Alternatives? | cqwrteur | 2021/07/14 01:22 AM |
Alternatives? | Anon | 2021/07/14 02:05 AM |
Alternatives? | cqwrteur | 2021/07/14 02:11 AM |
Alternatives? | Anon | 2021/07/14 03:16 AM |
Alternatives? | cqwrteur | 2021/07/14 06:06 AM |
Alternatives? | Anon | 2021/07/14 07:20 AM |
Alternatives? | cqwrteur | 2021/07/14 07:51 AM |
Alternatives? | Anon | 2021/07/14 11:33 AM |
Alternatives? | Gabriele Svelto | 2021/07/14 12:19 PM |
Alternatives? | FrankHB | 2021/07/16 06:07 AM |
Alternatives? | cqwrteur | 2021/07/13 11:33 PM |
Alternatives? | Anon | 2021/07/14 12:57 AM |
Alternatives? | cqwrteur | 2021/07/14 01:21 AM |
Alternatives? | dmcq | 2021/07/14 02:06 AM |
Alternatives? | cqwrteur | 2021/07/14 02:50 AM |
Alternatives? | ⚛ | 2021/07/15 07:33 AM |
Alternatives? | FrankHB | 2021/07/16 06:13 AM |
Alternatives? | cqwrteur | 2021/07/13 11:39 PM |
Alternatives? | Anon | 2021/07/14 01:08 AM |
Alternatives? | cqwrteur | 2021/07/14 01:20 AM |
Alternatives? | dmcq | 2021/07/14 01:46 AM |
Alternatives? | cqwrteur | 2021/07/14 01:52 AM |
Alternatives? | dmcq | 2021/07/14 09:13 AM |
Alternatives? | dmcq | 2021/07/14 09:23 AM |
Dealing with memory errors | Brendan | 2021/07/14 11:50 AM |
Dealing with memory errors | dmcq | 2021/07/14 03:27 PM |
Dealing with memory errors | Brendan | 2021/07/14 03:55 PM |
Alternatives? | cqwrteur | 2021/07/14 02:12 AM |
Alternatives? | Anon | 2021/07/14 03:16 AM |
Alternatives? | cqwrteur | 2021/07/14 05:55 AM |
Alternatives? | FrankHB | 2021/07/16 06:27 AM |
Alternatives? | cqwrteur | 2021/07/14 01:38 AM |
Alternatives? | anon | 2021/07/14 02:50 AM |
Stop feeding that troll | none | 2021/07/14 03:13 AM |
Alternatives? | cqwrteur | 2021/07/14 06:39 AM |
Alternatives? | Brendan | 2021/07/14 11:15 AM |
Alternatives? | Anon | 2021/07/14 03:19 AM |
Alternatives? | cqwrteur | 2021/07/14 06:12 AM |
Alternatives? | Anon | 2021/07/14 07:17 AM |
Alternatives? | cqwrteur | 2021/07/14 07:47 AM |
Alternatives? | Anon | 2021/07/14 12:00 PM |
Alternatives? | cqwrteur | 2021/07/14 12:44 PM |
Alternatives? | ⚛ | 2021/07/15 09:36 AM |
Alternatives? | Gabriele Svelto | 2021/07/14 12:26 PM |
Alternatives? | cqwrteur | 2021/07/14 12:46 PM |
Alternatives? | Gabriele Svelto | 2021/07/14 01:36 PM |
Alternatives? | cqwrteur | 2021/07/14 01:55 PM |
Alternatives? | Smoochie | 2021/07/14 11:07 PM |
Alternatives? | ⚛ | 2021/07/15 07:37 AM |
Alternatives? | Brendan | 2021/07/15 10:21 AM |
Alternatives? | Anon | 2021/07/15 12:15 PM |
Alternatives? | FrankHB | 2021/07/16 06:27 AM |
Alternatives? | None | 2021/07/14 01:50 AM |
Alternatives? | cqwrteur | 2021/07/14 01:54 AM |
Alternatives? | cqwrteur | 2021/07/14 01:55 AM |
Alternatives? | Rayla | 2021/07/14 04:47 AM |
Alternatives? | cqwrteur | 2021/07/14 05:54 AM |
Alternatives? | Gabriele Svelto | 2021/07/14 12:43 PM |
Alternatives? | FrankHB | 2021/07/12 11:47 PM |
Alternatives? | FrankHB | 2021/07/12 11:05 PM |
Alternatives? | Michael S | 2021/07/13 12:01 AM |
Alternatives? | FrankHB | 2021/07/13 12:25 AM |
Alternatives? | Doug S | 2021/07/12 11:29 PM |
Alternatives? | cqwrteur | 2021/07/12 11:48 PM |
Alternatives? | FrankHB | 2021/07/13 12:07 AM |
Is unsafe hell truly good for linux kernel in the future? | ⚛ | 2021/07/12 05:27 AM |
Is unsafe hell truly good for linux kernel in the future? | Anon | 2021/07/12 08:46 AM |
Is unsafe hell truly good for linux kernel in the future? | Etienne Lorrain | 2021/07/13 01:00 AM |
Is unsafe hell truly good for linux kernel in the future? | cqwrteur | 2021/07/10 12:38 PM |