• morgunkorn
    link
    fedilink
    arrow-up
    136
    arrow-down
    1
    ·
    3 months ago

    On the other hand, I don’t think you should add those ever

    • Ethan@programming.dev
      link
      fedilink
      English
      arrow-up
      52
      ·
      3 months ago

      Sure. But in a sane language doing something totally nonsensical like that is an error, and in a statically typed language it’s a compiler error. It doesn’t just silently do weird shit.

      • morgunkorn
        link
        fedilink
        arrow-up
        13
        arrow-down
        1
        ·
        3 months ago

        Agreed! Unfortunately these maddening behaviors were kind of set in stone several decades ago, and it has been (correctly) decided “Don’t break the web”, these weird quirks are kept in modern interpreters/compilers.

        It’s actually quite interesting to read through the logic to follow when implementing an interpreter:

        https://262.ecma-international.org/13.0/#sec-object.prototype.tostring

        • Ethan@programming.dev
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          3 months ago

          I thought it was clear I was saying JavaScript is not a sane language for this very reason

        • Ethan@programming.dev
          link
          fedilink
          English
          arrow-up
          3
          ·
          3 months ago

          I was trying to make a point without starting a flamewar that was beside the point. Personally I’d never choose a dynamically typed language for a production system. That being said, Python and Ruby complain if you try to add an array, dict/hashmap, string, or number to another (of a different type) so they’re certainly more sane than JavaScript.

        • Lime66@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          2 months ago

          Any of them which are still strongly typed. Just because a language doesn’t check for type errors before runtime doesn’t mean it won’t check at all