5
$\begingroup$

It is a well-known fact that we have a shortage of COBOL programmers. Why we do not re-introduce COBOL in our curriculum for the Undergraduate and Graduate Students?

I know some schools are teaching mainframes but, they are very limited.

https://cacm.acm.org/news/244370-cobol-programmers-are-back-in-demand-seriously/fulltext#:~:text=Experienced%20Programmer%20Shortage&text=Although%20a%20few%20universities%20still,it%20today%20is%20extremely%20small.&text=In%20the%20age%20of%20apps,at%20retiring%20their%20mainframe%20systems.

Since all the workforce for the COBOL is aging and getting retired. Banks, insurance, retail, airline, etc. are still using COBOL.

https://www.howtogeek.com/667596/what-is-cobol-and-why-do-so-many-institutions-rely-on-it/

IBM reported, "As late as 2017, 92 of the top 100 banks still used mainframes for their core businesses."

https://www.tpr.org/technology-entrepreneurship/2019-05-23/how-cobol-still-powers-the-global-economy-at-60-years-old

Also, fresh graduates are getting a salary of $75K or above for COBOL. All this being said, is there a way to revive this beautiful language through our students?

$\endgroup$
3
  • 6
    $\begingroup$ "It is a well known fact that we have shortage of COBOL programmers" - is it? The lobby groups of all industries constantly claim to have a shortage of workers - it doesn't usually reflect the reality. Usually they are just holding out the begging bowl, wanting the state to cover training costs or ramp up immigration from low-wage economies. $\endgroup$
    – Steve
    May 1 at 19:37
  • $\begingroup$ @Steve unfortunately a lot of COBOL coders passed away in Covid and many got retired.. there is a shortage....indeed.. $\endgroup$ May 2 at 5:29
  • 3
    $\begingroup$ Trust me, it's the same dismal chorus we hear every time the employers have to pay above minimum wage or have to plan their workforce needs more than a couple of months ahead. $\endgroup$
    – Steve
    May 2 at 7:58
4
$\begingroup$

Programmers are free to pick up the language, and there are plenty of resources out there to help anyone who wishes to learn COBOL to do so.

I could imagine a programmer boot camp that focused on COBOL, and it might be in the interest of the Big Banks to create just such an institution. However, the mission of a computer science program is quite different from the mission of a coding boot-camp. Computer Science programs teach the core concepts of the field of computer science. There are no important, underlying CS concepts that are best taught in COBOL, and this makes it a poor choice for most of what we do. While nods can be made to industry in language choice, computer science is what we are here to teach.

The reason that there are so many institutions that still rely on COBOL is because they have a tremendous amount invested in that architecture from decades ago when the language really was still in use.

However, there are also important reasons that the language is dying. For instance take a look at this quora post by the user "Jack Menendez":

The assumption Dead is a matter of definition. However, the reasons why new applications are never written in COBOL is:

COBOL has a special type called a Packed Decimal that is a fundamental type for a mainframe. COBOL code and databases used by COBOL are full of Packed Decimals. To a mainframe Packed Decimal works kind of like an integer on intel but it is a kind of decimal. So there are machine level instructions on the mainframe that can deal with the Packed Decimal add/subtract/Div etc. The intel architecture does not have any idea what Packed Decimals are so COBOL compilers that target Intel must create code that simulates them. COBOL runs much slower on the Intel architecture for this reason and can create binaries that are relatively large.

COBOL programs are non-reentrant by their nature. In fact the code and internal data fields on the mainframe normally occupy the same contiguous piece of storage. This makes it hard to use COBOL in environments such as application servers that expect reentrant code. Application servers ported to the mainframe typically cannot use COBOL.

COBOL code has a syntax that is not like other languages, writing "Hello World" in COBOL is kind of an ordeal for a beginner.

The increased salary for COBOL programmers is reasonable since there needs to be a way to reward programmers who take the time to learn languages that have little applicability elsewhere. It is also part of the expense for maintaining dated software on decaying architectures.

Every year, more and more of this COBOL code is being replaced as the maintenance costs go up and the ability to expand its functionality decreases. And this is for the good! While there will always be room for people who truly love the language to keep the flame alive, the large base of industry should be where people can be efficient, and that is no longer in COBOL.

$\endgroup$
2
  • 5
    $\begingroup$ "there are also important reasons that the language is dying..." - the listed reasons turned out to be less than compelling. The efficient handling of decimals by Cobol (and the underlying mainframe architecture, compared to Intel) is surely one of the reasons it is still used, rather than a reason why it is ceasing to be used. $\endgroup$
    – Steve
    May 1 at 19:30
  • 1
    $\begingroup$ @Steve, today's "enterprise applications" run on oversized PCs. $\endgroup$
    – vonbrand
    May 4 at 0:03
