Reasons to hate COBOL
If you need to parse or manipulate text (eg. HTML) then
COBOL is going to be really irritating. Support for
text manipulation is probably the
weakest, most miserable, part of the language. Web developers will
all hate COBOL for this reason alone (and justifiably so).
If CPU cycles and memory are not limiting factors, then you will
find contemporary languages and frameworks can be a lot more productive.
Your job is to maintain a 30 year old application. You are going to hate
this almost by definition. Since the only surviving 30 year old applications
are probably written in COBOL, you will hate COBOL.
You are attracted to "shiny new things". COBOL isn't shiny or new - and not for you.
Reasons to like COBOL
The core business of the organization you work for is not developing
or delivering computer related services/products (ie. you live on the
liability side of the corporate balance sheet). Then COBOL is good
because it is very stable and probably delivers the lowest cost per
transaction in the industry.
The transaction load you have to process is huge. Non-dynamic, non-object
oriented languages (read classic COBOL) are better equipped to build
high performance, low memory usage transaction processors. This is largely
due to a fairly direct correspondence between a COBOL verb and the
generated machine instruction set needed to implement it.
You want to build applications that will be operational 30 years
from now. COBOL is an evolving language but has a tradition of
hanging onto all of its baggage. This is a double edged
sword - avoids forced and/or costly upgrades (good), but can contribute to some awful code
(not so good - but you can't have it both ways).
Maintenance. Old COBOL code can be (almost always is) ugly but
it can be deciphered and maintained. COBOL is a write/read language (as opposed to
write once then re-write).
Given the heavy emphasis on leveraging frameworks today, I
question whether the resulting code will be "readable" once
the underlying framework is abandoned for the next shiny new thing. If you question
this statement, consider the list
of depreciated elements for the latest Java release. Compare this to the list of obsolete COBOL language elements.
The relative sizes of these lists do not speak well for long term Java application maintainability. I use
Java as an example only - the same observation applies to all recently developed languages and frameworks (yes, I know Java is "old school" to many of you but it is recent when compared to COBOL).
COBOL is not a Swiss Army Knife
COBOL was originally designed for Business Oriented applications. At that time
it meant things like accounting, inventory management and other forms
of records management. COBOL is sill
largely suited for these applications. If your business is heavily
weighted on the processing side of the equation as opposed to the
presentation side, then COBOL is a very reasonable language to be using.
A lot of "bad press" COBOL gets is from people who work in
application domains for which COBOL is not suited and from those who have
never tried to really understand the language (many of whom are academics
with a bias for shiny new things).
And by the way, COBOL is still very much alive and in use. We just don't make a
lot of "noise" about it.