11

COBOL is still (heavily?) used for financial computing. It is an old language, and AFAIK most programmers hate, or at least dislike, COBOL. This brings a question: is the only reason COBOL is still used that legacy software uses it, or does it have any real advantages over other programming languages?

Just curious.

Anto
  • 11,157
  • 13
  • 67
  • 103
  • 3
    Old is not a reason by itself. –  Mar 05 '11 at 17:24
  • No, but it most likely lacks modern features because of that. That is not so important though if the language is otherwise well designed. – Anto Mar 05 '11 at 17:28
  • Also still heavily used in government, not just banking. – BBlake Mar 05 '11 at 19:26
  • 6
    "most programmers hate COBOL" - well, I'm pretty sure most programmers haven't ever used it either. I'd be surprised if more than 5% of these "haters" had any idea on its syntax or form. They just use it as an example of the evil of legacy systems without really knowing what is going on. Similar to how FORTRAN is often regarded. – TZHX Mar 06 '11 at 10:04
  • @TZHX: The whole quote should however be "AFAIK most programmers hate, or at least dislike, COBOL". I'm not saying it *is* like that, it's just how I have *interpreted* the situation. But what you say might be true, but I don't know it well enough to say anything myself, all I used was personal observations on peoples opinions (which may suffer from exactly what you said). – Anto Mar 06 '11 at 12:40
  • Honestly, I don't have that much of a problem with Cobol - I more or less enjoy the syntax and some of the language features (and when preparing textual reports, its formatting can't be beat). The only thing I really hate is working in the gosh-awful editor on the IBM Z/OS mainframe. I'd rather use [ed](http://www.gnu.org/fun/jokes/ed.msg.html)... (in all seriousness, I would. The man page is much better and it's kinda fun to code that way. And it's way easier to navigate than whatever editor we have on our mainframe...) – Wayne Werner Feb 23 '12 at 12:07

6 Answers6

12

It's mostly legacy now. Many critical business systems are still in COBOL simply for the fact that they are so big and integrated that the cost of rewriting doesn't seem worth it. Writing a new system in COBOL is probably not feasible anymore, as most COBOL developers are so scarce that they can pull in a considerable amount of money for the specialized skill (similar to a Foxpro developer now). There are few to no reasons to keep a COBOL app around, but unfortunately the common reasoning is when the COBOL app is already in-place, trusted, and tightly coupled with other systems to where it's near impossible to replace. That reasoning is exactly why it should be replaced before it gets to a situation where the only hardware that runs the app has to be custom built from Ebay parts from the 80/90s.

Ryan Hayes
  • 20,139
  • 4
  • 68
  • 116
  • What makes you say "It's mostly legacy now"? I don't think you really know what you are talking about. I am working on a multi-million dollar new COBOL project right now. I also know of several other very large new development projects using COBOL as their main implementation language. Wishful thinking on your part does not make it reality. – NealB Oct 17 '11 at 15:43
  • 1
    Don't take it from me. Research from O'Reilley says Cobol book sales are near nonexistent compared to every other language. That's either because there's lack of interest on the developers, or there aren't enough developers using it. I'm sure you can find new development using COBOL, but it's still MOSTLY legacy (not all legacy). I'm sure someone like youself who specializes in COBOL would have connections to other folks who use only COBOL as well. Just like it would be with me, only having friends who use one language doesn't mean that I'm not the minority. – Ryan Hayes Oct 17 '11 at 17:01
  • At our company we pretty much copy/paste existing code, tweak it to suit our needs, and say "done". Luckily I get to do my development in C#/VB – Wayne Werner Feb 23 '12 at 12:08
4

COBOL is still (heavily?) used for financial computing.

Is it?

It depends on what you call financial computing. If you call all the code that is run by financial institutions yes, it probably is. Most have business rules written in the 60s and 70s. The risk+cost of upgrading systems like this to a new environment is not worth it. I doubt that there is anyone out there writing new COBOL code. There are COBOL compilers today that integrates into the .NET stack, for example. Often there are tools for integrating and leveraging legacy applications into modern software stacks but those tools are often unknown to people who doesn't have to use them, since it's a very niche market.

Now if you call financial computing something more akin like software for quantitative finance I never heard about someone using COBOL. C++ is way more common, along some niche languages like k, an APL derivative.

Vitor Py
  • 4,838
  • 1
  • 27
  • 33
  • `k` and it's descendant `q` are such pain – Andrey Mar 05 '11 at 17:04
  • @Andrey It's a matter of taste. I enjoy it. – Vitor Py Mar 05 '11 at 17:42
  • lucky you are. One of the greatest problem for me is lack of normal IDE and useless error messages – Andrey Mar 05 '11 at 17:43
  • 2
    @Andrey Yes, moving away from mainstream development environment is the biggest problem when using niche languages. I used to do template heavy C++ code before using it so I'm somewhat used to useless error messages :) – Vitor Py Mar 05 '11 at 17:57
  • @Andrey, IBM has Eclipse based tooling for Cobol. –  Mar 30 '11 at 22:28
4

COBOL mostly sees legacy use now. It's user base is slowly dwindling by attrition, as no new applications are being written and old ones slowly, but surely, are phased out.

