r/technology 1d ago

Project shows you can run a Minecraft server on the 60-year-old COBOL language | The number of COBOL programmers is dwindling, but new developers can still learn it Software

https://www.techspot.com/news/106121-project-shows-you-can-run-minecraft-server-60.html
516 Upvotes

202

u/sojuz151 1d ago

A COBOL programmer, tired of all the extra work and chaos caused by the impending Y2K bug, decides to have himself cryogenically frozen for a year so he can skip all of it.

He gets himself frozen, and eventually is woken up when several scientists open his cryo-pod.

"Did I sleep through Y2K? Is it the year 2000?", he asks.

The scientists nervously look at each other. Finally, one of them says "Actually, it's the year 9999. We hear you know COBOL."

28

u/Zadojla 23h ago

It won’t be that long. More like 2037. Many Y2K patches just say “assume year 37 or less is 2000, assume year 38 or more is 1900”. The idea was to make the conversion faster, and it could be fixed properly later. What do you think really happened?

49

u/sojuz151 23h ago

You are wrong about the year 2037. This is due to 231 seconds since Unix timestamp origin. 

The 9999 year problem could happen if someone decides to store the year as a CHAR(4). But something like that would not happen in a serious enterprise software.  Right?

13

u/PitifulSafety1 18h ago

"Serious enterprise software", huh? A lot of modules were created 30+ years ago. There are still a huge assembler codebase. And nobody cares for refactor, even fears it. Because the teams are shrinking and stuff is still works.
Now, e.g. there are also 5 bytes date format: YYDDD: 2 char year + 3 char julian date. It is a whole byte shorter than usual YYMMDD or whatever you like as today's standard. Great economy for 1970-s - 1980-s code and databases.
Also I've seen such funny shit as 2-byte year, but to avoid assumption on transition they add 2000's decade number to 99 in a funny way. I mean for year
1999 its still '99' == 0xF9F9 - no addition

2001 - '9'+1(1st decade), '1' == 0xFAF1

2011 - '9'+2(2nd decade), '1' == 0xFBF1

2024 - '9'+3(3rd decade), '4' == 0xFCF4
So on till 2060, where it burst in flames.

And that is still in production.

10

u/Zadojla 14h ago

Way back in 1979, I worked for a service bureau that had canned applications that had originally been written in Autocoder for 1401 mainframes. For those readers who are unfamiliar, the maximum memory capacity was 40 kb. Yes, kb, so bytes counted. We ran into trouble as we approached 1980. My boss wrote file pre- and post- processors that had the effect making dates ending in 7, 8, and 9 in the 70’s, and 0-6 in the 80’s. I said to him that we needed to make notes to correct it in 1987. My boss looked at me and asked, “Do you expect to be here in seven years?” I shook my head. He said, “Neither do I”, and that was the end of the conversation. He was right. In 1987, I was at a different company, the customer was out of business, the service bureau was out of business, and my former boss was in jail for stock fraud.

4

u/Zadojla 22h ago

If you say so, I’m not a programmer, but the environment I was describing was mainframe COBOL.

1

u/romario77 1h ago

Well, people used just two digits for year and it worked ok for some time :)

I think 4 digits overflow would be fairly easy as for most software you could just assume it’s 10001, not year 1. Or 20k if we still have software at that time.

1

u/reallynotfred 20h ago

Right? Right? … Beuller? … Beuller? In Cobol it was probably considered efficient to store a year in 2 bytes of packed decimal.

11

u/aeschenkarnos 20h ago

“No-one will still be using this language in 1999 anyway,” said the programmer in 1970 as he turned off his computer and unplugged it from a wall socket invented in 1903 and standardised in 1926.

2

u/AlleKeskitason 13h ago

I'm not a COBOL programmer but I've been told I look like one.

121

u/TemptingSquirrel 1d ago