1
$\begingroup$

There is more to a CS education than programming. And the goal of a CS program isn't to create programmers for industry. People with a CS undergraduate degree can, on their own, learn enough COBOL to get a job.

But some places will have a course or two. And an Information Systems curriculum is a more hospitable place for it, though the education there isn't focused on programming either.

Note, however, that the language is quite a bit different from what it was in 1970.

$\endgroup$
9
  • 1
    $\begingroup$ I do not agree with you. I think we are not doing justice with COBOL.... $\endgroup$ Apr 30 at 4:15
  • 1
    $\begingroup$ @TalhaTayyab Which sentence could you possibly disagree with? I didn't think there was anything even a bit controversial within this answer. $\endgroup$
    – Ben I.
    Apr 30 at 12:30
  • 1
    $\begingroup$ @BenI. I agree with "There is more to a CS education than programming" but still we teach a couple of languages to students. In some places they teach 3 - 4 languages a part from Data Structures, Design of Algorithms, Automata, Compilers, etc. COBOL is ignored altogether by one and all. $\endgroup$ Apr 30 at 13:53
  • 1
    $\begingroup$ Cobol might be discussed in a programming languages course. $\endgroup$
    – Buffy
    Apr 30 at 14:21
  • 3
    $\begingroup$ "And the goal of a CS program isn't to create programmers for industry." I sympathize with this. But let's acknowledge this is a prescriptive statement. Not a descriptive one. Historically ppl have differed on what the mission of higher education is. Some c it as something that should cater to the imperatives of the market. While others think it should stand at some remove from those needs. U can c these tensions at work in books like Veysey's "The Emergence of the Am. Univ." in which the ideal of "utility" was lauded in community and land grant colleges but less so at trad 4 year univ. $\endgroup$
    – Luke
    May 1 at 18:21
-1
$\begingroup$

I keep returning to the idea that code should be simple and made to be thrown away. Build once, use a while, then let someone else be useful, creative, necessary, helpful... Let people build back better with something that didn't exist the first time around.

So to me, this clinging to ancient code is a mentality of fear and scarcity, which we would be better off without. If it is too complex, simplify it and live with a simpler solution. This seems really "First World Problem" to me. There are a lot of programmers in other parts of the world, who need work.

$\endgroup$
8
  • 3
    $\begingroup$ Enterprise systems don't work like that, actually. This is the COBOL "problem space". $\endgroup$
    – Buffy
    May 2 at 11:30
  • $\begingroup$ @Buffy That does indeed seem like a problem. We should never be so attached to something or so dependent on it that we are unable to replace it with something better. I would say that Enterprises ought to see such painful reliance as an "existential risk" and correct it as fast as they can. If you are not using your computer to get to the Moon, you will not die if it fails, and so you should be able to fix it without it becoming a crisis. Unless your computer is driving the vehicle that is taking you to the hospital, I guess... Every system has an Achille's Heel (said Goedel). $\endgroup$
    – Scott Rowe
    May 2 at 12:05
  • $\begingroup$ Systems are cheap these days, so just have multiple ones, and when one springs a leak, switch it off and the others keep going while you create yet another. Evolution comes to the world of enterprise software. $\endgroup$
    – Scott Rowe
    May 2 at 12:08
  • 3
    $\begingroup$ Sorry, but no. NO. Why would a company discard an asset that they spent millions to develop and refine? COBOL is very stable and its quirks are known. Python is cool, but evolving, with potential faults yet to be discovered. Why would a company discard hundreds of cumulative experience-years in a technology for the "next new thing". The problem isn't with COBOL as much as it is with the fact that the experts with that accumulated knowledge are retiring/dying with no replacement in sight. I'd guess IBM has thousands of experience-years invested in COBOL. Maybe another order of magnitude more. $\endgroup$
    – Buffy
    May 3 at 12:05
  • 1
    $\begingroup$ @Buffy, just look at Netscape (Remember them? Their browser was the browser in use, and they had a nice collection of other software offerings.). They decided sometime in the '90s to rewrite Netscape from scratch, as they considered (probably with good reasons) that it was too full of cruft. Never finished the rewrite, the company went under in large part because of the effort diverted into the rewrite away from bug fixes/new product development. $\endgroup$
    – vonbrand
    May 4 at 0:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.