I'm curious as to what makes COBOL the right tool for data processing tasks.
I was under the impression that much of the reason it was still around is generally because there are existing large projects already written in it, and it is generally deemed to expensive to try to convert to some more modern language. You make it sound like there is more to it than just that (although surely it plays a part).
What makes it a better language than say Java or Python for data processing tasks? If one chooses to use those languages in a more purely procedural style (rather than an object oriented style) would they not produce similarly straightforward code, but with the advantage of having a much larger pool of developers?
That's a fair question. I'll try to give a quick answer without starting a language flame war. :)
First, to be fair, good programmers can do just about anything with any language. We've done remarkable things though the decades with very little. Now that computers are relatively infinite in capability, even bad programmers have a shot at doing anything with any language. So it doesn't matter as much anymore.
But as an IBM RPG programmer, which has similar attributes as COBOL, the reasons are high speed transaction processing with language and even hardware support for binary decimal data type and direct disk IO, not limited to SQL for database IO. Programs are written with typed variables and compiled. Efficiency used to be paramount to accomplish what needed to be done, and it still is highly efficient.
The IBM mainframes and midranges these programs run on can be smaller but scale to very, very large environments that are very secure. Java also runs on these systems and we write systems with it and is used extensively, but generally not for the hardcore data processing jobs.
When something is processed, be it a screen, something from a web page, a record from an input file, etc., we usually hit several files in validating and updating info, on a transaction by transaction basis. It can be emulated with extremely complex SQL statements, I've seen some of them, but it takes quite a bit of engineering to attempt to do all the IO we routinely do for transactions.
The IBM midrange (i OS) and mainframe operating systems are also a big part of the success of RPG and COBOL, respectively.
I've always said that if i OS were written today by an OSS team you guys would think it was the second coming of operating systems.