• lefixxx@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      14 days ago

      How is arrays starting at 1 still a controversial take. Arrays should start at 1 and offsets at 0.

        • Something Burger 🍔@jlai.lu
          link
          fedilink
          arrow-up
          0
          ·
          13 days ago

          Not in languages where you don’t manually handle memory, such as PHP, SQL, Python… Higher-level languages using 0-indexed arrays are letting the abstraction leak.

      • Traister101@lemmy.today
        link
        fedilink
        arrow-up
        0
        ·
        14 days ago

        So what’s 0 do then? I’m okay with wacky indexes (I’ve used something with negative indexes for a end-index shorthand) but 0 has to mean something that’s actually useful. Using the index as the offset into the array seems to be the most useful way to index them.

        • labsin@sh.itjust.works
          link
          fedilink
          arrow-up
          0
          ·
          12 days ago

          I’d say the index is actually an offset is a reasoning for explaining why it should start at 1. If index was an index, I’d just start at 1.

          I don’t think any one is better than the other, but history chose 0.

          That you can choose it in VB is probably the worst option :D

      • UndercoverUlrikHD@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        13 days ago

        Writing Lua code that also interacts with C code that uses 0 indexing is an awful experience. Annoys me to this day even though haven’t used it for 2 years

        • pelya@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          14 days ago

          In Lua all arrays are just dictionaries with integer keys, a[0] will work just fine. It’s just that all built-in functions will expect arrays that start with index 1.

          • my_hat_stinks@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            13 days ago

            That’s slightly misleading, I think. There are no arrays in Lua, every Lua data structure is a table (sometimes pretending to be something else) and you can have anything as a key as long as it’s not nil. There’s also no integers, Lua only has a single number type which is floating point. This is perfectly valid:

            local tbl = {}
            local f = function() error(":(") end
            
            tbl[tbl] = tbl
            tbl[f] = tbl
            tbl["tbl"] = tbl
            
            print(tbl)
            -- table: 0x557a907f0f40
            print(tbl[tbl], tbl[f], tbl["tbl"])
            -- table: 0x557a907f0f40	table: 0x557a907f0f40	table: 0x557a907f0f40
            
            for key,value in pairs(tbl) do
              print(key, "=", value)
            end
            -- tbl	=	table: 0x557a907f0f40
            -- function: 0x557a907edff0	=	table: 0x557a907f0f40
            -- table: 0x557a907f0f40	=	table: 0x557a907f0f40
            
            print(type(1), type(-0.5), type(math.pi), type(math.maxinteger))
            -- number	number	number	number
            
          • frezik@midwest.social
            link
            fedilink
            arrow-up
            0
            ·
            13 days ago

            PHP did that same thing. It was a big problem when algorithmic complexity attacks were discovered. It took PHP years to integrate an effective solution that didn’t break everything.

    • dan@upvote.au
      link
      fedilink
      arrow-up
      0
      ·
      13 days ago

      Visual Basic used to let you choose if you wanted to start arrays at 0 or 1. It was an app-wide setting, so that was fun.

  • notabot@lemm.ee
    link
    fedilink
    arrow-up
    0
    ·
    14 days ago

    I started reading that from the top and got increasingly angry on the way down. That creature is a monster.

  • tgm@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    14 days ago

    Haven’t heard of the stack address thing, anyone got a TLDR on the topic?

        • chonglibloodsport@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          13 days ago

          Yes exactly. It’s a reference to the recording industry’s practice of calling the final version of an album the “master” which gets sent for duplication.

          • vulpivia@lemmy.dbzer0.com
            link
            fedilink
            arrow-up
            0
            ·
            12 days ago

            That’s just not true. It originally came from Bitkeeper’s terminology, which had a master branch and slave branches.

              • vulpivia@lemmy.dbzer0.com
                link
                fedilink
                arrow-up
                0
                ·
                12 days ago

                Well, he doesn’t seem so sure about it himself. From the same link:

                (But as noted in a separate thread, it is possible it stems from bitkeeper’s master/slave terminology. I hoped to do some historical research but health emergency in my family delayed that.)

                • chonglibloodsport@lemmy.world
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  12 days ago

                  He also said:

                  the impression words form in the reader is more important than their intent

                  He didn’t intend for the master/slave connotation. He intended for the recording master connotation. Either way, he regrets using the word master and he’s supportive of the change.

          • Zink@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            13 days ago

            In alignment with this, we should not replace the master branch with the main branch, we should replace it with the gold branch.

            Every time a PR gets approval and it’s time to merge, I could declare that the code has “gone gold” and I am not doing that right now!

            • ramjambamalam@lemmy.ca
              link
              fedilink
              arrow-up
              0
              ·
              13 days ago

              Merged -> gone gold

              Deployed -> gone platinum

              Gone a week without crashing production -> triple platinum

        • Maggoty@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          13 days ago

          But why even? There’s no risk to changing it and some risk to keeping it. That’s the reason for the push to change it. Keeping something just because it’s tradition isn’t a good idea outside ceremonies.

          • weker01@sh.itjust.works
            link
            fedilink
            arrow-up
            0
            ·
            edit-2
            13 days ago

            There is definitely a risk in changing it. Many automation systems that assume there is a master branch needed to be changed. Something that’s trivial yes but changing a perfectly running system is always a potential risk.

            Also stuff like tutorials and documentation become outdated.

            • Maggoty@lemmy.world
              link
              fedilink
              arrow-up
              0
              ·
              12 days ago

              If they can’t change what’s essentially a variable name without issues then should they be doing the job?

          • undefinedValue@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            12 days ago

            I don’t accept that because everyone’s doing it or “group-think” are valid excuses do jump on a trend. Things like this maybe don’t seem like a big deal for you but for those that hate this culture it’s just one more example of a dumb change being shoved down their throats. This could also be the straw that breaks the camels back.

        • qaz@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          13 days ago

          It was kind of pointless, but at least it made software work with custom default branches.

  • db0@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    0
    ·
    14 days ago

    NGL, this kind of form of putting the decisions the monkey-in-charge is making in a way experts in a field will understand, is a very good way to showcase the absurdity.

    • NABDad@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      14 days ago

      Are there really people capable of understanding this who aren’t capable of understanding, for example, “tariffs increase inflation”?

      • xmunk@sh.itjust.works
        link
        fedilink
        arrow-up
        0
        ·
        13 days ago

        Hey now, you know that according to the Bible the biggest number is a million. Anything larger than that including infinity is some of that “woke shit”.

        Your array will be 999,999, 999,998, 999,997 …

    • SamboT@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      13 days ago

      Im unfamiliar with this as well. If you are allocating memory for a stack, why does it matter which direction it populates data? Is this just a convention?

      • Gigamegs@lemmy.zip
        link
        fedilink
        Deutsch
        arrow-up
        0
        ·
        13 days ago

        I ask deepseek: Downward-growing stacks** are more common in many architectures (e.g., x86, ARM). This convention originated from early computer architectures and has been carried forward for consistency.

        Funny, I can’t remember, , because I did a lot of assembler back in my youth.

  • ramjambamalam@lemmy.ca
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    13 days ago
    • Push directly to master, not main
    • No command line args, just change the global const and recompile
    • No env vars either
    • Port numbers only go up to 5280, the number of feet in a mile
    • All auth is just a password; tokens are minority developers, not auth, and usernames are identity politics
    • No hashes – it’s the gateway drug to fentanyl
    • No imports. PROTECT INTERNAL DEVELOPMENT
    • Exceptions are now illegal and therefore won’t occur, so no need to check for them
    • SOAP/XML APIs only
    • Rikudou_Sage@lemmings.world
      link
      fedilink
      arrow-up
      0
      ·
      13 days ago

      Exceptions are now illegal and therefore won’t occur, so no need to check for them

      Ah, I see you’ve met C++ developers.

    • excral@feddit.org
      link
      fedilink
      arrow-up
      0
      ·
      13 days ago

      No command line args, just change the global const and recompile

      Nah, don’t use global variables, magic values everywhere. And don’t use const whatsoever, we need to move fast and break things, we can’t let something immutable stop us

    • stetech@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      13 days ago
      • Port numbers only go up to 5280, the number of feet in a mile

      What about internationalization – do the European port numbers go up to the cm or only meter count within a kilometer?

  • kamen@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    13 days ago

    Implying the orange fella has any say in programming language design and general tech conventions