Most COBOL systems which could quickly and cheaply be replaced, have been replaced already. The ones which have not, continue to become more and more expensive to repair or replace, but cheaper and cheaper to maintain relative to newer systems - they run well on cheap, out-dated hardware, and, after many years of service, are no longer showing any new bugs. Most bugs have either been fixed, or have longs standing traditions which fit as work-arounds. Maintenance typically has been reduced to one or two specialized employees, who, after a long time working on the system, know it more intimately than you can imagine.

Even from a technical perspective, there are usually some sound reasons to keep the old systems around. They are relatively stable, have been mostly bug-fixed, and are well known/understood by the end-user.

You'll see the system eventually being replaced, though. Typically this move comes from the business side of things:

  • The users of the current system are replaced by younger users, who can't be convinced to learn how to use the archaic interface
  • The company cannot find anyone to hire to maintain the system, at a salary that's not outrageous compared to other employees' pay
  • Someone with a large budget becomes embarrassed to find out that a core system for the company is running on hardware that can be replaced by a vm on a laptop
  • A new, commodity system, comes along, which is really really cheap to start using
  • The company using the older systems is acquired, goes bankrupt or otherwise stops really existing
  • A crucial bit of new, urgently required functionality, cannot be cheaply made to interact with the legacy system
blueberryfields
  • 13,200
  • 8
  • 51
  • 87
  • 2
    What is your background for being so certain? –  Mar 05 '11 at 17:23
  • I can emphatically state that your certainty is misplaced - we have several younger (20-30s) new hires writing new Cobol code (updating and/or copying and modifying existing systems), and we have at least 10% of our ~200 developers who spend 80%+ of their development time in Cobol. I think you'd find that most places who use Cobol are *exactly* the opposite to what you describe. – Wayne Werner Feb 23 '12 at 12:13
4

wonder what you meant by "Most programmers". I work in a large IT shop on the same floor as cobol programmers, Java programmers, .NET programmer (in singular), old style VB programmers. There is no hate or dislike. cobol is a language like any other programming language- people programming in cobol do so because it's a job to them no different than programming in java or driving a truck. Contrary to popular conception in the US there is a lot of cobol continuing to be written, only most of it is in India where every day new Cobol programmers start work.

I think the reason why not too many net new systems are written in Cobol is because the kind of systems that cobol is suited for (large volume file processing) are all already written. Very few new large corporations get created these days. And the ones that do might be outsourcing things like payroll and benefits to companies that run legacy cobol systems.

2

With 20 years of COBOL experience, on three different mainframes, it is my humble opinion there are few true COBOL programmers and instead there are IBM programmers, Sperry (Unisys 2200) programmers, Burroughs (Unisys MCP) programmers, and Tandem (HP NonStop) programmers. In a showing of respect to them, I must also mention the presence of HP 3000 programmers, BULL programmers, and DEC programmers.

COBOL runs on big iron boxes, for the most part. Perhaps the only true COBOL programmers, by my own standards, are those writing COBOL on a UNIX box. Wow, I am going to hear about this.

Because the hardware is the central piece, most programmers who write COBOL identify themselves by the hardware on which the code they write runs. Over the years, listening to other programmers tell me about the merits of Sperry, Burroughs, or Tandem, I have often wondered what kind of warfare would ensue if I were to round them up and place them in a room together unable to leave until they agreed upon one hardware platform for all COBOL. I did not mention the other platforms because I have never worked on them.

I have met and talked with many IBM programmers, and they will refer to themselves as COBOL programmers. However, if one engages them in conversation, they quickly begin referring to IBM specific procedures and tools. Given the hardware-centric nature of COBOL, this is very understandable, for all hardware platforms.

Because COBOL is usually tied to a very expensive piece of hardware, as long as that piece of hardware runs the COBOL programs compiled on it then there is no strong desire to migrate from COBOL for migration’s sake. However, with an aging population of COBOL programmers, migration is inevitable.

Since all of the big iron boxes running COBOL will also run Java, Java is the natural path of migration away from COBOL. Code can be converted, particularly now in a down economy, for a rather economical price. Once there is no COBOL, only Java, on that big expensive piece of hardware, then someone higher up in the organization is going to start wondering whether it is possible to move the Java code over to some other much less expensive piece of hardware.

IBM, Sperry, Burroughs, and Tandem programmers know this, so they will likely NEVER offer up the idea. It would be a sacrilege for some.

Kennah
  • 268
  • 2
  • 6
  • +1, very expensive indeed. Plus pointing out that Java is becoming the New Cobol - which I've seen myself and I'm just a young buck, so it's interesting to see someone with experience make the same observation. – Wayne Werner Feb 23 '12 at 12:16
2

A large portion of the core code in PeopleSoft is written in COBOL.

bit-twiddler
  • 2,648
  • 1
  • 16
  • 17
  • I am given to understand, from talking with PeopleSoft reps at an IT conference back in 2004 before Oracle acquired them, that it was at that time only one module of the product that was still in COBOL. – Kennah Oct 22 '11 at 03:23
  • How does this give an advantage to COBOL over other languages anyway? – Matthieu Dec 17 '11 at 02:56