It’s not the 1st time a language/tool will be lost to the annals of the job market, eg VB6 or FoxPro. Though previously all such cases used to happen gradually, giving most people enough time to adapt to the changes.

I wonder what’s it going to be like this time now that the machine, w/ the help of humans of course, can accomplish an otherwise multi-month risky corporate project much faster? What happens to all those COBOL developer jobs?

Pray share your thoughts, esp if you’re a COBOL professional and have more context around the implication of this announcement 🙏

    • PeterPoopshit@lemmy.world
      link
      fedilink
      arrow-up
      5
      arrow-down
      3
      ·
      edit-2
      1 year ago

      But then at least by the time they get it working, they’ll have enough practice to make a new llm to convert their Java code to a useful programming language.

      Java is definitely a programming language but good luck actually getting it to compile on anyone else’s machine besides the person who wrote the project.

  • simple@lemm.ee
    link
    fedilink
    arrow-up
    17
    ·
    1 year ago

    I have my doubts that this works well, every LLM we’ve seen that translates/writes code often makes mistakes and outputs garbage.

  • halfempty@kbin.social
    link
    fedilink
    arrow-up
    20
    arrow-down
    4
    ·
    1 year ago

    That’s alot of effort to go from one horrible programming language to another horrible programming language.

  • argv_minus_one@beehaw.org
    link
    fedilink
    arrow-up
    16
    ·
    1 year ago

    If even highly skilled humans couldn’t do that, artificial pseudointelligence doesn’t stand a chance in hell.

    There’s nothing of substance here. Just suits chasing buzzwords. Nothing will actually happen, just like nothing actually happened every other time some fancy new programming language or methodology came along and tried to replace COBOL, including Java.

    • duncesplayed@lemmy.one
      link
      fedilink
      English
      arrow-up
      23
      ·
      1 year ago

      This is what I don’t get. Rewriting COBOL code into Java code is dead easy. You could teach a junior dev COBOL (assuming this hasn’t been banned under the Geneva Convention yet) and have them spitting out Java code in weeks for a lot cheaper.

      The problem isn’t converting COBOL code to Java code. The problem is converting COBOL code to Java code so that it cannot ever possibly have even the most minute difference or bug under any possible circumstances ever. Even the tiniest tiniest little “oh well that’s just a silly little thing” bug could cost billions of dollars in the financial world. That’s why you need to pay COBOL experts millions of dollars to manage your COBOL code.

      I don’t understand what person looked at this problem and said “You know what never does anything wrong or makes any mistake ever? Generative AI”

      • PuppyOSAndCoffee@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        Ooh good point

        What if IBM had a product that did the COBOL->Java conversion (no what if tbh, believe it exists), then just changed the marketing material to make it seem flashy?

        So like, you think it’s Ai but really it’s the same grammar translation functions that have been around for ever.

  • Pavlichenko_Fan_Club [comrade/them]@hexbear.net
    link
    fedilink
    English
    arrow-up
    15
    ·
    1 year ago

    Oh FFS there is nothing magical about COBOL like its some kind of sword in the stone which only a chosen few can draw. COBOL is simple(-ish), COBOL is verbose. That’s why there is so much of it.

    The reason you don’t see new developers flocking to these mythical high-paying COBOL jobs is its not about the language, but rather about maintaining these gianourmous, mission-critical applications that are basically black boxes due to the loss of institutional knowledge. Very high risk with almost no tangible, immediate reward–so don’t touch it. Not something you can just throw a new developer at and hope for the best, the only person who knew this stuff was some guy named “John”, and he retired 15 years ago! Etc, etc.

    Also this is IBM were talking about, so purely buzzword-driven development. IBM isn’t exactly known for pushing the envelope recently. Plus transpilers have existed as a concept since… Forever basically? Doubt anything more will come from this other than upselling existing IBM contracts who are already replacing COBOL.

  • 4stringscooter@lemmy.ml
    link
    fedilink
    arrow-up
    14
    ·
    1 year ago

    So the fintech companies who rely on that tested (though unliked) lump of iron from IBM running an OS, language, and architecture built to do fast, high-throughput transactional work should trust AI to turn it into Java code to run on hardware and infrastructure of their own choosing without having architected the whole migration from the ground up?

    Don’t get me wrong, I want to see the world move away from cobol and ancient big blue hardware, but there are safer ways to do this and the investment cost would likely be worth it.

    Can you tell I work in fintech?

  • IHeartBadCode@kbin.social
    link
    fedilink
    arrow-up
    13
    ·
    1 year ago

    This sounds no different than the static analysis tools we’ve had for COBOL for some time now.

    The problem isn’t a conversion of what may or may not be complex code, it’s taking the time to prove out a new solution.

    I can take any old service program on one of our IBM i machines and convert it out to Java no problem. The issue arises if some other subsystem that relies on that gets stalled out because the activation group is transient and spin up of the JVM is the stalling part.

    Now suddenly, I need named activation and that means I need to take lifetimes into account. Static values are now suddenly living between requests when procedures don’t initial them. And all of that is a great way to start leaking data all over the place. And when you suddenly start putting other people’s phone numbers on 15 year contracts that have serious legal ramifications, legal doesn’t tend to like that.

    It isn’t just enough to convert COBOL 1:1 to Java. You have to have an understanding of what the program is trying to get done. And just looking at the code isn’t going to make that obvious. Another example, this module locks a data area down because we need this other module to hit an error condition. The restart condition for the module reloads it into a different mode that’s appropriate for the process which sends a message to the guest module to unlock the data area.

    Yes, I shit you not. There is a program out there doing critical work where the expected execution path is to on purpose cause an error so that some part of code in the recovery gets ran. How many of you think an AI is going to pick up that context?

    The tools back then were limited and so programmers did all kinds of hacky things to get particular things done. We’ve got tools now to fix that, just that so much has already been layered on top of the way things work right now. Pair with the whole, we cannot buy a second machine to build a new system and any new program must work 99.999% right out of the gate.

    COBOL is just a language, it’s not the biggest problem. The biggest problem is the expectation. These systems run absolutely critical functions that just simply cannot fail. Trying to foray into Java or whatever language means we have to build a system that doesn’t have 45 years worth of testing that runs perfectly. It’s just not a realistic expectation.

    • aksdb@feddit.de
      link
      fedilink
      arrow-up
      6
      ·
      1 year ago

      What pisses me off about many such endeavors is, that these companies always want big-bang solutions, which are excessively hard to plan out due to the complexity of these systems, so it’s hard to put a financial number on the project and they typically end up with hundreds of people involved during “planning” just to be sacked before any meaningful progress could be made.

      Instead they could simply take the engineers they need for maintenance anyway, and give them the freedom to rework the system in the time they are assigned to the project. Those systems are - in my opinion - basically microservice systems. Thousands of more or less small modules inter-connected by JCL scripts and batch processes. So instead of doing it big bang, you could tackle module by module. The module doesn’t care in what language the other side is written in, as long as it still is able to work with the same datastructure(s).

      Pick a module, understand it, write tests if they are missing, and then rewrite it.

      After some years of doing that, all modules will be in a modern language (Java, Go, Rust, whatever) and you will have test coverage and hopefully even documentation. Then you can start refactoring the architecture.

      But I guess that would be too easy and not enterprisy enough.

      • gedhrel@lemmy.ml
        link
        fedilink
        arrow-up
        3
        ·
        1 year ago

        I think you vastly overestimate the separability of these systems.

        Picture 10,000 lines of code in one method, with a history of multiple decades.

        Now picture that that method has buried in it, complex interactions with another method of similar size, which is triggered via an obscure side-effect.

        Picture whole teams of developers adding to this on a daily basis in realtime.

        There is no “meaningful progress” to be made here. It may offend your aesthetic sense, but it’s just the reality of doing business.

        • aksdb@feddit.de
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          What’s the alternative in your opinion?

          Not doing anything and keep fiddling around in this mess for the next 20 years?

          Continue trying to capture this problem big-bang, which means not only dealing with one such unmaintainable module but all of them at once?

          Will every module be a piece of cake? Hell no. But if you never start anywhere, it doesn’t get better on its own.

          • gedhrel@lemmy.ml
            link
            fedilink
            arrow-up
            1
            ·
            edit-2
            1 year ago

            The alternative is to continue with a process that’s been demonstrably successful, despite it offending your sensibilities.

            Banks are prepared to pay for it. People are prepared to do it. It meets the business needs. Change is massively high-risk in a hugely conservative industry.

    • Kerfuffle@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      This sounds no different than the static analysis tools we’ve had for COBOL for some time now.

      One difference is people might kind of understand how the static analysis tools we’ve had for some time now actually work. LLMs are basically a black box. You also can’t easily debug/fix a specific problem. The LLM produces wrong code in one particular case, what do you do? You can try performing fine tuning training with examples of the problem and what it should be but there’s no guarantee that won’t just change other stuff subtly and add a new issue for you to discovered at a future time.

  • eyy@lemm.ee
    link
    fedilink
    arrow-up
    9
    ·
    1 year ago

    Not a cobol professional but i know companies that have tried (and failed) to migrate from cobol to java because of the enormously high stakes involved (usually financial).

    LLMs can speed up the process, but ultimately nobody is going to just say “yes, let’s accept all suggested changes the LLM makes”. The risk appetite of companies won’t change because of LLMs.

    • Kache@lemm.ee
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Wonder what makes it so difficult. “Cobol to Java” doesn’t sound like an impossible task since transpilers exist. Maybe they can’t get similar performance characteristics in the auto-transpiled code?

      • DefinitelyNotAPhone [he/him]@hexbear.net
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        Translating it isn’t the difficult part. It’s convincing a board room full of billionaires that they should flip the switch and risk having their entire system go down for a day because somebody missed a bug in the code and then having to explain to some combination of very angry other billionaires and very angry financial regulators why they broke the economy for the day.

        • Skiptrace@lemmy.one
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          Well, I’d rather the day be sooner than later. Also, this is why you have… Backup servers and development environments. You don’t just flick the Switch randomly one day after code is made. You run months and months of simulated transactions on the new code until you get an adequate amount of bugs fixed.

          There will come a time when these old COBOL machines will just straight die, and they can’t be assed to keep making new hardware for them. And the programmers will all die out too. And then your shit out of luck. I’d rather the last few remaining COBOL programmers help translate to some other long lasting language before they all kick the bucket and not after.

          • DefinitelyNotAPhone [he/him]@hexbear.net
            link
            fedilink
            English
            arrow-up
            3
            ·
            1 year ago

            Well, I’d rather the day be sooner than later.

            Agreed, but we’re not the ones making the decision. And the people who are have two options: move forward with a risky, expensive, and potentially career-ending move with no benefits other than the system being a little more maintainable, or continuing on with business-as-usual and earning massive sums of money they can use to buy a bigger yacht next year. It’s a pretty obvious decision, and the consequences will probably fall on whoever takes over after they move on or retire, so who cares about the long term consequences?

            You run months and months of simulated transactions on the new code until you get an adequate amount of bugs fixed.

            The stakes in financial services is so much higher than typical software. If some API has 0.01% downtime or errors, nobody gives a shit. If your bank drops 1 out of every 1000 transactions, people lose their life savings. Even the most stringent of testing and staging environments don’t guarantee the level of accuracy required without truly monstrous sums of money being thrown at it, which leads us back to my point above about risk vs yachts.

            There will come a time when these old COBOL machines will just straight die, and they can’t be assed to keep making new hardware for them.

            Contrary to popular belief, most mainframes are pretty new machines. IBM is basically afloat purely because giant banks and government institutions would rather just shell out a few hundred thousand every few years for a new, better Z-frame than going through the nightmare that is a migration.

            If you’re starting to think “wow, this system is doomed to collapse under its own weight and the people in charge are actively incentivized to not do anything about it,” then you’re paying attention and should probably start extending that thought process to everything else around you on a daily basis.

          • PuppyOSAndCoffee@lemmy.ml
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            Nah, dump it all.

            COBOL programs don’t handle utf8 and other modern things like truly variable length strings.

            Best thing to do is refactor and periodically test by turning off the mainframe system to see what breaks. Why something was done is lost to the sands of time at this point.

    • quicken@aussie.zone
      link
      fedilink
      arrow-up
      7
      ·
      1 year ago

      Because IBM doesn’t want to tie themselves to Google or Microsoft. They already have their own builds of OpenJDK.

    • loutr@sh.itjust.works
      link
      fedilink
      arrow-up
      5
      ·
      1 year ago

      Because Cobol is mainly used in an enterprise environment, where they most likely already run Java software which interfaces with the old Cobol software. Plus modern Java is a pretty good language, it’s not 2005 anymore.

  • Treczoks@lemm.ee
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    “all those COBOL developer jobs” nowadays probably fit in one bus. That’s why every company that can afford it moves away from COBOL.

  • Duamerthrax@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    Though previously all such cases used to happen gradually, giving most people enough time to adapt to the changes.

    The Luddites would like to have a word with you.

  • ArbitraryValue@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    1 year ago

    according to a 2022 survey, there’s over 800 billion lines of COBOL in use on production systems, up from an estimated 220 billion in 2017

    That doesn’t sound right at all. How could the amount of COBOL code in use quadruple at a time when everyone is trying to phase it out?

    • kitonthenet@kbin.social
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      It could mean anything, the same code used in production in new ways, slightly modified code, newly discovered cobol where the original language was a mystery, new requirements for old systems, seriously it could be too many things for that to be a useful metric with no context

      • ArbitraryValue@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        But it isn’t getting quadrupled either, at least because there aren’t enough COBOL programmers in the world to write that much new code that quickly.

    • RickyRigatoni@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Maybe some production systems were replicated at some point and they’re adding those as unique lines?

  • MinekPo1 [She/Her]@lemmygrad.ml
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 year ago

    Something I found is that LLM struggle with weirder cases, when it comes to code.

    I once tried getting ChatGPT (though admittedly only 3.5) to generate code in understand SaHuTOrEPoL, which is one of the more esoteric languages I created, and it really struggled with it.

    • FaceDeer@kbin.social
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      Why would you expect ChatGPT to know how to write code in a language that you created yourself? According to that repository you created it last year, and ChatGPT was only trained on data up to 2021 so there’s no way it could have been in its training set. Even though AIs have surprised us with their insights in a lot of cases they aren’t magical.

      • MinekPo1 [She/Her]@lemmygrad.ml
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        Admittedly, I worded my comment poorly. What I meant is that ChatGPT struggled with understanding the semantics and structure of the language.

        As an example, try from this this code block

        $S__ do
        S__-m__w("Hello world!") do
        

        You can, hopefully guess that S__ is a variable which has a method m__w, accessed by using a hyphen, rather than a dot and statements end using a do keyword. ChatGPT missed on all marks.

  • kitonthenet@kbin.social
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Without a requirements doc stamped in metal you won’t get 1:1 feature replication

    This was kind of a joke but it’s actually very real tbh, the problems that companies have with human devs trying to bring ancient systems into the modern world will all be replicated here. The PM won’t stop trying to add features just because the team doing it is using an LLM, and the team doing it won’t be the team that built it, so they won’t get all the nuances and intricacies right. So you get a strictly worse product, but it’s cheaper (maybe) so it has to balance out against the cost of the loss in quality