• rockerface 🇺🇦@lemm.ee
    link
    fedilink
    English
    arrow-up
    17
    ·
    edit-2
    7 months ago

    As a software developer, the less ambiguous your notation is, the better it is for everyone involved. Not only will I use brackets, I’ll split my expression into multiple rows and use tabs to make it as readable as humanly possible. And maybe throw a comment or 2 if there’s still some black magic involved

        • Mic_Check_One_Two@reddthat.com
          link
          fedilink
          English
          arrow-up
          4
          ·
          edit-2
          7 months ago

          For real though, I have written some truly monstrous operations in Excel.

          What do you mean you want to use Excel to manage everyone’s calendars? And now you want to export that horribly built calendar management spreadsheet to Google Calendar? What do you mean you want the Google Calendar entries automatically formatted based on who is working on a particular day? I mean yes it’s possible but-…

        • Bandicoot_Academic@lemmy.one
          link
          fedilink
          English
          arrow-up
          3
          ·
          7 months ago

          For some context this is one of the winning entries:

          #include <stdio.h>

          #define N(a) “%”#a"$hhn" #define O(a,b) “%10$”#a"d"N(b) #define U “%10$.*37$d” #define G(a) “%”#a"$s" #define H(a,b) G(a)G(b) #define T(a) a a #define s(a) T(a)T(a) #define A(a) s(a)T(a)a #define n(a) A(a)a #define D(a) n(a)A(a) #define C(a) D(a)a #define R C(C(N(12)G(12))) #define o(a,b,c) C(H(a,a))D(G(a))C(H(b,b)G(b))n(G(b))O(32,c)R #define SS O(78,55)R “\n\033[2J\n%26$s”; #define E(a,b,c,d) H(a,b)G©O(253,11)R G(11)O(255,11)R H(11,d)N(d)O(253,35)R #define S(a,b) O(254,11)H(a,b)N(68)R G(68)O(255,68)N(12)H(12,68)G(67)N(67)

          char* fmt = O(10,39)N(40)N(41)N(42)N(43)N(66)N(69)N(24)O(22,65)O(5,70)O(8,44)N( 45)N(46)N (47)N(48)N( 49)N( 50)N( 51)N(52)N(53 )O( 28, 54)O(5, 55) O(2, 56)O(3,57)O( 4,58 )O(13, 73)O(4, 71 )N( 72)O (20,59 )N(60)N(61)N( 62)N (63)N (64)R R E(1,2, 3,13 )E(4, 5,6,13)E(7,8,9 ,13)E(1,4 ,7,13)E (2,5,8, 13)E( 3,6,9,13)E(1,5, 9,13)E(3 ,5,7,13 )E(14,15, 16,23) E(17,18,19,23)E( 20, 21, 22,23)E (14,17,20,23)E(15, 18,21,23)E(16,19, 22 ,23)E( 14, 18, 22,23)E(16,18,20, 23)R U O(255 ,38)R G ( 38)O( 255,36) R H(13,23)O(255, 11)R H(11,36) O(254 ,36) R G( 36 ) O( 255,36)R S(1,14 )S(2,15)S(3, 16)S(4, 17 )S (5, 18)S(6, 19)S(7,20)S(8, 21)S(9 ,22)H(13,23 )H(36, 67 )N(11)R G(11)""O(255, 25 )R s(C(G(11) ))n (G( 11) )G( 11)N(54)R C( “aa”) s(A( G(25)))T (G(25))N (69)R o (14,1,26)o( 15, 2, 27)o (16,3,28 )o( 17,4, 29)o(18 ,5,30)o(19 ,6,31)o( 20,7,32)o (21,8,33)o (22 ,9, 34)n(C(U) )N( 68)R H( 36,13)G(23) N(11)R C(D( G(11))) D(G(11))G(68)N(68)R G(68)O(49,35)R H(13,23)G(67)N(11)R C(H(11,11)G( 11))A(G(11))C(H(36,36)G(36))s(G(36))O(32,58)R C(D(G(36)))A(G(36))SS

          #define arg d+6,d+8,d+10,d+12,d+14,d+16,d+18,d+20,d+22,0,d+46,d+52,d+48,d+24,d
          +26,d+28,d+30,d+32,d+34,d+36,d+38,d+40,d+50,(scanf(d+126,d+4),d+(6
          -2)+18*(1-d[2]%2)+d[4]*2),d,d+66,d+68,d+70, d+78,d+80,d+82,d+90,d+
          92,d+94,d+97,d+54,d[2],d+2,d+71,d+77,d+83,d+89,d+95,d+72,d+73,d+74
          ,d+75,d+76,d+84,d+85,d+86,d+87,d+88,d+100,d+101,d+96,d+102,d+99,d+
          67,d+69,d+79,d+81,d+91,d+93,d+98,d+103,d+58,d+60,d+98,d+126,d+127,
          d+128,d+129

          char d[538] = {1,0,10,0,10};

          int main() { while(*d) printf(fmt, arg); }

        • dejected_warp_core@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          7 months ago

          Further up the thread, someone mentioned that writing good software is about communicating concepts to people, first and foremost.

          This, code obfuscation, is what it looks like to communicate exclusively to the compiler instead.

    • Quetzalcutlass@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      ·
      7 months ago

      I had someone submit a pull request recently that, in addition to their actual changes, also removed every single parenthesis that wasn’t strictly necessary in a file full of 3D math functions. I know it was probably the fault of an autoformatter they used, but I was still the most offended I’ve ever been at a pull request.

    • dustyData@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      7 months ago

      As a professor said, most programming languages don’t care about readability and whitespace. But we care because humans need it to parse meaning. Thus, write code for people, not for the machine. Always assume that someone with no knowledge of the context will have to debug it, and be kind to them. Because that someone might be you in six months when you have completely forgotten how the code works.

      • zalgotext@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        3
        ·
        7 months ago

        Exactly. You read code way more times than you write it, so it makes all the sense in the world to prioritize readability.

      • rockerface 🇺🇦@lemm.ee
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        7 months ago

        Yep, if you’re writing code for a machine, just do it in binary to save compilation time (/s just in case). Also, you in six months will indeed be someone with no knowledge of the context. And every piece of code you think you write for one-time use is guaranteed to be reused every day for the next 5 years

      • snowsuit2654@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        1
        ·
        7 months ago

        Yeah I totally agree. You can minimize and optimize as part of your build procedure/compilation but the source code should be as readable as possible for humans.

      • oce 🐆@jlai.lu
        link
        fedilink
        English
        arrow-up
        0
        ·
        7 months ago

        Python forcing end of line and tabs kinda does. Add Black auto-formatter and it’s pretty good.

        • frezik@midwest.social
          link
          fedilink
          English
          arrow-up
          0
          ·
          7 months ago

          I’ve seen too many Python devs write out complex statements all on one crammed up line. Including some that are in the main docs.

          Enforced whitespace is just one aspect of readable code. There are many others, and Python is no better at enforcing those than any other language.

          • oce 🐆@jlai.lu
            link
            fedilink
            English
            arrow-up
            2
            ·
            7 months ago

            That would probably make very long lines and black would automatically add returns to line with proper indentations. But it has a a limit for sure. If you chain many list comprehensions it’s going to be a mess.

    • MotoAsh@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 months ago

      I genuinely hate being human for this stuff. So many things have such crazy computational shortcuts, it’s sometimes difficult to remember which part represents reality. Outside of the realm of math, where “imaginary” numbers are still a touch of enigma to me, so many algorithms are based on general assumptions about reality or the specific task, that the programmatic approach NEVER encapsulates the full scope of the problem.

      As in, sometimes if you know EXACTLY how a tool works, you might still have no idea about the significance of that tool. Even in a universe where no one is lazy, and everyone wants to know “why?”, the answers are NOT forthcoming.

  • EunieIsTheBus@feddit.de
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    7 months ago

    I recall that there is a myriad of memes of the form ‘what is 4-2*3’ under which there is always a never ending discussion of confidently incorrect dumbasses denying the existence of the multiplication before addition rule.

    So your suspicion is at least not unreasonable

    • PoisonedPrisonPanda@discuss.tchncs.de
      link
      fedilink
      English
      arrow-up
      0
      ·
      7 months ago

      Ok man. Wtf did I just watch…

      I get it. We are here on the somehow dark side of the internet…

      But THIS… without any context. i mean. Im questioning live here man. What do you want to express with that?

      • janNatan@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        7 months ago

        I’m pretty sure it’s just a reference to when the kid types ))<>((

        Btw, it’s not from the dark side of the Internet. This was a very popular video at the time.

          • Qkall@lemmy.ml
            link
            fedilink
            English
            arrow-up
            2
            ·
            7 months ago

            Somehow that clip is better than the fairly odd movie. I don’t think I could recommend it… But I think of the clip posted all the time. It’s so weird 😂. Some how they figured out creepy, funny, and somehow wholesome at once.

      • It is also frustrating when different calculators have different orders of operations and dont tell you.

        Yeah, but to be fair most of them do tell you the order of operations they use, they just bury it in a million lines of text about it. If they could all just check with some Maths teachers/textbooks first then it wouldn’t be necessary. Instead we’re left trying to work out which ones are right and which ones aren’t. Any calculator that gives you an option to switch on/off “implicit multiplication”, then just run as fast as you can the other way! :-)

  • MotoAsh@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    7 months ago

    The underlying truth of this joke is: Programming syntax is less confusing than mathematical syntax. There are genuinely ambiguous layouts of syntax in math (to a human reader that hasn’t internalized PEMDAS, anyways) whereas you get a compilation error if ANYTHING is ambiguous in programming. (yes, I am WELL aware of the frustrations of runtime errors)

    • dejected_warp_core@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      7 months ago

      Also: sometimes, a mathematician just has to invent some concept or syntax to convey something unconventional. The specific use of subscript/superscript, whatever ‘phi’ is being used for, etc. on whatever paper you’re reading doesn’t have to correlate to how other work uses the same concepts. It’s bad form, but sometimes its needed, and if useful enough is added to the general canon of what we call “math”. Meanwhile, you can encapsulate and obfuscate things in software, sure, but you can always get down to the bedrock of what the language supports; there’s no inventing anything new.

        • TheOakTree@lemm.ee
          link
          fedilink
          English
          arrow-up
          0
          ·
          edit-2
          7 months ago

          Same as PEMDAS, except:

          Parentheses -> Bracket

          Exponent -> Order

          Multiplication <-> Division

          BODMAS

          • MystikIncarnate@lemmy.ca
            link
            fedilink
            English
            arrow-up
            1
            ·
            7 months ago

            I learned it as “BEDMAS”

            Brackets

            Exponents

            (You can guess the rest)

            But when I learned BEDMAS, my teacher directed us to do implied multiplication before other multiplication/division. Which, as far as I’m aware, is mathematically correct according to the proper order of operations (instead of whatever acronym summary you learned).

            Before I get "umm. Acktually"d … I know that’s not the full picture of the order of operations as it should be in mathematics. But for the limited scope I learned of algebra from highschool, AFAIK, this is correct to the point that I have understanding of. I’m not a mathematician, and I work with computers all day long and they do the math for me when I need to do any of it. So higher understanding in my case is not helpful.

      • MotoAsh@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        arrow-down
        2
        ·
        edit-2
        7 months ago

        I mean … yea. The exact problem is math is not taught correctly. Order of operations make total logical sense for what the operations are doing.

        The problem only arises when people don’t come to all of the appropriate conclusions on their own.

  • lolcatnip@reddthat.com
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    1
    ·
    edit-2
    7 months ago

    I’ve never seen a calculator that had bracket keys but didn’t implement the conventional order of operations.

    But anyway, I’m on Team RPN.