Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. unpopular opinion: Rust: not a fan

unpopular opinion: Rust: not a fan

Scheduled Pinned Locked Moved The Lounge
30 Posts 14 Posters 2 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B BryanFazekas

    I started reading the rust documentation -- in the first section it says that by default variables are immutable. Hokay ... it appears the inventors of the language didn't know what "variable" means and didn't know how to type "dictionary.com" in their browser. I didn't feel the need to read further ...

    O Offline
    O Offline
    obermd
    wrote on last edited by
    #11

    The variables may be immutable, but that just means you can't modify the state of the variable. Strings in dotNet and Java are immutable but you can assign a new value to the variable. Immutability has huge advantages in multi-processing, whether it be on a single core or multiple cores. These advantages all resolve around proving the code is correct. Note - performance is not an advantage in this case. Since Rust is designed to be a system level language that supports multi-core systems, making all variables immutable greatly simplifies development.

    1 Reply Last reply
    0
    • honey the codewitchH honey the codewitch

      I don't know why people like it. It's like they took a perfectly good language (C) and pythonized it. No, thankfully it doesn't use significant whitespace, but I get the impression that whoever designed Rust actually hates the C language family and wants bad things to happen to them. You can keep this nonsense. If I wanted training wheels, I'd use VB. Joy. Yet another language I get to learn enough of simply to port things away into a proper language. Edited to add: anybody who designs a grammar with this construction "fn main()" needs to have their compiler taken away and forced to use scripting languages until they can prove to the world that they can use context free grammars properly

      To err is human. Fortune favors the monsters.

      raddevusR Offline
      raddevusR Offline
      raddevus
      wrote on last edited by
      #12

      Coming from a history of C/C++ & even C#, I too felt the way you do about Rust when I first started looking at it. And, I also felt like the syntax is ugly & odd. However, if you look at it from the viewpoint of what the Rust developers were actually trying to fix, it is quite amazing. I think that reading this book is what really opened my eyes to it: Rust for Rustaceans: Idiomatic Programming for Experienced Developers[^] That books delves into what the problems were that have occurred to C/C++ and how the language and compilers have been manipulated to make them end-all be-all even at the risk of code becoming breakable & unsecure. But, it's a lot to go into and if you're happy with C then there is no reason you would really look into it. I'm always just curious about what they are really trying to do at the foundations.

      honey the codewitchH 1 Reply Last reply
      0
      • Greg UtasG Greg Utas

        Saying that you were investigating it prompted me to also read its documentation more carefully. I got about halfway through and browsed the rest to come to much the same conclusion as you, though I wouldn't be quite as nasty about it. :-D

        HtC wrote:

        whoever designed Rust actually hates the C language family

        Probably so. The author of this rant[^] works on Rust.

        HtC wrote:

        If I wanted training wheels, I'd use VB.

        They're hardly the only ones who think people need training wheels--and will tell you that it's for your own good. Rust's designers must have had bad experiences with C: bugs involving memory leaks, invalid pointers, and critical regions. These things must be addressed, but they do it in a condescending way. Curiously, they don't have classes, only "traits" (similar to Java's interfaces, or multiply inherited pure virtual base classes in C++).

        HtC wrote:

        Yet another language I get to learn enough of simply to port things away into a proper language.

        Porting won't be easy. Idiomatic Rust is rather different than C++, say, so a lot of code would have to be reorganized. I think it would be easier to just understand the spec and rewrite from scratch in the target language. I'm amused that Linux wants to start using it. Talk about a culture clash. C++ would make far more sense, but maybe the Linux crowd also feel that C has abused them.

        Robust Services Core | Software Techniques for Lemmings | Articles
        The fox knows many things, but the hedgehog knows one big thing.

        raddevusR Offline
        raddevusR Offline
        raddevus
        wrote on last edited by
        #13

        That article (rant) that you mentioned is really interesting & makes a great point about C being not just a language but a protocol (since you have to learn C if you want to make any system calls). That's really a great article. Thanks for sharing.

        Greg UtasG 1 Reply Last reply
        0
        • raddevusR raddevus

          That article (rant) that you mentioned is really interesting & makes a great point about C being not just a language but a protocol (since you have to learn C if you want to make any system calls). That's really a great article. Thanks for sharing.

          Greg UtasG Offline
          Greg UtasG Offline
          Greg Utas
          wrote on last edited by
          #14

          In fairness, it was Kent who originally posted that link. It was a fun read that made some good points.

          Robust Services Core | Software Techniques for Lemmings | Articles
          The fox knows many things, but the hedgehog knows one big thing.

          <p><a href="https://github.com/GregUtas/robust-services-core/blob/master/README.md">Robust Services Core</a>
          <em>The fox knows many things, but the hedgehog knows one big thing.</em></p>

          1 Reply Last reply
          0
          • raddevusR raddevus

            Coming from a history of C/C++ & even C#, I too felt the way you do about Rust when I first started looking at it. And, I also felt like the syntax is ugly & odd. However, if you look at it from the viewpoint of what the Rust developers were actually trying to fix, it is quite amazing. I think that reading this book is what really opened my eyes to it: Rust for Rustaceans: Idiomatic Programming for Experienced Developers[^] That books delves into what the problems were that have occurred to C/C++ and how the language and compilers have been manipulated to make them end-all be-all even at the risk of code becoming breakable & unsecure. But, it's a lot to go into and if you're happy with C then there is no reason you would really look into it. I'm always just curious about what they are really trying to do at the foundations.

            honey the codewitchH Offline
            honey the codewitchH Offline
            honey the codewitch
            wrote on last edited by
            #15

            Thank you for that. Maybe it will open my eyes, and even change my mind. I've been looking for good material on Rust.

            To err is human. Fortune favors the monsters.

            1 Reply Last reply
            0
            • honey the codewitchH honey the codewitch

              I don't know why people like it. It's like they took a perfectly good language (C) and pythonized it. No, thankfully it doesn't use significant whitespace, but I get the impression that whoever designed Rust actually hates the C language family and wants bad things to happen to them. You can keep this nonsense. If I wanted training wheels, I'd use VB. Joy. Yet another language I get to learn enough of simply to port things away into a proper language. Edited to add: anybody who designs a grammar with this construction "fn main()" needs to have their compiler taken away and forced to use scripting languages until they can prove to the world that they can use context free grammars properly

              To err is human. Fortune favors the monsters.

              M Offline
              M Offline
              megaadam
              wrote on last edited by
              #16

              Hey! fn main() is fn awesum! :p

              "If we don't change direction, we'll end up where we're going"

              1 Reply Last reply
              0
              • honey the codewitchH honey the codewitch

                I don't know why people like it. It's like they took a perfectly good language (C) and pythonized it. No, thankfully it doesn't use significant whitespace, but I get the impression that whoever designed Rust actually hates the C language family and wants bad things to happen to them. You can keep this nonsense. If I wanted training wheels, I'd use VB. Joy. Yet another language I get to learn enough of simply to port things away into a proper language. Edited to add: anybody who designs a grammar with this construction "fn main()" needs to have their compiler taken away and forced to use scripting languages until they can prove to the world that they can use context free grammars properly

                To err is human. Fortune favors the monsters.

                T Offline
                T Offline
                TNCaver
                wrote on last edited by
                #17

                I was in total agreement until you wrote:

                honey the codewitch wrote:

                a perfectly good language (C)

                Neither perfect nor good, IMO.

                If you think 'goto' is evil, try writing an Assembly program without JMP.

                honey the codewitchH 1 Reply Last reply
                0
                • T TNCaver

                  I was in total agreement until you wrote:

                  honey the codewitch wrote:

                  a perfectly good language (C)

                  Neither perfect nor good, IMO.

                  If you think 'goto' is evil, try writing an Assembly program without JMP.

                  honey the codewitchH Offline
                  honey the codewitchH Offline
                  honey the codewitch
                  wrote on last edited by
                  #18

                  Well I was being generous. I prefer C++ myself.

                  To err is human. Fortune favors the monsters.

                  T 1 Reply Last reply
                  0
                  • B BryanFazekas

                    I started reading the rust documentation -- in the first section it says that by default variables are immutable. Hokay ... it appears the inventors of the language didn't know what "variable" means and didn't know how to type "dictionary.com" in their browser. I didn't feel the need to read further ...

                    T Offline
                    T Offline
                    trønderen
                    wrote on last edited by
                    #19

                    BryanFazekas wrote:

                    in the first section it says that by default variables are immutable. Hokay ... it appears the inventors of the language didn't know what "variable" means

                    One rule I remember from my student days: "Constants ain't, variables won't". I have experienced the truth of this rule quite a few times.

                    1 Reply Last reply
                    0
                    • Mircea NeacsuM Mircea Neacsu

                      Greg Utas wrote:

                      Talk about a culture clash. C++ would make far more sense, but maybe the Linux crowd also feel that C has abused them

                      It won't happen: Linus hates C++. He thinks that C++ is like a box of chocolates: you never know what you are gonna get.

                      ...
                      one = 1;
                      two = 2;
                      x = one + two;

                      In C++ '+' can be redefined to do whatever you want. I see his point but any language that doesn't allow you to shoot yourself in the foot occasionally is probably too boring. In the words of Spider-Man: "with great power comes great responsibility" :)

                      Mircea

                      T Offline
                      T Offline
                      trønderen
                      wrote on last edited by
                      #20

                      Mircea Neacsu wrote:

                      In C++ '+' can be redefined to do whatever you want.

                      I never programmed Forth myself, but a former coworker who was a Forth worshipper (quoting the Scriptures: "Go Forth, and Multiply") showed med how to really obfuscate code: Forth lets you redefine any token. So he redefined '17' to have the value of '5'. That brings the concept of 'off by one' to new levels :-)

                      Mircea NeacsuM J 2 Replies Last reply
                      0
                      • honey the codewitchH honey the codewitch

                        Well I was being generous. I prefer C++ myself.

                        To err is human. Fortune favors the monsters.

                        T Offline
                        T Offline
                        TNCaver
                        wrote on last edited by
                        #21

                        I can respect that. In my current and previous roles in the financial and music industries (respectively), both immersed in the Microsoft world with no need for hardware-level programming, I prefer C#. But if I had the opportunity to do hardware-level stuff again my preference would probably shift to Assembly. I love speaking CPU.

                        If you think 'goto' is evil, try writing an Assembly program without JMP.

                        honey the codewitchH 1 Reply Last reply
                        0
                        • T trønderen

                          Mircea Neacsu wrote:

                          In C++ '+' can be redefined to do whatever you want.

                          I never programmed Forth myself, but a former coworker who was a Forth worshipper (quoting the Scriptures: "Go Forth, and Multiply") showed med how to really obfuscate code: Forth lets you redefine any token. So he redefined '17' to have the value of '5'. That brings the concept of 'off by one' to new levels :-)

                          Mircea NeacsuM Offline
                          Mircea NeacsuM Offline
                          Mircea Neacsu
                          wrote on last edited by
                          #22

                          I had a love affair with Forth. When I read Leo Brodie's "Starting Forth" book I fell so much in love with it that I wrote my own interpreter (in MACRO11 - the PDP11 assembler no less). Talk about being young and foolish :laugh:

                          Mircea

                          1 Reply Last reply
                          0
                          • T TNCaver

                            I can respect that. In my current and previous roles in the financial and music industries (respectively), both immersed in the Microsoft world with no need for hardware-level programming, I prefer C#. But if I had the opportunity to do hardware-level stuff again my preference would probably shift to Assembly. I love speaking CPU.

                            If you think 'goto' is evil, try writing an Assembly program without JMP.

                            honey the codewitchH Offline
                            honey the codewitchH Offline
                            honey the codewitch
                            wrote on last edited by
                            #23

                            I like the challenge of developing highly usable type safe interfaces that resolve to really efficient assembly like you'd have typed by hand. A recent endeavor had me bitbanging the SPI hardware registers on an ESP32 MCU to get faster performance. It was all microsecond sensitive, requiring me to have total control over what got inlined and not. I had to use constexpr everywhere to forward as much of the configuration, like pin assignments off to compile time evaluations. It replaced a nasty set of C preprocessor macros that accomplished the same. Byte for byte it generates the same assembly instructions. The guts of this file are not clean, but what it presents to the user of this header *is* htcw_tft_io/tft_spi.hpp at master · codewitch-honey-crisis/htcw_tft_io · GitHub[^]

                            To err is human. Fortune favors the monsters.

                            T 1 Reply Last reply
                            0
                            • honey the codewitchH honey the codewitch

                              I like the challenge of developing highly usable type safe interfaces that resolve to really efficient assembly like you'd have typed by hand. A recent endeavor had me bitbanging the SPI hardware registers on an ESP32 MCU to get faster performance. It was all microsecond sensitive, requiring me to have total control over what got inlined and not. I had to use constexpr everywhere to forward as much of the configuration, like pin assignments off to compile time evaluations. It replaced a nasty set of C preprocessor macros that accomplished the same. Byte for byte it generates the same assembly instructions. The guts of this file are not clean, but what it presents to the user of this header *is* htcw_tft_io/tft_spi.hpp at master · codewitch-honey-crisis/htcw_tft_io · GitHub[^]

                              To err is human. Fortune favors the monsters.

                              T Offline
                              T Offline
                              TNCaver
                              wrote on last edited by
                              #24

                              That's some sweet code there, and a great use-case for C. But gawd how I hate pointers. :laugh:

                              If you think 'goto' is evil, try writing an Assembly program without JMP.

                              honey the codewitchH 1 Reply Last reply
                              0
                              • T TNCaver

                                That's some sweet code there, and a great use-case for C. But gawd how I hate pointers. :laugh:

                                If you think 'goto' is evil, try writing an Assembly program without JMP.

                                honey the codewitchH Offline
                                honey the codewitchH Offline
                                honey the codewitch
                                wrote on last edited by
                                #25

                                I'm a weirdo, but I feel like i have a knack for pointers. they don't intimidate me at all and i almost never cause AVs with them in C++. I'm much more likely to make bad things happen like that when I'm P/Invoking from C# just because i have less of an immediate idea of what marshalling is happening.

                                To err is human. Fortune favors the monsters.

                                1 Reply Last reply
                                0
                                • T trønderen

                                  Mircea Neacsu wrote:

                                  In C++ '+' can be redefined to do whatever you want.

                                  I never programmed Forth myself, but a former coworker who was a Forth worshipper (quoting the Scriptures: "Go Forth, and Multiply") showed med how to really obfuscate code: Forth lets you redefine any token. So he redefined '17' to have the value of '5'. That brings the concept of 'off by one' to new levels :-)

                                  J Offline
                                  J Offline
                                  jmaida
                                  wrote on last edited by
                                  #26

                                  LOL! sorry for cliche but so true.

                                  1 Reply Last reply
                                  0
                                  • Greg UtasG Greg Utas

                                    All they did was make C/C++ const the default so that you have use the equivalent of mutable if it's not constant.

                                    Robust Services Core | Software Techniques for Lemmings | Articles
                                    The fox knows many things, but the hedgehog knows one big thing.

                                    B Offline
                                    B Offline
                                    BryanFazekas
                                    wrote on last edited by
                                    #27

                                    Greg Utas wrote:

                                    All they did was make C/C++ const the default so that you have use the equivalent of mutable if it's not constant.

                                    Let's think about this. In a typical program I declare dozens of variables and a handful of constants, and of those variables, probably 0.01% need to be immutable once declared. So the Rust designers flip that, requiring me to explicitly specify that a standard entity in all programming actually behaves as expected, and the default behavior is an edge case? It's a solution in search of a problem and failing to find one. OTOH, each new release of C# contains new syntax that is more cryptic, and those designers crow, "with this new syntax you save typing TTWWWWOOOOOOO characters!" like it's the greatest thing in the world. Clowns to the left of me, jokers to the right ....

                                    1 Reply Last reply
                                    0
                                    • honey the codewitchH honey the codewitch

                                      I don't know why people like it. It's like they took a perfectly good language (C) and pythonized it. No, thankfully it doesn't use significant whitespace, but I get the impression that whoever designed Rust actually hates the C language family and wants bad things to happen to them. You can keep this nonsense. If I wanted training wheels, I'd use VB. Joy. Yet another language I get to learn enough of simply to port things away into a proper language. Edited to add: anybody who designs a grammar with this construction "fn main()" needs to have their compiler taken away and forced to use scripting languages until they can prove to the world that they can use context free grammars properly

                                      To err is human. Fortune favors the monsters.

                                      R Offline
                                      R Offline
                                      Ryan Peden
                                      wrote on last edited by
                                      #28

                                      It might be that Rust is designed to solve different problems than the ones you need to solve? Though it's okay to just flat out dislike it as well. If you add up the billions of dollars of damage caused by good C programmers with decades of experience making mistakes that Rust would have disallowed - things like Heartbleed - you can see the motivation to use a language like Rust. Like it or not, year in and year old, a huge percentage of bugs and vulnerabilities in software are caused by memory safety issues. It's certainly not the best choice for every problem. I can't say I *love* writing Rust. But I think it's a good choice for you need C-like performance but can't afford vulnerabilities. Say you're implementing something like OpenSSL - I'd argue that if you're starting a project like that in 2022, you'd be crazy to pick C (or even C++) over Rust. I suppose you could pick something like MISRA C or even Ada as well, but I don't think either of those would be more joyful to write than Rust. For certain classes of problems, the only safe assumption you should make is that you do need training wheels because no matter how much experience you have or how good you are, eventually you will make a costly mistake. For most other applications, Rust probably isn't the best choice. My personal position on it is that I never quite enjoy writing Rust as much as other language; I never seem to get into that state of seamless flow I get into in other languages. But I also think it fills a niche that isn't particularly well-served by other languages. I think that Rust might not be the #1 tool for you or me, but I also think our industry as a whole needs it (or something similar) pretty desperately.

                                      honey the codewitchH 1 Reply Last reply
                                      0
                                      • R Ryan Peden

                                        It might be that Rust is designed to solve different problems than the ones you need to solve? Though it's okay to just flat out dislike it as well. If you add up the billions of dollars of damage caused by good C programmers with decades of experience making mistakes that Rust would have disallowed - things like Heartbleed - you can see the motivation to use a language like Rust. Like it or not, year in and year old, a huge percentage of bugs and vulnerabilities in software are caused by memory safety issues. It's certainly not the best choice for every problem. I can't say I *love* writing Rust. But I think it's a good choice for you need C-like performance but can't afford vulnerabilities. Say you're implementing something like OpenSSL - I'd argue that if you're starting a project like that in 2022, you'd be crazy to pick C (or even C++) over Rust. I suppose you could pick something like MISRA C or even Ada as well, but I don't think either of those would be more joyful to write than Rust. For certain classes of problems, the only safe assumption you should make is that you do need training wheels because no matter how much experience you have or how good you are, eventually you will make a costly mistake. For most other applications, Rust probably isn't the best choice. My personal position on it is that I never quite enjoy writing Rust as much as other language; I never seem to get into that state of seamless flow I get into in other languages. But I also think it fills a niche that isn't particularly well-served by other languages. I think that Rust might not be the #1 tool for you or me, but I also think our industry as a whole needs it (or something similar) pretty desperately.

                                        honey the codewitchH Offline
                                        honey the codewitchH Offline
                                        honey the codewitch
                                        wrote on last edited by
                                        #29

                                        This all makes a lot of sense to me, and I think it even goes to explain what I don't like about it in the end - it's not "flowy" enough. I'd agree that our industry needs something like Rust, and maybe Rust is it. But I don't have to like it! :laugh:

                                        To err is human. Fortune favors the monsters.

                                        1 Reply Last reply
                                        0
                                        • Greg UtasG Greg Utas

                                          Yes, I've read that Linus hates C++. Which is why it won't happen, even though it makes sense. "Don't know what you're going to get" is mostly nonsense. Some naughty C++ code must have triggered him years ago.

                                          Robust Services Core | Software Techniques for Lemmings | Articles
                                          The fox knows many things, but the hedgehog knows one big thing.

                                          G Offline
                                          G Offline
                                          Gary R Wheeler
                                          wrote on last edited by
                                          #30

                                          Greg Utas wrote:

                                          Some naughty C++ code must have triggered him years ago

                                          Nah, Linus is just a dick.

                                          Software Zen: delete this;

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups