Why is COBOL still a preferred language in the business world?

24,024

Solution 1

Code inertia. Huge amounts of existing code written in COBOL = prohibitive costs to switch everything over to another language. Wikipedia says there are over 200 billion lines of COBOL code in use.

Policy inertia. The places where COBOL is really in deep use tend to be government agencies and large businesses, which are notoriously slow to change.

Human inertia. People who make their living writing code and know many languages are less likely to consider it a big deal to learn a new one. People who learned one language because they needed to know it to perform what's otherwise a "business" job may not even think to switch.

Solution 2

I'm not so sure COBOL is preferred by big business and government. I would say tolerated might be a better word.

Why?

  1. Because big government/business is risk adverse when it comes to managing their financial systems. Screw up here and the whole enterprise is put into jeopardy. If it ain't broke don't fix it.

  2. It is difficult to make a solid business case to replace mission critical systems containing millions of lines of code over what boils down to a "my language is better than yours" type of argument – ok its more complex than that but coming up with a solid business case is difficult.

  3. Transaction volume. COBOL applications tend to be optimized for throughput. Batch processing large amounts of data is where COBOL really shines. Java applications are somewhat harder to optimize for throughput because of the tendency to have more infrastructure layers between the program and the "metal" which adds processing drag. Big business/government have a lot of data to push through their systems and throughput is essential.

  4. Cost per transaction. COBOL generally has a lower cost per transaction when all factors are included. This is partly because processing time costs money, and COBOL applications are generally more efficient. However, COBOL applications seem to have lower development/maintenance costs too.

Before everyone jumps all over me for that last point let me explain...

I work in a very large shop and a few years ago an executive decision was made to build all new systems in Java. COBOL was going to be retained only for maintenance of the existing legacy software base. A complete phased out was planned for a 15 year time horizon.

Some of the best and brightest Java minds were brought in to train, set up Best Practices, build infrastructure and support for large scale Java development. This initiative was well planned and executed. Then, after a number of Java applications had been deployed the "bean counting" started. The results were that COBOL applications still cost less to develop, maintain, support and run - long hard number crunching here because the result was not welcome!

COBOL is back - but not completely. The new executive direction is to keep COBOL for heavy lifting (back end transaction processing) and batch oriented applications. Basically COBOL is to be used for number crunching and business rule implementation. Java comes to the front to provide GUI type interfaces and light-weight processing.

I suspect this is probably the industry trend. COBOL isn't going to disappear any time soon, but it may slip out of sight behind the scenes where it supports new players up front.

Solution 3

First - I work for Micro Focus - so I am an interested party. However, I would turn the question back on its self. Why not? The inherent assumption is that C++, C# or Java are naturally going to be better because they are newer. However, COBOL has not stood still. Partly because of its wordy syntax, it has proven possible to add new features to COBOL so it has remained competitive. People quite often talk about how 'bad' COBOL is, but are comparing 30 year old COBOL to the latest version of C#, Ruby, etc.!

Indeed, the very history of COBOL is evolving, but it remaining backward compatible is a strong reason for a business to invest in it; the TCO is reduced because there isn't any need to rewrite.

For more on the very latest version of COBOL - check out the community site for Managed COBOL:

http://knol.google.com/k/alex-turner/micro-focus-managed-cobol/2246polgkyjfl/4

Solution 4

Why did it catch on ?

Because in the late 1950's the US government decreed that if a software vendor wanted to sell an app or write an app for the government, the language had to be cobol.

As a consequence, for decades long it was the language that had the largest set of compiler vendors supporting it, and it was the language with the highest degree of ISO standardization, with only FORTRAN getting anywhere near that, but FORTRAN obviously had a completely different target audience.

Second reason : because even today, it is better than any other language I know for certain aspects of certain business problems that occur fairly frequently. The most important of these aspects is decimal arithmetic. Cobol has it natively (as is the case for PL/1 and such), but that is not true of any of those allegedly "more modern" langauges. Incidentally : that is the very reason why there are so many questions here regarding "what is the best data type for storing money values ?". The people asking those questions know no better than that the entire IT world consists of some OO language and some ORM tool, and have no idea of why such a thing a "money arithmetic" might be useful for a computer language to support it natively, i.e. for a computer language to have a built-in, native data type for it, other than bigint (with the programmer still having to keep track of the number of decimals), or float (with the programmer still being responsible for adding the correct rounding logic all over the place).

Solution 5

None of these languages offer what Cobol does -- fast, efficient processing large batches of data. It doesn't need graphics, it doesn't need bit-twiddling, it just needs to do what it does well -- accounting mostly.

C++ and C are ok substitutes for systems style stuff but they fall down on fixed point math and strong support for record oriented I/O. In the space where most financial and business apps live, z/OS, both Cobol and z/assembler have better native support for those things.

Java is good, safe, and workable. And on IBM mainframes, Java and Cobol interoperate very nicely. But some things that are easy to do in Cobol are very hard to do in Java, and the converse is true. They are complementing each other, not replacing each other. Java also does all it's fixed point math via library calls, which are much slower than native opcode support.

Python uses library (aka module) support for fixed point math as well as record I/O. It also suffers from a fatal, IMHO, design flaw of using indentation to delimit scope. This works reasonably ok in the relatively homogenous environment of Mac/Windows/Unix with some variant of ISO8859-1 character sets. It is prone to problems when moving back and forth between an ASCII-centric world and an EBCDIC-centric world where line terminators are not as simple as "\n\r, \r, \n" and any misconfiguration in a file transfer package, character conversion routine, or editing by a terminal configured for a different character set will destroy the scope of your source.

All of the languages you mention have weaknesses in critical business needs where Cobol is the strongest.

Share:
24,024
Prasoon Saurav
Author by

Prasoon Saurav

About me Software engineer at a stealth startup. 22nd C gold badge recipient. 62nd C++ gold badge recipient. Contacts prasoonsaurav.nit @ gmail prasoonsaurav @ linkedin prasoon @ codementor

Updated on April 13, 2020

Comments

  • Prasoon Saurav
    Prasoon Saurav almost 4 years

    Even though we have languages like C++, Java, Python, etc., why is COBOL still a preferred language in the business world?

    Why was it so popular?