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

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.


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


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.

Tags:

Cobol