• 𝕸𝖔𝖘𝖘@infosec.pub
    link
    fedilink
    English
    arrow-up
    49
    ·
    5 days ago

    Put the gun away and throw that cpp book in the bin, fool. I brought The Linux Kernel Programming Guide, which is in C, and my own socks, which are wool. Now let’s gets crackin.

    • Pickle_Jr@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      8
      arrow-down
      1
      ·
      5 days ago

      I already use linux. My feet have been getting cold lately. it never occurred to me to get wool socks. Is this how it starts? Are skirts next?

      • SlopppyEngineer@lemmy.world
        link
        fedilink
        arrow-up
        8
        ·
        5 days ago

        Unless you use goat wool socks. Then you can go for a old school hippie build. Sandals, long hair, tie dye shirt and go from there.

        • esa@discuss.tchncs.de
          link
          fedilink
          arrow-up
          3
          ·
          4 days ago

          Socks were invented to be used in sandals, it’s the one true way!

          (Typed wearing big woolen socks in birkenstocks)

      • 𝕸𝖔𝖘𝖘@infosec.pub
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 days ago

        Never touched rust, so I don’t understand the hype. I’m not arguing against it, mind you, but I’m gathering, more and more, that it’s worth a look. Maybe I’ll look into it after work.

        • snekmuffin@lemmy.dbzer0.com
          link
          fedilink
          arrow-up
          3
          arrow-down
          1
          ·
          4 days ago

          even all of that hype about memory safety and borrow checker you keep hearing aside, the actual coolest thing about Rust is how it does Traits instead of classes and that you can bind arbitrary data to enums

          • 𝕸𝖔𝖘𝖘@infosec.pub
            link
            fedilink
            English
            arrow-up
            1
            ·
            4 days ago

            Really? That’s really cool. So, what’s all the hate? Is there any actual merit to it, or is it just an “I’m better than you because I just am” mindset?

            • esa@discuss.tchncs.de
              link
              fedilink
              arrow-up
              5
              ·
              4 days ago

              The serious answer here likely has several components:

              1. Some people and businesses have invested a lot in languages that governments are now trying to deprecate. When someone is told that their assets may be stranding, and please move on to $NEWTHING, they’re likely to get … grumpy. Both they and the government may be correct here, even if they’re at odds—they have different scopes and concerns.
              2. Differing values. See e.g. Cantrill’s “Platform as a reflection of values”.
              • Rust highly values correctness, which will feel like a straitjacket to a lot of people.
              • It also moves as much error detection as it can to the compilation stage, which won’t sit well with people who want to get something out the door ASAP and then find the bugs as they happen.
              • So it also encourages tackling complexity early rather than kicking the can down the road, which again isn’t to everyone’s preference.
              • Croquette@sh.itjust.works
                link
                fedilink
                arrow-up
                2
                arrow-down
                1
                ·
                4 days ago

                More than half the points are just good engineering practice directly embedded in the language.

                It tells a lot about the state of programming in general with the pushback we see with memory safe languages.

                I’m down with Rust and I can’t wait for official support for embedded Rust in chip manufacturers, because until then, very few clients will be okay with using unofficial Rust cargos for their products.

                • esa@discuss.tchncs.de
                  link
                  fedilink
                  arrow-up
                  3
                  arrow-down
                  1
                  ·
                  4 days ago

                  Yeah, that’s the correctness focus. Some people dislike it as a straitjacket, some even take it as a personal insult because they see it as a skill issue. They, the good devs, shouldn’t be held back like that (spoiler: they aren’t as good as they think they are).

                  Personally I like that aspect of Rust, but I also write Python with a typechecker and a loong list of enabled lints in ruff. I can get the happy path done without it, but having just the happy path often isn’t good enough.

                  Enforced correctness helps a lot with confidence for those of us who know we sometimes make bad assumptions or forget some nuance or detail. But it will be absolutely infuriating for people who can’t stand being told they made an error, even one of omission.

              • 𝕸𝖔𝖘𝖘@infosec.pub
                link
                fedilink
                English
                arrow-up
                2
                ·
                4 days ago

                This is a very detailed answer, and I greatly appreciate it. So, the subpoints on point 2 are benefits in my eyes. Just another reason to delve deeper into this language. Thanks!

  • z3rOR0ne@lemmy.ml
    link
    fedilink
    arrow-up
    36
    ·
    edit-2
    5 days ago

    Girl, I will wear whatever socks you want, but… pulls out my own gun. We’re reading this damn book instead.

      • z3rOR0ne@lemmy.ml
        link
        fedilink
        arrow-up
        6
        ·
        edit-2
        4 days ago

        Honestly, I prefer King’s book to any other for intro to C programming. K&R is a classic, and is really quite good for diving into some cool tricks (i.e. postfix operation wizardry).

        But as a beginner, I can just say that King’s book is much more digestible. The author holds your hand a lot more and assumes you only have a basic knowledge of programming and the UNIX command line.

        That said, the exercises and simple projects do push you to demonstrate what you learned in each chapter as well as enforcing other Computer Science fundamentals like basic data structures (stacks, queues, linked lists) through demonstrations in the C language.

        My plan is to revisit K&R after a few other books in C like Advanced Programming In The Unix Environment, Unix Network Programming, and The Linux Programming Interface. All while referencing Beej’s Resources.

        I feel like by then I’ll hopefully have a more solid grasp on C and can then more aptly appreciate The K&R Book.

  • kekmacska@lemmy.zip
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    5 days ago

    for command line apps bash, python, perl, ruby and similiar high level languages are more than enough. You can write some Kali Lincox the louder you are the less you hear network probe stuff with any of these, or even a storage optimizer (BleachBit is almost entirely written in Python, which is a very highly abstracted language implemented from C) Rust and C are only needed for performance-crtitical stuff (like rythm games) or/and directly interacting with hardware (drivers, firmware, system functions)

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      2
      ·
      4 days ago

      I would not throw Rust and C together in this.
      Rust is low-level in terms of being usable for kernel and embedded development (due to not needing a runtime), but it’s rather high-level in terms of the syntax offering lots of abstraction from the weirdness of the hardware.

      Some of that not-needing-a-runtime does bleed into the syntax, but in my opinion, it’s still higher level from a syntax perspective than Bash et al, because it brings in many functional aspects.

      I guess, I’m also just bothered by you saying, you don’t ‘need’ Rust for writing CLIs, when it’s my favorite language for this.
      To some degree, I do just find it ridiculous to launch a whole runtime when the user just wants the --help, but the argument parsing in Rust is also just really nice: https://rust-cli.github.io/book/tutorial/cli-args.html#parsing-cli-arguments-with-clap

    • sepi@piefed.social
      link
      fedilink
      English
      arrow-up
      5
      arrow-down
      1
      ·
      5 days ago

      Don’t listen to the newbie above. You can use whatever language you are comfy with that works for your situation.

      • kekmacska@lemmy.zip
        link
        fedilink
        English
        arrow-up
        5
        arrow-down
        2
        ·
        5 days ago

        i never said you can’t. But high level languages were made for high level programming, and low level for low level programming. If you only know C, sure, you can write a desktop music player, but it will be much harder than just using Java, or even Python, since both of these languages are known about their extensive prewritten libraries. And you have to write much less, which means less room for error. Using a high level language will also benefit you if you decide to port your app to a drasticly different operating system. You can use the same codebase for Python, and for Java too to seamlessly run the program on any other os supported by these languages. In C, you need to adjust a lot of things, i know from experience that Linux C source can compile and run on windows, but it is extremely rare and can introduce bugs. However, you are right that C is highly multifunctional. If you know it, you can write any low level software or desktop app. And it also runs mich faster than any high level intrepeted language. And even if i could be considered a beginner, i actually study software development and testing, so i have an idea what i’m talking about

        • sepi@piefed.social
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          2
          ·
          edit-2
          5 days ago

          “However you are right that…” I did not make the claim you are telling me I am right for making. I think a bot wrote this.

    • Lucy :3@feddit.org
      link
      fedilink
      arrow-up
      9
      arrow-down
      2
      ·
      5 days ago

      I’ll never touch Rust.

      I hate the syntax and cargo too much for that. If that means that I’ll never write mission critical, low level code, so be it.

      • m_f@midwest.social
        link
        fedilink
        English
        arrow-up
        9
        ·
        5 days ago

        What don’t you like about Cargo? Is there another package manager you like more?

        • Lucy :3@feddit.org
          link
          fedilink
          arrow-up
          7
          arrow-down
          1
          ·
          edit-2
          4 days ago

          Well - of course I prefer a centralized package manager like pacman, which I also use for python packages etc., but I mainly dislike the building process of rust, which is usually done with cargo. No libraries, not even a global cache for already compiled dependencies, no distcc. This makes it infinitely slower than most C/C++ projects. Compiling the kernel is literally faster than compiling a “simple” project like spotify_cli (500+ dependencies, depending on configuration).

          So it’s ass from a user perspective, waiting for stuff to compile (just for it to fail, and start from scratch, as some stuff needs a clean build/src dir), and imo very weird from a dev perspective.

    • TootSweet@lemmy.world
      link
      fedilink
      English
      arrow-up
      72
      arrow-down
      3
      ·
      5 days ago

      Right? It’s in the kernel and everything now. Linus likes it. Linus hates everything. HOW MUCH ARE THEY PAYING HIM?

      • Ephera@lemmy.ml
        link
        fedilink
        English
        arrow-up
        25
        arrow-down
        1
        ·
        5 days ago

        Did he actually say that he likes it? My impression was that it’s not his comfort zone, but he recognizes that for the vast majority of young programmers, C is not their comfort zone. And so, if they don’t hop on this Rust train, the Linux kernel is going to look like a COBOL project in a not too distant future. It does not happen very often that a programming language capable of implementing kernels gains wide-spread adoption.

      • Anna@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        1 day ago

        I’m pretty sure Linus dissed on RUST, but then again he disses on everything and everyone.

        • Possibly linux@lemmy.zip
          link
          fedilink
          English
          arrow-up
          1
          ·
          5 days ago

          The problem is that both Rust and Go are huge. The compiled binaries are bigger and the compilers themselves and slower and more resource intensive. The current benefit to C is that is lean and compiles quickly.

          • Zangoose@lemmy.world
            link
            fedilink
            arrow-up
            4
            ·
            edit-2
            4 days ago

            Rust is only huge because it doesn’t have an ABI. If you had an ABI (and didn’t have to compile every single dependency into the binary) the binary sizes would probably drop a lot to the point where they’re only slightly bigger than a C counterpart

            Edit: I don’t know if Go has an ABI but they also include a runtime garbage collector in their binaries so that probably has something to do with it.

        • esa@discuss.tchncs.de
          link
          fedilink
          arrow-up
          3
          ·
          4 days ago

          Still remains to be seen if a potential rust ABI can avoid becoming a chain to the wall the way the C++ ABI seems to have become. When a lot of C++ers apparently agree with “I’m tired of paying for an ABI stability I’m not using” it’s not so clear it would really be a boon to Rust.

          That said no_std appears to be what people go to for the lean Rust.

          And a lot of us are happy not having to juggle shared dependencies, but instead having somewhat fat but self-contained binaries. It’s part of the draw of Go too; fat binaries come up as a way to avoid managing e.g. Python dependencies across OS-es. With Rust and Go you can build just one binary per architecture/libc and be done with it.

  • Magister@lemmy.world
    link
    fedilink
    arrow-up
    69
    arrow-down
    1
    ·
    5 days ago

    Linux is C only, ever read the rant by Linus last century about C++ ? I was there, in usenet

    • interdimensionalmeme@lemmy.ml
      link
      fedilink
      arrow-up
      10
      ·
      4 days ago

      Here’s what we’re gonna do. We’re going to do the equivalent of x11 application network transparency but with wayland.

      Kind of like streaming a desktop with sunshine, but on an app by app basis.

      Also we’re gonna make a client that work for it on android, windows and in a browser.

      Then I’m going to fuck you in the ass