Comment by giancarlostoro
17 hours ago
> Mainframes still run a surprising amount of critical infrastructure: banking, payments, insurance, airlines, government programs, logistics, and core operations at large institutions. Many of these systems are decades old, but they continue to process enormous transaction volumes because they are reliable, secure, and deeply embedded into business operations.
It saddens me when companies abandon them, it takes so much effort to replicate their power. I often wonder why mainframes never had a more modern easier to maintain and manage programming language designed for them.
> I often wonder why mainframes never had a more modern easier to maintain and manage programming language designed for them.
Although COBOL is one of the primary programming languages for the mainframe, it can also run Java and Python as the others have mentioned. COBOL itself isn't particularly difficult to grasp for modern engineers, it's readable and has an easy to understand English-like syntax.
The challenge here is learning and becoming proficient in the end to end mainframe ecosystem including the intricacies of z/OS. It's a completely closed off ecosystem and is not as accessible to play around with for the average SWE as compared to windows or linux based development.
Java is available on z/OS.
And Python: https://www.ibm.com/products/open-enterprise-python-zos
And node.js: https://www.ibm.com/products/sdk-nodejs-compiler-zos
And Go: https://www.ibm.com/products/open-enterprise-sdk-go-zos
IBM z/OS essentially contains three separate environments: (a) environment for running traditional mainframe applications (JCL, VSAM, ISPF, TSO/E, CICS, IMS, DB2, COBOL, PL/I, etc); (b) UNIX-based environment (supports Java, Python, node.js, Go, Kubernetes)–it officially conforms to the UNIX standard, so almost any POSIX app can be ported to it–but sometimes with some difficulty, since it is a bit of a weird UNIX implementation (e.g. by default uses EBCDIC instead of ASCII–although the filesystem has built-in support for translating between ASCII and EBCDIC and Unicode); (c) Linux container environment (zCX), which can run any Linux Docker container, provided it is compiled for the mainframe CPU architecture (z/Architecture aka s390x)
It is quite common for people to take an existing application written using (a) and add new components to it using (b) and (c). Indeed, IBM themselves tends to rely on (b) a lot in adding new OS features.
I think the biggest downside of IBM mainframes, is everything associated with them is super-expensive – the hardware, the software licensing, etc. IBM charges ISVs thousands of dollars a year just to get access to a legal development environment. (Hobbyists often use pirated versions of the software, but not a good idea if you are trying to run a business, and IBM keeps on trying to make that harder–most recently they've announced they are going to stop licensing on-premise emulated development environments and force them all to move to the cloud.)
You can run kubernetes on mainframes. They’re not as old/out of touch that most people think
Can you provide more info / examples on that?
Here's a new hot topic from IBM in 2024:
https://www.ibm.com/docs/en/zos-hot-topics?topic=new-kuberne...
As a rule of thumb, if there's something in computing you've heard about, expect IBM to also have heard about it and made something like it for their machines. Sometimes they lag a bit but eventually they converge towards having their own of all things computational.