• masterspace
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    3
    ·
    8 hours ago

    Lol name one outside of it’s well known equality rules that linters check for.

    Also, name the language you think is better.

    Because for those of us who have coded in languages that are actually bad, hearing people complain about triple equals signs for the millionth time seems pretty lame.

    • thedeadwalking4242@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      8 hours ago

      Recently I encountered an issue with “casting”. I had a class “foo” and a class “bar” that extended class foo. I made a list of class “foo” and added “bar” objects to the list. But when I tried use objects from “foo” list and cast them to bar and attempted to use a “bar” member function I got a runtime error saying it didn’t exists maybe this was user error but it doesn’t align with what I come to expect from languages.

      I just feel like instead of slapping some silly abstraction on a language we should actually work on integrating a proper type safe language in its stead.

      • masterspace
        link
        fedilink
        English
        arrow-up
        3
        arrow-down
        1
        ·
        edit-2
        7 hours ago

        I think that might be user error as I can’t recreate that:

          • masterspace
            link
            fedilink
            English
            arrow-up
            3
            arrow-down
            2
            ·
            7 hours ago

            K, well configure your linter the way a professional Typescript environment should have it configured, and it will be there too. Not to be rude but not having a linter configured and running is a pretty basic issue. If you configured your project with Vite or any other framework it would have this configured OOTB.

            • Füsilier Breitlinger@infosec.exchange
              link
              fedilink
              arrow-up
              4
              arrow-down
              2
              ·
              7 hours ago

              @masterspace

              Not to be rude but not having a linter configured and running is a pretty basic issue.

              Yeah, if you’re a C programmer in the 1980s, maybe. But it’s 2006 now and compilers are able to do basic sanity checks all on their own.

              • masterspace
                link
                fedilink
                English
                arrow-up
                4
                arrow-down
                1
                ·
                7 hours ago

                Interpreted languages don’t have compilers, and one of the steps that compilers do is LINTING. You’re literally complaining about not configuring your compiler properly and blaming it on the language.

                • Fonzie!@ttrpg.network
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  1 minute ago

                  Not to play the devil’s advocate, but with compiled languages you can just install the language, “run” your script and it’ll work, if not the language will catch undeclared variables for you, and more. With interpreted languages you need to not only install the language but also third party tools for these fairly Barovia things.

                • Füsilier Breitlinger@infosec.exchange
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  edit-2
                  2 hours ago

                  @masterspace Love the confidence, but your facts could do with some work.

                  • “Interpreted language” is not a thing. Interpreted vs compiled is a property of a particular implementation, not the language.
                    (I wonder how you would classify lazy functional languages like Haskell. The first implementations were all interpreters because it was not clear that the well-known graph reduction technique for lazy evaluation could be compiled to native code at all.Today, hugs (a Haskell interpreter written in C) isn’t maintained anymore, but GHC still comes with both a native compiler (ghc) and an interpreter (runghc, ghci).)

                  • Most implementations that employ interpretation are compiler/interpreter hybrids. It is rare to find an interpreter that parses and directly executes each line of code before proceeding to the next (the major exception being shells/shell scripts). Instead they first compile the source code to an internal representation, which is then interpreted (or, in some cases, stored elsewhere, like Python’s .pyc files or PHP’s “opcache”).

                  • You can tell something is a compile-time error if its occurrence anywhere in the file prevents the whole file from running. For example, if you take valid code and add a random { at the end, none of the code will be executed (in Javascript, Python, Perl, PHP, C, Haskell, but not in shell scripts).

                  • The original “lint” tool was developed because old C compilers did little to no error checking. (For example, they couldn’t verify the number and type of arguments in function calls against the corresponding function definitions.) “Linting” specifically refers to doing extra checks (some of which may be more stylistic in nature, like a /*FALLTHRU*/ comment in switch statements) beyond what the compiler does by itself.

                  • If I refer to an undeclared variable in a Perl function, none of the code runs, even if the function is defined at the end of the file and never called. It’s a compile-time error (and I don’t have to install and configure a linting tool first). The same is true of Haskell.
                    What’s funny to me is that Javascript copied use strict directly from Perl (albeit as a string because Javascript doesn’t have use declarations), but turned it into a runtime check, which makes it a lot less useful.