C for Rust Programmers

(bd103.dev)

34 points | by xyproto 1 day ago

5 comments

  • uecker 57 minutes ago
    Any tutorial for C should explain compiler warnings and other tools that help make code safer. In C, you do not rely on the language specification but on tooling. Especially for Rust programmers, this needs to be explained more explicitly. And of course, you can build abstractions using types in C. So a tutorial should also focus on that, and perhaps not start with a low-level string reversal function.
    • bjackman 7 minutes ago
      > This is not a substitute for a proper C tutorial
    • kingforaday 11 minutes ago
      I'm with you. Since the post already shows Clang catching the array-decay bug, the author could even just add a “always build with -Wall -Wextra -fsanitize=address,undefined” note and some explanation of course.
  • bjackman 11 minutes ago
    It's beautiful to see this perspective! The fact that we are at "whoa, C is fucked up compared to my expectations" instead of "look at Rust's fancy safety stuff" shows that as a field we've started lifting the baseline.

    Nowadays I actually believe I'll likely see a world without memory corruption within my lifetime.

    • kingforaday 4 minutes ago
      It’s definitely great that memory safety is becoming more pervasive. Though I’ll believe “a world without memory corruption” right up until another <insert your relevant hacker hero name> comes along and finds a way through an unsafe block, an FFI boundary, or the hardware itself (Rowhammer says hi).
  • ReDress 1 hour ago
    I'm going to go out on a limb here and make a wild guess.

    That boolean is actually mostly an extension of the integer system whereby we now have an integer type that stores only one bit.

    Whereby the bit stored either results in a 'true' or 'false' value.

    Anyways, I know booleans are useful in systems development when you have strict memory / storage constrains / bandwidth (networks).

    Yeah, that works for me.

    • bjackman 9 minutes ago
      'bool' is still at least 1 byte in C. If you want to store one Boolean per bit you have to manually implement a bitmap.
      • tyromaniac 2 minutes ago
        Or pull out the C++ and use std::vector<bool>,... But you should probably never do that
  • _dain_ 1 hour ago
    >The very first systems programming language I ever learned was Rust. This is uncommon compared to many other programmers; you're more likely to find someone who learned C or C++ first before coming to Rust.

    It's becoming increasingly common. Rust is my first systems programming language too. I tried to learn C a few years ago but I found it too austere and prickly, which put me off.

    • assimpleaspossi 23 minutes ago
      I was going to write that I found this odd. The kid that cuts my grass is going for a degree in CS and told me just yesterday that, in his second year, Java is the language he uses with a little Python. That C was such a struggle and he won't touch it.

      For someone getting a CS degree, that just seems so, so odd. Along with that, he's been studying edge detection in images. In his second year. Not to run off topic but, again, I find that so, so odd.

    • ReDress 1 hour ago
      Probably because C and C++ are mostly used in system and desktop development.

      Rust is taking steps or has been taking steps in this direction too.

      It's not surprising that a lot of experienced systems and desktop development engineers looking to getting their hands on the newest tool already have experience or at least familiarity with C and C++.

  • BitProgram 1 day ago
    [dead]