I don’t think that casting a range of bits as some other arbitrary type “is a bug nobody sees coming”.

C++ compilers also warn you that this is likely an issue and will fail to compile if configured to do so. But it will let you do it if you really want to.

That’s why I love C++

  • magic_lobster_party@fedia.io
    link
    fedilink
    arrow-up
    54
    arrow-down
    1
    ·
    22 天前

    There are no medals waiting for you by writing overly clever code. Trust me, I’ve tried. There’s no pride. Only pain.

    • Chrobin@discuss.tchncs.de
      link
      fedilink
      arrow-up
      26
      arrow-down
      1
      ·
      22 天前

      It really depends on your field. I’m doing my master’s thesis in HPC, and there, clever programming is really worth it.

      • magic_lobster_party@fedia.io
        link
        fedilink
        arrow-up
        14
        ·
        22 天前

        Well as long you know what you’re doing and weigh the risks with the benefits you’re probably ok.

        In my experience in the industry, there’s little benefit in pretending you’re John Carmack writing fast inverse square root. Understanding what you wrote 6 months ago outweighs most else.

      • MonkderVierte@lemmy.zip
        link
        fedilink
        arrow-up
        7
        arrow-down
        1
        ·
        22 天前

        Clever as in elegantly and readable or clever as in a hack that abuses a bug/feature and you need to understand the intricacies to understand half of it?

        • Chrobin@discuss.tchncs.de
          link
          fedilink
          arrow-up
          12
          ·
          22 天前

          Honestly, also the latter. If you are using hundreds of thousands of cores for over 100h, every single second counts.

    • merc@sh.itjust.works
      link
      fedilink
      arrow-up
      8
      ·
      22 天前

      Not only that, but everyone who sees that code later is going to waste so much time trying to understand it. That includes future you.

        • merc@sh.itjust.works
          link
          fedilink
          arrow-up
          7
          arrow-down
          1
          ·
          22 天前

          A yes, comments.

          int flubTheWozat(void *) {
            for (int i=0; i<4; i++) {
              lfens += thzn[i] % ugy;  // take mod of thnz[i] with ugy and add to lefens.
            }
            return (lfens % thzn[0]) == 4; // return if it's 4ish
          }
          
          • Zacryon@feddit.org
            link
            fedilink
            arrow-up
            5
            ·
            22 天前

            Haha, meaningful, informative comments that make it easier to understand the code of course. ;)

    • Ajen@sh.itjust.works
      link
      fedilink
      arrow-up
      4
      ·
      21 天前

      Debugging code is always harder that writing it in the first place. If you make it as clever as you can, you won’t be clever enough to debug it.

    • Zacryon@feddit.org
      link
      fedilink
      arrow-up
      4
      arrow-down
      1
      ·
      22 天前

      But I must o p t i m i z e! ó_ò

      Yes, let’s spend two hours on figuring out optimal values of preallocating a vector for your specific use-case. It’s worth the couple of microseconds saved! Kleinvieh macht auch Mist.