Why would you not? I know it sounds "impossible" but any modern language is not more powerful than for example Cobol when it comes to computational capability. In other words: you could implement Minecraft in basically any language (Cobol, C, Assembler, C#, Java, Rust, Javascript, Brainfuck) because any of those languages is computationally not more powerful than the other, they are all turing complete.

The reason modern languages are preferred is because they are more secure and/or enable developers to be way more productive. That being said, older languages still have their places in legacy code where it makes no sense or is simply too expensive to reinvent the wheel in a more modern language.

38

u/Kitchen-Tap-8564 1d ago

It has next to zero to do with the technical merits of the languages at all unfortunately.

The only reason anything is too expensive is because they kicked the can down the road on purpose until we have the mess we do now.

4

u/Hardass_McBadCop 14h ago

This. Everything runs on old spaghetti code from the 70s - 90s. In the mid '10s I worked for a nationwide cable company. One that sells and handles home security, Internet, phone, TV, and even mobile. The whole 9 yards.

Their system was still original. Like, they put lipstick on a pig, but when it, often, failed you had to go into the mainframe to change services manually. It was all product codes and command lines. Think Fallout, puke-green screens.

It was the same when I later worked at a call center for a credit card company.

2

u/vom-IT-coffin 12h ago

....everything runs on spaghetti code.

Modern companies aren't any better.

2

u/Hardass_McBadCop 12h ago

My testimony was literally from a modern company just a decade ago. Of course they're not better! Fuck off AI Sam!

1

u/Throwawayingaccount 7h ago

To be fair, a lot of things can change in 10 years.

In this case, noting that they did not change is relevant to discourse.

1

u/homonculus_prime 11h ago

This sounds like the distributed application they wrote to front-end the mainframe was buggy and failed a lot. Sounds to me like the mainframe worked fine since you were able to log in directly and do what you should have been able to do from the buggy "modern" UI.

8

u/perfectshade 22h ago

…those “nice to haves” are largely what stand in the way of people taking the time to do this kind of thing. Why would I want to handle my own memory management, or try to find replacement libraries, or compile for different architectures…for a toy project?

1

u/markth_wi 11h ago

I'd have to wonder if you found a Linux implementation if it wouldn't substantially compile all the way forward from the Cobol-95 standard, but fuck if we aren't going to all find out in just 12 years.

9

u/Alili1996 23h ago

While theoretically true, there are certain things you can't always do with every language when it comes to performance.
In that sense it's reversed, though where older languages are generally closer to machine code and have less overhead through things such as runtime environments taking up processing space.
On the other hand, exactly those runtime environments is what made Java what it is since it allowed applications to run on a variety of different platforms without requiring a custom compilation for every platform.

1

u/Serris9K 14h ago

Is that last one genuinely a language??

2

u/einmaldrin_alleshin 7h ago

Yes, it's what's called an "esoteric" language. Not intended to be productive, but funny or interesting in some way. In this case, it's designed to have barely enough instructions to be Turing complete. So writing even something like a hello world program is seriously difficult.

0

u/woodlark14 18h ago

I'm not sure that extends to Brainfuck.

Even assuming you have some sort of implementation for the APIs to allow you to use the functionality needed for minecraft, you still need to get it to run. Brainfuck is going to run horrifically compared to a modern language because of the substitutes for the large number of missing operators. Needing control flow for addition means that you are looking at extreme slowdowns that may leave your port unusable (especially if there's any timeouts for network features).

-9

u/[deleted] 1d ago

[deleted]

9

u/dangerbird2 22h ago

assembly absolutely is a programming language (or more precisely, a large group of programming languages, one for each architecture and assembler dialect). In addition to giving easier to remember mnemonics for machine instructions, most assemblers have support for symbolic labels (i.e. jump to LOOP_START instead of jump to a specific memory address) constants of various data types, directives to configure the linker, and macros for higher-level programming concepts.

4

u/Sloogs 20h ago edited 19h ago

Where do people even get nonsense ideas like this? And why do they always spout the nonsense so confidently on the internet?

Whether something is a language in computing has nothing to do with architecture or hardware and everything to do with whether it can be built using a formal grammar and have semantics mapped to its syntax.

All of which apply just fine to various assembly languages.

14

u/megas88 1d ago

But the question remains. Can it run doom inside of it at the same time?

19

u/-bruuh 1d ago

"can still learn it", sounds like the ancient knowledge will be lost in two more decades with no way to recover the knowledge and decrypt the mysterious code

18

u/SkaldCrypto 1d ago

The last COBOL specific class taught at any university in Ohio was in Fall 2011.

There are 31 job listings asking for that skill currently in the state of Ohio.

Yes it is basically ancient knowledge. I know exactly one person who knows this language that isn’t retired. He learned it by working in the mainframe department of a bank. When he joined the team at 26, the previous youngest team member was 54 and they called him “the kid”. I assume they called him the infant.

8

u/BCProgramming 1d ago

The main thing that is being lost as COBOL developers retire is not so much "knowing COBOL"; that's a worthless skill on it's own, because learning a programming language is something any competent developer should be able to do relatively quickly. What is being lost is primarily platform experience actually working with the mainframe systems upon which this cobol software tends to run. Not to mention stuff like ISAM which most modern developers aren't going to understand; But all of that isn't "lost knowledge" either. I mean if a current software dev can make sense of Gradle or NPM or Nuget, they should be able to figure out stuff like ISAM tables.

8

u/KagakuNinja 23h ago

From what I have read, those COBOL programs are running on virtualized instances of ancient IBM hardware and OSes, which were created in the stone age before many concepts in computing were standardized. These OSes use bizarrely different words for everything, and include virtualized punch card decks, run as batch jobs. It truely is a different world.

I actually had the misfortune of using COBOL on my first job, but at least we were using a mini VAX.

2

u/OtherTechnician 20h ago

This comment points to what I think will be the biggest constraint. COBOL compilers for new platforms. Emulation will not get any easier.

2

u/Foodwithfloyd 19h ago

Are there not decent emulators? When I was working on an old db2 instance right out of school we had a vm that we could work on because the mainframe time was too expensive. Obviously not cobol old but for databases it's pretty old

2

u/homonculus_prime 11h ago

You've read wrong. IBM is putting out new hardware almost every other year. z/OS 3.2 is going GA probably sometime next year. COBOL 6.4 was released last year. None of this shit is ancient except the names. The "bizarrely different words" are the same words that have been used for decades.

I think what you're referring to as "virtualized punch card decks" is JCL, and yes, it has been around for a very long time because it is well standardized, and it works.

0

u/xXx_killer69_xXx 1d ago

nobody is looking for junior cobol developers

7

u/d4vezac 1d ago

Based on the story above, they may have to start as the senior ones retire. Someone will have to maintain that code.

7

u/aeschenkarnos 20h ago

“Eh, let ChatGPT do it. How hard can it be?” — senior executive in Zoom meeting from his yacht (other attendees forced to physically be in an office)

3

u/ILoveBigCoffeeCups 18h ago

They do in abundance. I work in finance and more than 80% of all banking is still on mainframe in cobol. Most people are outsourced to India because it’s booming business there

1

u/Due-Survey7212 12h ago

Not just banking but insurance companies, too.

1

u/homonculus_prime 11h ago

Well, this is just completely wrong...

5

u/sigmund14 1d ago

It is something like that. In the current world of ever-changing apps and websites, things get started from scratch because a developer who first implemented something is long gone to somewhere else and the current developers have no idea what some of the code does.

1

u/Kayge 10h ago

COBOL is a giant pain to migrate from because it often has tonnes of rules built into it with lacklustre documentation.  

One dev I knew worked in COBOL for 30 years, and estimated 75% of her work was refining code to match business rules.  To rebuild that system, you have to understand what they all do and why, and that info in in someone's head who is close to retirement.  

Your aincent knowledge analogy is spot on. 

10

u/awood20 1d ago

I learned COBOL as part of my HND. I wouldn't wish it on anyone. At that point it was COBOL 85 as that was the year it was last updated. Not sure what the latest edition is but it's not a nice language to program in.

1

u/homonculus_prime 11h ago

COBOL 6.4 was released late 2023.

1

u/awood20 5h ago

I'm utterly amazed there's a team still putting effort into the language. Surely in the time of AI they could mass translate all the existing mainframe code to something more modern and maintainable?

1

u/homonculus_prime 2h ago

No, there really isn't a good way to do that. There are billions of lines of COBOL code out there, and consequently billions of lines of business logic. That is extremely challenging to convert to another language. I worked for a company that tried converting it. Spent 7 years on it, and then scrapped the whole project because it was not worth the effort.

IBM is still putting a TON of effort into the language, the compiler, and on the hardware it all runs on.

1

u/awood20 2h ago

I know the guys still working in this field are probably paid a fortune but I just couldn't. Motivation would be through the floor. Is there a modern IDE for this stuff even?

1

u/homonculus_prime 2h ago

I mean, ISPF is the greatest text editor that has ever existed, but if you absolutely need a "modern" IDE, yes, there are several. I personally hate them all, and they will pry my ISPF from my cold, dead, hands. There are a lot of "mainframe modernization" initiatives going right now with products like zOSMF and Zowe (IBM really likes the letter z) and things like that. So far, they haven't done anything but make my life more difficult (mainframe security). I think IBM believes that they can entice folks like you if they can make the mainframe look like anything other than a mainframe. Under the covers, I hope it'll still be a mainframe, at least until I retire.

1

u/roastedfunction 2h ago

There’s virtually no open source COBOL code to train the LLM on. It’s all sitting on prem in banks, airlines and governments. 

1

u/awood20 1h ago

A fair point but with AI companies offering custom enterprise setups, this seems a perfect project to open a private instance specifically for this purpose.

29

u/shiroboi 1d ago

But why?

39

u/razzark666 1d ago

"You see things; you say, 'Why?' But I dream things that never were; and I say 'Why not?"

10

u/ninjascotsman 1d ago

because there is a number of systems still using cobol and there trying to peak instrest in the programming langague to get more people to learn it.

3

u/Garethp 23h ago

The thing that's kept me away from COBOL is that the number of COBOL jobs may be somewhat steady, but that doesn't mean they're numerous. Becoming a COBOL dev means specialising into a niche industry. 

What happens if I get sick of the company? Or the company actually does do a rewrite at some point? Or I want to move countries? It's going to be more of an uphill battle trying to explain why my time in COBOL is transferable to newer technologies. 

I could be wrong, because I haven't done it, but the reason I haven't tried becoming a COBOL dev is less about the age of the language and more about the fear of having less opportunities once I've been doing it a couple of years.

3

u/aeschenkarnos 20h ago

Perhaps an option might be to market yourself as a specialist in rewriting COBOL to $FASHIONABLE_LANGUAGE? Your actual specialty is COBOL but your skills are framed as current. Then you can include support of current COBOL systems and also support of systems that evolved from COBOL over generations.

1

u/Garethp 19h ago

That's still an incredibly niche set of jobs though. Some places need COBOL Devs and will for a long time, but the are no new projects getting started in it. There's no new work being created by it. Choosing to go into COBOL work in inherently going to limit your opportunities more than most other fields of programming. And from what I've seen COBOL jobs don't offer enough of a higher salary to make up for that.

2

u/aeschenkarnos 16h ago

True, but “do something different instead” is always an option for any line of work. If a person is already well established as a COBOL “developer”/support coder/migrator, they probably have a limited career life left to do that in.

2

u/homonculus_prime 11h ago

but the are no new projects getting started in it. There's no new work being created by it.

Both of these statements are false.

2

u/Fantasticxbox 23h ago

Including a good chunk of the banking system.

10

u/-bruuh 1d ago

Because I can slaps cock on desk

6

u/shiroboi 1d ago

Sir, this is a school…

5

u/Zadojla 23h ago

Why is there a chicken on the desk?

1

u/DragoonDM 17h ago

Same reason people have gotten Doom to run on everything from refrigerators to pregnancy tests1 . Because why not? A lot of software projects are largely pointless hobby projects that someone started just for the fun or challenge of it.

1 Technically I think they were just using the pregnancy test as a display, with some other device actually running the game

22

u/TheGza1 1d ago

Who would want this? I have learned Cobol to run in mainframes more than 40 years ago and still hate it lol

22

u/gankindustries 1d ago

A lot of legacy systems, like banks, also tend to use it

9

u/TheGza1 1d ago

I know, but thet are not trying to run Minecraft on it lol

10

u/sigmund14 1d ago

Probably next best thing from multiple points of view - from the employer still using COBOL: this candidate at least has some COBOL experience (basically the same as for any other junior position) - from the person learning COBOL: there's probably no software used in the companies that still use COBOL that is open for learning and trying to run Minecraft is probably more fun than some generic exercises.

-1

u/xXx_killer69_xXx 1d ago

nobody is looking for junior cobol developers

5

u/dragon_bacon 1d ago

They'll have to at some point.

1

u/aeschenkarnos 19h ago

We said the same about climate change.

2

u/homonculus_prime 11h ago

You like repeating this incorrect statement, don't you?

1

u/sigmund14 17h ago

They will soon look for any alive COBOL developer, retired or teenager. There aren't many still working, and most of them are close to retirement, with noone to take over.

2

u/xXx_killer69_xXx 16h ago

so why arent they doing it now? i just checked glassdoor and postings for cobol are under 500 in the entire US

11

u/SuperToxin 1d ago

No but they might need more people learning it

4

u/ploooopp 1d ago

I'm considering learning cobol because jobs are niche and I've heard there's good pay, do you feel like that's a good reason to learn it?

4

u/JcWoman 22h ago

I'm a retired software engineer who spent the majority of my career in COBOL. One of the reasons I retired early was because while companies complained about not being able to find experienced programmers, they also didn't advertise openings for them. And the few jobs I did find were all 3-month contracts and required me to relocate to the job area. (This was before the pandemic.). No fucking thank you. I would like a settled lifestyle, thanks.

1

u/CarelessPackage1982 45m ago

Just before Covid they laid off a bunch of Cobol devs, and then when shit hit the fan they needed the systems updated to deal with the load. They asked these guys to do it for free.

https://www.reddit.com/r/programming/comments/fv5vy7/covid19_response_new_jersey_urgently_needs_cobol/

3

u/hunterkll 1d ago

I'm heavy in the VMS circles, and with x86 VMS being a thing, this would be hilarious. Since we got our first x86 java port I've known someone running a minecraft (full featured with mods) server on OpenVMS, but this would be even funnier.

2

u/aeschenkarnos 19h ago

“So they could have done this in 1978?”

“Yes if they had thirty billion dollars worth of computers to devote to it and were happy with a graphic speed of one frame per minute.”

1

u/hunterkll 6h ago

Except this is the server side, and probably would run fine on a 1960's s/360 mainframe for modern clients. It doesn't do graphics itself.....

I have a friend who's thinking about trying to get it to run on an emulated DPS8 mainframe running *multics*

3

u/FancyMFMoses 1d ago

You have brought back memories of Rexx, Cobol, and JCL... those days are behind me for a reason.

3

u/Friggin 21h ago

JCL…fuck JCL

6

u/HamsterNomad 1d ago

This is great. I worked as a code translator back in the mid 80's. Cobol was easily my favorite. Although for technical programming Fortran couldn't be beat.

I made more money translating code during the summer than I did in 9 months as a high school teacher. That's why I'm a physicist now. More money and better hours.

3

u/addictedskipper 1d ago

Do Turbo Pascal next please!

2

u/aeschenkarnos 19h ago

Fun fact: the original Wizardry was written in Pascal, and at the time held the record for the longest Pascal program.

3

u/sevaiper 1d ago

What a dumb article, obviously you can configure a server with any reasonable language but there’s no real reason to 

1

u/joseph4th 9h ago

I took a COBOL class at UNLV in 1986 or ‘87. Older male teacher who spent the first class talking about his hot young 20 something girlfriend. He spent the second class telling us about how his young girlfriend stole money from his bank account. He didn’t show up for the third class and it was canceled soon afterwards.

1

u/TehWRYYYYY 7h ago

Hey! You no take candle!

1

u/Varnigma 2h ago

I’m one of those weirdos that learned COBOL in college and loved it.

Never was able to get a job doing it but still would given the chance and I haven’t touched COBOL in 20+ years.

0

u/Snorlax_relax 23h ago

Idiotic article. It’s basically just saying making a server with COBOL is possible. Yes fucking obviously it is

0

u/manfromfuture 1d ago

But why?

0

u/Tim-in-CA 12h ago

Pourquoi?

0

u/Puzzlehead-Engineer 12h ago

We should let COBOL programmers die out and thus force institutions that still use it to refactor and upgrade. Maybe then they'll actually do it.

-13

u/anlumo 1d ago

COBOL programmers will most likely be the first ones to be entirely replaced by AI. It’s the obvious target.

3

u/sigmund14 1d ago edited 1d ago

IBM announced generative AI tool for refactoring their ancient COBOL code 1.5 years ago. Haven't seen any news related to that since then.

1

u/VengenaceIsMyName 13h ago

In other words, it probably doesn’t work.

-4

u/anlumo 1d ago

That's the other thing, LLMs are good at rewriting code in another language.