• @affiliate
    link
    842 months ago

    back in my day we only had one language. it was called ASSEMBLY. wanted to make the computer do something? you had to ask it yourself. and that worked JUST FINE

    • @jaybone
      link
      542 months ago

      Well la-tee-da, fuck my AND gates and inverters.

      Look at moneybags over here with his instruction sets.

      • @trashgirlfriend
        link
        342 months ago

        Back in my day when you wanted a computer to do something, you just asked her to do it and then underpaid her because women can’t hold real jobs.

      • @Aceticon
        link
        62 months ago

        Gates and inverters!!?

        Luxury!

        In my day we had to use transitors and resistors and, if we were lucky, maybe capacitors.

    • ☭ SaltyIceteaMaker ☭
      link
      fedilink
      212 months ago

      Back in my dsy we only had non programmable computers. Wanted to make the computer do something? You had to specifically build in the function. And that worked JUST FINE

      • @Plopp
        link
        202 months ago

        Back in my day we had an abacus and if you wanted it to do something you had to do it your damn self. And that worked JUST FINE.

        • @[email protected]
          link
          fedilink
          102 months ago

          Oh hello mister fancy pants with your abacus. We carved notches in rocks and we were happy with that.

        • @[email protected]
          link
          fedilink
          41 month ago

          Back in my day people worked 16h days everyday and had no time for math or computers. And that was JUST FINE.

  • @[email protected]
    link
    fedilink
    English
    662 months ago

    My favorite is “Java is slow” said by someone advocating for a language that’s at least 10 times slower.

    • @kaffiene
      link
      English
      231 month ago

      My favourite is “all the boilerplate” then they come up with go’s error checking where you repeat the same three lines after every function call so that 60% of your code is the same lines orlf error checking over and over

      • @steeznson
        link
        41 month ago

        Things like lombok make the boilerplate less of an issue in modern Java too

      • @[email protected]
        link
        fedilink
        English
        21 month ago

        And god help you if you forget those 3 lines somewhere and you silently have database failures or something else.

        • @kaffiene
          link
          English
          21 month ago

          Yeah, that’s the other thing - it does become easier to accidentally fail to deal with errors and the go adherents say they do all of that verbose BS to make error handling more robust. I actually like go, but there’s so much BS with ignoring the pain points in the language.

      • @[email protected]
        link
        fedilink
        11 month ago

        When you handle all your errs the same way, I’d say you’re doing something wrong. You can build some pretty strong err trace wrapping errs. I also think it’s more readable than the average try catch block.

        • @kaffiene
          link
          English
          11 month ago

          You still need to add error handling to every call to every function that might raise an error

        • @[email protected]
          link
          fedilink
          51 month ago

          I wouldn’t say so. They are inexperienced. They don’t know where the bottleneck of most of the modern software is (it’s io in 80-90% of cases) and how to optimize software without rewriting it to C++

      • @[email protected]
        link
        fedilink
        -3
        edit-2
        1 month ago

        How are they ignorant? It’s a known fact that java is slow, at least slower than some others. Sure, it’s still fast enough for 95% of use cases, but most code will run faster if written in, say, C. Will have 10x the amount of code and twice as many bugs though.

        • @[email protected]
          link
          fedilink
          2
          edit-2
          1 month ago

          Java is indeed slower than C, Rust, in some cases than Go.

          But that doesn’t mean that

          code will run faster if written in, say, C

          Again, like 80-90% of production code are bounded by disk/network io operations. You will gain performance from using C in embedded systems and in heavy calculations (games, trading, simulations) only.

          • @[email protected]
            link
            fedilink
            11 month ago

            Which is exaxtly what I said, that it’s fast enough for most use cases.

            In theory though, you will “gain performance” by rewriting it (well) in C for literally anything. Even if it’s disk/io, the actual time spent in your code will be lower, while the time spent in kernel mode will be just as long.

            For example, you are running a server which reads files and returns data based on said files. The act of reading the file won’t be much faster, but if written in C, your parsers and actual logic behind what to do with the file will be.

            But it’s as you said, this actual tiny performance gain isn’t worth it over development/resource cost most of the time.

        • @[email protected]
          link
          fedilink
          -81 month ago

          the jvm brings enough bugs to outweigh any benefits there…
          it is relatively fast, but it’s slow in that it takes up a bunch of resources that could be doing other things…

            • @[email protected]
              link
              fedilink
              -71 month ago

              i decline your invite to debate the merits of java and jvm… i will instead walk my dog through this beautiful park here…

              but, it’s all been said on top level comments on this post.
              it’s trash, and honestly, even if it was perfect, sun microsystems has ruined any potential benefits.

          • @[email protected]
            link
            fedilink
            21 month ago

            takes up a bunch of resources that could be doing other things…

            You cannot get rid of garbage collectors, but you can always compile your java into binary to reduce the memory footprint.

  • @[email protected]
    link
    fedilink
    42
    edit-2
    2 months ago

    One project I worked on had 10 different languages. That was rough. But even your basic full stack web application is usually 5 languages: SQL, a backend language, HTML, CSS and JS. Usually some wheel reinventing frameworks thrown in for good measure. 5 languages is light these days.

      • @[email protected]
        link
        fedilink
        82 months ago

        Probably a bunch of hacked together Python to copy stuff between fileshares. Bonus points if it runs with a .bat file and a Windows scheduled task.

    • @[email protected]
      link
      fedilink
      32 months ago

      I work in Java, Golang, Python, with Helm, CircleCI, bash scripts, Makefiles, Terraform, and Terragrunt for testing and deployment. There are other teams handling the C++ and SQL (plus whatever dark magic QA uses).

    • Aisteru
      link
      fedilink
      282 months ago

      You’re not wrong, it’s still a staple today, but it lost a lot of its shine a while ago. They are mimicking “new” features introduced in other languages, but make a point to preserve retrocompatibility.

      I can’t imagine how convoluted the JVM has become in the last 10 years.

      • @[email protected]
        link
        fedilink
        332 months ago

        I don’t really see how that is bad…? Java wants to be widely applicable and taking the best features from other languages helps that goal, right?

        • @jaybone
          link
          222 months ago

          C++ fanboys will talk a bunch of shit about Java for this, but c++ has been doing this same shit (and more poorly) pretty much since its inception.

          And most of the newer Java stuff is syntactic sugar, so I’m not sure why that commenter is calling out JVM implementations. I’m guessing they don’t know much about the JVM, since you can compile these higher level syntax tricks down into bytecode just like you might compile more verbose source code.

          Static analysis of compiled code with javap might be more difficult, but I’m betting the commenter doesn’t know what that is either.

          • @[email protected]
            link
            fedilink
            11 month ago

            I think the last new instruction the JVM added was invokedynamic like 10 years ago. I believe they did it so lambdas could be called efficiently. Polymorphic incline cache and stuff.

            But the JVM has grown more complex in other ways. The way to force simd instructions is pretty wild, for example.

            I don’t know enough to call it a mess or not. It works though.

        • @[email protected]
          link
          fedilink
          English
          5
          edit-2
          2 months ago

          Because Java sucks at taking those features. I mean look at Java’s Optional abomination of a class and compare it to C# or Typescript’s optional chaining ( ?. ) language feature.

          There’s a reason Kotlin was created, because Java is still bogged down by all its legacy kruft.

          • @QuaternionsRock
            link
            31 month ago

            It still boggles my mind that C# is as good as it is given where it comes from. Java really fucked up with type erasure and never fully recovered imo.

      • @[email protected]
        link
        fedilink
        31 month ago

        That one dude still using Delphi is getting screwed.

        Also, these salary numbers seem… real low. I get that it’s the median so maybe a huge number of overseas engineers are pulling the results down but in my neck of the woods 105K is less than what we pay juniors.

  • @surge_1
    link
    322 months ago

    Skip step 3, and just switch to Kotlin. Worked wonders for Android

      • @[email protected]
        link
        fedilink
        101 month ago

        Kotlin is Java with all the suck taken out.

        It’s a modern, ergonomic language that runs on the JVM and removes as much GD boilerplate as it can.

        It’s fantastic.

              • @[email protected]
                link
                fedilink
                English
                21 month ago

                Cargo is really simple, which is great, but also limiting. Maven is much more complex, but for good reason - there’s use cases, especially around multi-artifact projects and version sharing, where cargo would require either some glue or you run into some interesting edge cases. Usually, Rust isn’t used for the kinds of big, wacky projects with a million dependencies that companies write in Java/Kotlin, so those kinds of use cases are considered more unusual.

                Gradle, in my opinion, makes itself complex because it’s all code, is very brittle, and several of its features just don’t work right and require workarounds. When it works, it builds fast and it works well, but getting it to work, and how often you have to get it to work again…not worth it.

          • @[email protected]
            link
            fedilink
            31 month ago

            Lots of little quality of life things. For instance, in Kotlin types can be marked nullable or not. When you are passing a potential null into a non-nullable argument, the compiler raises an error.

            But if you had already checked earlier in scope whether or not the value was null, the compiler remembers that the value is guaranteed not to be null and won’t blow up.

            Same for other typechecks. Once you have asserted that a value is a given type, you don’t need to cast it everywhere else. The compiler will remember.

  • nickwitha_k (he/him)
    link
    fedilink
    232 months ago

    Seems reasonable to me. A scripting language, a compiled language, SQL, some CI/CD DSL, and a dealer’s choice.

    Java isn’t bad but, I’m not a fan of how verbose and convoluted it is. That said, I’ll take Java over here JS any day of the week.

  • @kaffiene
    link
    English
    231 month ago

    Java is a great language. But programming languages are tools - not every tool is the right tool for every job

  • Riskable
    link
    fedilink
    English
    192 months ago

    I’m failing to see the problem. As long as one of the languages isn’t PHP they’re still probably better off 🤷

    • @dezvous
      link
      122 months ago

      What’s wrong with PHP?

      • @[email protected]
        link
        fedilink
        English
        182 months ago

        PHP5 was basically the Adolf Hitler of programming languages

        You know how something can be so terrible it ruins something forever? Like the hitler stache

        • @[email protected]
          link
          fedilink
          112 months ago

          5.3 was a big leap for PHP. It became actually very good at that point.

          I learned it when it was on 4 and boy oh boy was that something.

          But nowadays, with 8, it works great, tooling is fantastic. I just kinda wish the documentation, which is absolutely top notch for 90% of the language, was this good for the rest 10%.

          I want to play around with Fibers, but I just don’t get the info I want to.

          pthreads were so out of date in docs it was shameful.

          But the language is good, typing is coming along nicely, and basically the only thing I want PHP to do is to call Postgres and encode the output to json. Works like a charm.

          • @[email protected]
            link
            fedilink
            English
            4
            edit-2
            1 month ago

            Yeah i’ve heard good things about it recently. I’ve always liked how easy curl can be in php.

            Adding typing seems like it would fix most of the problems i did run into but

            Has PHP raised its standards on function naming? Or do you still have batshit situations like realEscapeString2() because the first 30 other functions for escaping strings are deprecated?

        • @dezvous
          link
          61 month ago

          Lol okay maybe that’s true :) but PHP is great nowadays and with frameworks like Symfony and Larvel it’s easier than ever to build applications

      • @[email protected]
        link
        fedilink
        3
        edit-2
        1 month ago

        If you get even 1 thing wrong, the entire program stops working and you don’t get any information about it. Turns out those cryptic errors like “error: object reference not set to instance of an object at address 0x007e00” are kind of important information to have. Unless you specifically know where it’s crashing, finding the source of the problem is like finding a needle in a haystack. If it’s your own code it’s borderline manageable but you’ll regret every decision that led you up to that point. If it’s someone else’s code such as an old project from 9 years ago that doesn’t work anymore, absolutely forget about it.

        The only advantage of php is that it’s incredibly lightweight. I was running an Athlon XP home server on Gentoo as late as 2022 and still had php running despite only having the SSE1 instruction set and a cpu less powerful than whats probably on a modern led lightbulb.

        But ACKTCHUALLY I think django and python bottles can be run on even shittier computers than php can since they’re both python programs and python has been demonstrated to be runnable on a pentium 1. So there is no reason to use php.

      • @[email protected]
        link
        fedilink
        -12 months ago

        Both are fine tbh. Javascript has come a long way from a decade ago, and mixing in a decent framework like jquery does wonders.

        • @[email protected]
          link
          fedilink
          31 month ago

          decent framework

          jquery

          It’s current year, you have to choose one. there really isn’t any reason to use jquery other than legacy code

          • @[email protected]
            link
            fedilink
            -11 month ago

            Jquery is still extremely relevant. React exists as well, and is also a good framework. I just happened to think of jquery first.

            • @[email protected]
              link
              fedilink
              31 month ago

              what does jquery give you that vanilla js doesn’t? it was good before browser inconsistencies got ironed out and js didn’t have as many features built in, but nowadays I have no idea why someone would need it

        • @[email protected]
          link
          fedilink
          2
          edit-2
          2 months ago

          The type system is still really bad, and apparently TypeScript gets mixed with native libraries in common practice, which makes a bad situation worse when something breaks.

          Edit: Messed up the name, fixed.

          • @[email protected]
            link
            fedilink
            0
            edit-2
            2 months ago

            The typing system is just a “quirk”. As long as you understand the (admittedly annoying) exceptions to the way your brain expects typing to work, everything works quite well.

            And tbh, transpiled TypeScript libraries can be called from JavaScript as if it was JavaScript… because it is JavaScript. There’s no need to worry about typing unless you’re doing something like passing a string into a function that expects an int, and you’d run into those same problems if the function was originally JavaScript.

            Edit: a word

            • @[email protected]
              link
              fedilink
              42 months ago

              I mean, sure, but taking that argument to it’s logical extreme we should still be programming in assembly, because you can if you just know enough to do it.

              A language is a tool. If it’s harder to use successfully than the next tool it’s a worse tool.

              • @[email protected]
                link
                fedilink
                02 months ago

                No? How is that the logical conclusion? You need to understand any language, and any quirk of that language, in order to effectively write in it. JavaScript is powerful, and moving farther every iteration. Strong typing is just not something it takes into consideration. In the same way that C# doesn’t take white space into consideration, and python doesn’t terminate its instructions with semicolons.

                Each language is different, each language has its own quirks that you need to understand and get used to. If that wasn’t the case, we would have one objectively “perfect” programming language to use in all situations, on all machines, for every use case.

                • @[email protected]
                  link
                  fedilink
                  2
                  edit-2
                  2 months ago

                  You need to understand any language, and any quirk of that language, in order to effectively write in it.

                  That seems to imply they all have the same amount of quirks, which I think most people here would agree is untrue

                  Something like Haskell has far, far fewer quirks than x86 assembly code. It really only has quirks to do with interactivity; everything else is very predictable and visible in the code. Meanwhile, assembly code is but a maximally useful set of quirks in a specific electronic circuit.

                  Ditto if you look at older languages. FORTRAN is unpleasantly quirky, which is why it’s almost obsolete.

                  If that wasn’t the case, we would have one objectively “perfect” programming language to use in all situations, on all machines, for every use case.

                  I mean, I hold out hope that that will eventually happen, at least for the vast majority of use cases and machines. Obviously we’re not there yet.

                  There have been languages that basically dominate their own niche. C/C++ was almost the only game in town for performance coding until someone discovered a way to compile mid-level code while also guaranteeing memory safety. Memory errors were a terrible quirk, so now Rust might steal its crown.

            • @[email protected]
              link
              fedilink
              11 month ago

              I personally don’t think that’s the issue with the typing system. With vanilla js if I’m looking at a function that has say four parameters that are not trivial objects like strings but are actually complex (think dependency injection) it’s very difficult for me to know what these objects are other than reading through the code of the function.

              Actually, even if the parameters are simple, I’m not sure of that until I look into the function and see what it’s doing. This is a huge pain in the ass most the time, because I just wanna look at the function name its parameters and move on. However, that being said, most of this can be remedied with jsdocs and a good linter/lsp.

  • @redempt
    link
    192 months ago

    we should use only the best language for everything.

    • @treechickenOP
      link
      152 months ago

      This is literally how this all started for us lol. Senior wanted to try to migrate everything to Kotlin in our project. Migration never finished. Now one of our major repos is just half Kotlin half Java. Devs on our team learn Kotlin by unexpectedly encountering it when they need to touch that code.

      • @[email protected]
        link
        fedilink
        92 months ago

        Maybe it’s because I know both languages but is that really a big issue for people? The interop is great, and kotlin is very readable, so the cost of context switching between the two is miniscule.

        Some people have an extreme aversion to learning new things though. I feel that holding yourself to the standards and limits of your lowest performers isn’t a great thing.

      • @[email protected]
        link
        fedilink
        English
        42 months ago

        Sounds like you’re making progress, your devs are slowly learning a better language that will let them work faster and will soon be able to help port the rest of the codebase and then you can really accelerate when no one needs to touch or know Java.

        • @treechickenOP
          link
          31 month ago

          I really hope so. Last code I reviewed was full of !! and companion objects trying to emulate Java static instead of top-level consts. Even I’m still trying to figure out what idiomatic Kotlin looks like. We got a ways to go…

      • mstrk
        link
        31 month ago

        Doesn’t Kotlin has interoperability with Java? I didn’t used it much yet but I’m about to in a few months. Is it that difficult to just refactor things to Kotlin when you need to change something in the project? I’m asking because I just can’t work with verbose languages and would prefer Kotlin to Java everyday.

        • @treechickenOP
          link
          11 month ago

          The interoperability is both a blessing and a curse imo since it let us half-ass the integration by leaving a bunch of Java code unconverted. I could start refactoring everything but then my team would stop reviewing my PRs due to the diff size (and then my manager would eventually find out that I’ve been using up work time doing this instead of shipping features during crunch week).

          I really much prefer Kotlin to Java. I just wish my team had actually had a commitment to it instead of just sorta using it with no migration plan.

    • @force
      link
      3
      edit-2
      2 months ago

      Just use Scala*** ((objectively better language¹))

      1. scala does not support breaking out of loops, it does errors on early returns, uses parentheses for array indexing, compiles extremely slowly, …
  • @[email protected]
    link
    fedilink
    121 month ago

    The python code we inherited had some performance issues. One of the guys was like “we should rewrite this in Java”.

    Luckily the boss was not an insane person and shut that down. The issue was an entirely stupid “…and then we do one query per project” behavior that worked fine when the company was small but unsurprisingly started to suck as users created more projects.

    Instead of a months long complete rewrite, we had a two hour “let’s add profiling… Oh wow that’s a lot of queries” session.

  • @Aceticon
    link
    102 months ago

    I would say that over a decade of my career was coming in as a freelancer to fix codebases where a couple of people tought they knew better than the previous ones and proceeded to add yet another very different block to a codebase already spaghetiffied by a couple such people.

    Sometimes it was coding style, sometimes it was software design, sometimes it was even a different language.

    I reckon thinking that just deploying one’s EliteZ skills on top of an existing code base without actually refactoring the whole thing will make it better is a phase we all go through when we’re still puppy-coders.

    • @ChickenLadyLovesLife
      link
      English
      62 months ago

      The majority of puppy-coders I’ve encountered (including myself) actually want to refactor rather than just add onto. They are fundamentally correct in this, but they don’t grasp that 1) few companies want to acknowledge that the code base which is their greatest tangible “asset” is actually complete shit, and 2) that due to their inexperience, their refactored replacement is probably going to end up as bad as or worse than the original.