Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Don't Count Cobol Out

Posted by ScuttleMonkey on Fri Sep 19, 2008 06:25 PM
from the great-disturbance-in-the-force dept.
Hugh Pickens writes "Although Turing Award-winning computer scientist Edsger Dijkstra once said, 'the use of Cobol cripples the mind; its teaching should, therefore, be regarded as a criminal offense,' Michael Swaine has an interesting entry to Dr. Dobb's Journal asserting that Cobol is the most widely used language in the 21st century, critical to some of the hottest areas of software development today, and may be the next language you'll be learning. In 1997, the Gartner Group estimated that there were 240 billion lines of Cobol code in active apps, and billions of lines of new Cobol code are being written every year. Cobol is a key element in the realization of modern distributed business software architecture concepts — XML/metadata, Web Services, Service Oriented Architecture — and e-business."
+ -
story

Related Stories

[+] Cobol Job Market Heating Up 288 comments
snydeq writes "Developers seeking job security in the years ahead could find an unlikely edge in Cobol. According to an InfoWorld report, demand for Cobol skills is surging, with salaries on the rise. More importantly, the short supply of offshore Cobol programmers and the fact that mainframes aren't going away anytime soon are spurring longevity for big-iron skills, with many companies looking to hire in-house Cobol pros to bridge mainframe Cobol apps to the rest of the enterprise. The report provides further evidence that Cobol may indeed be primed for a comeback, with new kinds of Cobol integration jobs emerging to prove old-guard skills are critical to some of the hottest areas of software development today."
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • Another one? (Score:5, Insightful)

    by AKAImBatman (238306) * <akaimbatman@ g m a i l . com> on Friday September 19 2008, @06:25PM (#25079261) Homepage Journal

    Edsger Dijkstra once said, 'the use of Cobol cripples the mind; its teaching should, therefore, be regarded as a criminal offense,'

    Dijkstra was not known for being conservative in his statements of opinion. His "GOTO considered harmful" essay did a lot of good, but it also did quite a bit of damage. To the point where we ended up with a variety of "considered Harmful" Considered Harmful [meyerweb.com] essays.

    (I wonder if ""Considered Harmful" Considered Harmful" Considered Harmful is soon to follow? Oh wait. That already happened [purdue.edu] in '87.)

    A more conservative viewing of COBOL would show that it held a useful place in history, but is now antiquated. You'd need to be extremely conservative to think that COBOL has a place for growth in the modern world.

    ...

    Oh snap. We got another one.

    In 1997, the Gartner Group estimated that there were 240 billion lines of Cobol code in active apps, and billions of lines of new Cobol code are being written every year.

    Let's be realistic here.

    1. 1997 was 11 years ago
    2. Everyone was preparing for Y2K
    3. Those billions of lines of code were often replacing billions of lines of coded that were removed

    As someone who once worked with mainframes, I can tell you that COBOL isn't dead. However, it's not exactly thriving, either. Legacy systems do their jobs well, so there is little reason to replace them. Instead, many companies use technologies like Java->CICS connectors to bridge the gap between old and new. But that doesn't mean that anyone is going to be developing "millions of lines of COBOL".
    Quite the opposite, in fact. Business moves more quickly today than in any period in history. And with business moving so quickly, companies find they need to develop new aspects to their businesses. Those new aspects often take the form of new opportunities to develop new software.

    If anything, I think COBOL is still hanging on because the mindset for technology is still external facing. Remember the Dot Com Boom? Well, one of the side effects was that technology shifted from optimizing internal operations to interacting with customers directly. Which is not a bad thing, except that internal operations shouldn't be neglected. Thus I see a lot of companies with inefficient internal procedures because they have not invested in proper internal technology infrastructure. This has left a niche where old COBOL programs are nursed along despite a growing amount of manual work for employees at many companies.

    Wouldn't it be nice if technology could solve their problems? Well, it can. All we need is someone to make the investment.

    With the economy going bust at the moment, I have a feeling the pendulum is going to swing back the other way. Companies are going to need to tighten their belts and become more competitive on price. Which means that they need more efficient operations. With the massive advancements in technology and ensuring code quality in the last 10 years, I fully expect that companies will soon have systems every bit as solid as their COBOL mainframes. Except they will be designed with more rapid change and flexibility in mind.

    • by schwaang (667808) on Friday September 19 2008, @06:40PM (#25079515)

      Gov. Schwarzenegger ordered a cut in pay to California state workers, and was told that it would be impossible to implement because the payroll system is in Cobol [sacbee.com] and nobody can touch it.

      Sounded like political bull to me, but then again...

      • by guyminuslife (1349809) on Friday September 19 2008, @07:02PM (#25079735)
        FYI: When he was reprogrammed by John Connor, it was in COBOL.
        • by red_dragon (1761) on Friday September 19 2008, @10:36PM (#25081661) Homepage
          000100 IDENTIFICATION DIVISION.
          000200 PROGRAM-ID.     KILL-SARAH-CONNOR.
          000300
          000400*
          000500 ENVIRONMENT DIVISION.
          000600 CONFIGURATION SECTION.
          000700 SOURCE-COMPUTER. SKYNET.
          000800 OBJECT-COMPUTER. T-800.
          000900
          001000 DATA DIVISION.
          001100 FILE SECTION.
          001200
          100000 PROCEDURE DIVISION.
          100100
          100200 MAIN-LOGIC SECTION.
          100300 BEGIN.
          100400     PERFORM UNTIL SarahConnorIsDead.
          100500         FIND SARAH CONNOR.
          100600         SHOOT SARAH CONNOR.
          100700     END-PERFORM.
          100800 MAIN-LOGIC-EXIT.
          100900     EXIT.
      • by electrictroy (912290) on Friday September 19 2008, @07:24PM (#25079995)

        Dear younglings (or oldlings):

        If you want a REAL challenge, forgot cobol. Try programming an Atari 2600 gaming console. You have just 128 bytes of RAM to create a playable video game. (No that was not a typo... 128 bytes.)

        I tried it once.
        I gave up.
        It gave me new respect for the original Atari geniuses who created playable versions of Space Invaders, Missile Command, Cosmic Ark, and Jr. Pacman, and turned a cheap console into the #1 system of its day (1977-to-1984).

              • The 2600 only has TWO sprites. The missiles and the ball are 1-bit graphics and thus aren't really counted as "sprites". So there are 5 movable objects. Then there's the playfield. The playfield plots rather long lines (4 pixels per bit IIRC?) at fixed locations. Of course, there wasn't enough memory to store an extra 20 bits to fill the screen. That would be too easy. Instead, the [i]same bits[/i] were reused to draw the second half of the scanline. You could have the playfield repeat or you could have it mirror the bits. But if you wanted to actually have a full-width playfield, you had to "race the beam".

                And by "race the beam" I mean that you would time the processor cycles just right so that you would replace the bits in the registers immediately after they were written to the screen. Since you were working with only 2 1/2 bytes, and you could only write a full byte, that became somewhat challenging. Especially since the 6507 CPU was clocked at 1/3 the speed of the TIA chip. For every three pixels plotted, you'd get one CPU cycle. To add insult to injury, even the shortest instruction still used 2 CPU cycles. And God help you if you crossed a page boundary while reading or writing memory. The extra cycle you incurred would be enough to throw off the entire program and cause nothing but garbage to get written to the screen!

                Making things even more difficult was the way you moved sprites around. There was no way to say "show this sprite at location X". Instead, you had to use one scanline to mark the approximate pixel location of the sprite (remember, 3 cycles per CPU clock), then use the location counter function to advance the position forward or retard it backward by a few pixels. And by a few, I mean 0-3.

                As a result, you had to become a master at timing everything. You counted the cycles, you watched the memory locations, and you figured out how to beat the machine at its own game. Which (oddly enough) is more or less how the system was designed to be used. By the end of the 2600's lifetime, developers had pulled incredible graphics out of the system. Some were done with the assistance of special cart hardware, but most of it was simply the ingenuity of the developers.

    • Re:Another one? (Score:5, Interesting)

      by number6x (626555) on Friday September 19 2008, @06:46PM (#25079569)

      I absolutely agree. There is a lot of new COBOL being written, but it is usually done to enhance existing systems.

      I am currently on a project at a major insurer on a system that is about 90% COBOL. Over the nextre year most of the Batch functionality will be replaced with smaller Real-time enabled called routines running as headless transactions in a CICS region.

      The code base will be greatly reduced because the majority of the field validation is being moved into the new front end web app from the old COBOL based CICS green screens and the Nightly batch routines. The COBOL code will just wait for messages to show up over the Queue and either update, create, read or delete things in DB2.

      The software system is really pretty robust for a Mid-80's era design. It has no central database, each separate portion of the company processes transactions in a distributed peer to peer fashion. Quite advanced for mainframe systems of any era let alone when PC's were just breaking into the 16 bit cpu and greater than 640 k era.

      Mainframes are much cheaper now as well. The models produced by IBM today run on air cooled power PC CMOS design chips and start in the $300K range (and go way up). Paying for comparable computing power on an Intel based platform would cost less, but if you start demanding the 9 nine's of uptime that mainframes deliver the cost of the high availability Intel based machines goes way up and you get into the $250K range.

      People used to believe that 'network' computing would kill the mainframe. Now the mainframe is just a part of the network.

        • Re:Another one? (Score:5, Interesting)

          by plover (150551) * on Friday September 19 2008, @10:30PM (#25081621) Homepage Journal

          Yes and no. In the financial industry, for example, COBOL mainframes hang on primarily because their reliable.

          BS. In the financial industry COBOL mainframes hang on because they're PAID FOR.

          Almost. The mainframes are definitely not paid for (we continue to lease and upgrade our mainframes), but the COBOL code is.

          Mainframes hang on because they have a huge legacy base of working code. Replacing all that is seen as a giant expensive effort for no immediate gain. And because we have more and more work to do with that data, we keep adding more and more code to the legacy base.

          It'll take a mandate from on high to get us to stop adding to the morass. And that's not forthcoming, because honestly the COBOL work is still as cheap as anything else, especially for the giant record-oriented processing work that we ask of the beasts. They may not be glamorous, but their ugliness is well understood, and has a stable price tag.

  • BSG (Score:4, Funny)

    by HTH NE1 (675604) on Friday September 19 2008, @06:28PM (#25079327)

    Long Live the Lords of COBOL.

  • Best Part (Score:5, Insightful)

    by Gat0r30y (957941) on Friday September 19 2008, @06:33PM (#25079387) Homepage Journal

    It may seem surprising that it takes any programming at all to implement a salary change in a payroll system, but a commenter on Slashdot said it was at least plausible, and that's good enough for us.

    I think this alone should be enough to discredit the author.

  • ROI (Score:5, Insightful)

    by plopez (54068) on Friday September 19 2008, @06:34PM (#25079401)

    What many people don't get is that a good business person goes after ROI. If you spend money on something, you want to get money out of it. Squeeze every dime until it screams (which I respect, BTW). Ripping out something just because it isn't cool doesn't play. Enhancing or building on top of it when there is a good business case does play. If it ain't broke, don't fix it.

    Having to upgrade every 3-5 years means no ROI. This is a great argument against closed source proprietary vendors.

    BTW, there is OO COBOL out there. And FORTRAN 95 is OO as well, which I am ramping up to do a project in soon (I hope).

    • Re:ROI (Score:4, Interesting)

      by Darkness404 (1287218) on Friday September 19 2008, @07:01PM (#25079717)
      The problem with COBOL is that it isn't flexible. I have heard of many businesses having to rewrite many lines of COBOL in order to do simple things such as payroll changes, etc. Also, COBOL isn't very quick to write, what can be done in 50 lines of COBOL can be done in 30 lines of C, and about 20 lines of Python or Java.
      • Re:ROI (Score:5, Insightful)

        by hey! (33014) on Friday September 19 2008, @08:03PM (#25080469) Homepage Journal

        Well, that's a matter of being in a hurry go get the program out the door. There's lots of parameter input through the compiler going on. Always has been.

        I personally like terse languages, but I think coupling is a bigger issue. Fifty lines of self-contained COBOL are easier to understand than twenty lines of highly coupled Python that depends on assumptions spread far and wide in the system.

        One of the reasons that so many COBOL systems remain is that they were written in a day when most tasks ran top to bottom. It was before the "event loop" became a familiar pattern to most programmers. In a sense, it shows how reusability can shoot you in the foot (there's few worthwhile tools that can't be dangerous some of the time). Back in the day the vast majority of programs had well defined input, performed a well characterized calculation on that input, and produced a well defined output. Now consider something that is a component in a framework. It has to be damn well conceived because it's meant to operate in situations the designer has never even conceived of.

        So, I'll bet that the COBOL that survives is stuff which does something that is clearly defined, simple, and useful. Why convert it to Java if it works fine and is part of a large body of software that works fine?

      • Re:ROI (Score:5, Interesting)

        by geekoid (135745) <`dadinportland' `at' `yahoo.com'> on Friday September 19 2008, @08:21PM (#25080621) Homepage Journal

        Anecdotal.
        Properly written COBOL is as flexible as anything else.
        Badly written COBOL isn't flexible--just like every other language.

        "COBOL isn't very quick to write, what can be done in 50 lines of COBOL can be done in 30 lines of C, and about 20 lines of Python or Java."
        and 1 line in perl.

        Where do you get your numbers. I can do things in 20 lines of COBOL that would take 100's of lines in C.And it performs faster then those languages. When you are doing millions of financial calculations and hour, you need reliability and rock solid performance.

  • No way (Score:5, Insightful)

    by OpenSourced (323149) on Friday September 19 2008, @06:44PM (#25079539) Journal

    and may be the next language you'll be learning

    Just impossible. Basically because it was the second language (after FORTRAN) that I learned. I don't really understand the fuss about COBOL. Never found it either much worse or much better than other languages. The thing to remember about COBOL is that it was developed to solve a specific kind of problems. Today we would call it a Domain-Specific Language. And that kind of problems it solves with relative straightforwardness. Most of the critics I see of COBOL are for trying to use it as a general-purpose language. I mean, you don't try to write a text editor in PL-SQL, even if you probably could. And nobody criticizes PL-SQL for that reason.

    So COBOL is outdated and verbose. True. So what. It's been years since a wrote a line of the beast, but I wouldn't have a problem to start working with it tomorrow. Also, as the set of problems that it was designed to solve was reduced, it as very pliable to being automatically generated.

    So, a language is a language, all have their problems and advantages. Me, I care much more about the size of my screen or the strength of the air conditioning in my workplace than about the particular dialect that I have to program this week.

  • by Tumbleweed (3706) * on Friday September 19 2008, @06:44PM (#25079541) Homepage
    000100 IDENTIFICATION DIVISION.
    000200 PROGRAM-ID.     HELLOWORLD.
    000300
    000400*
    000500 ENVIRONMENT DIVISION.
    000600 CONFIGURATION SECTION.
    000700 SOURCE-COMPUTER. RM-COBOL.
    000800 OBJECT-COMPUTER. RM-COBOL.
    000900
    001000 DATA DIVISION.
    001100 FILE SECTION.
    001200
    100000 PROCEDURE DIVISION.
    100100
    100200 MAIN-LOGIC SECTION.
    100300 BEGIN.
    100400     DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
    100500     DISPLAY "NO THANKS!" LINE 15 POSITION 10.
    100600     STOP RUN.
    100700 MAIN-LOGIC-EXIT.
    100800     EXIT.
  • by extrasolar (28341) on Friday September 19 2008, @06:44PM (#25079549) Homepage Journal

    Are you wading the waters to determine how palletable COBOL would be in your buzzword soup? Web 2.0 COBOL cloud computing does have a ring to it. Old is the new "new".

  • by Waffle Iron (339739) on Friday September 19 2008, @07:06PM (#25079789)

    In 1997, the Gartner Group estimated that there were 240 billion lines of Cobol code in active apps, and billions of lines of new Cobol code are being written every year.

    The report neglected to mention that 239.9 billion of those lines were boilerplate headers and math operators spelled out with English verbs.

  • by david_thornley (598059) on Friday September 19 2008, @07:21PM (#25079971)

    Noooooooooooooooooooooooooooooooooooooo!!!!!

    What I got when I tried to post the original:

    Filter error: Don't use so many caps. It's like YELLING.

    So what do you do when yelling is appropriate?

  • by doti (966971) on Friday September 19 2008, @07:28PM (#25080059) Homepage

    "billions of lines of new Cobol code are being written every year"

    that accounts two hello worlds, and one program that shows the first 1000 fibonacci numbers.

    • Re:Wasn't BASIC (Score:5, Informative)

      by VGPowerlord (621254) on Friday September 19 2008, @07:10PM (#25079833) Homepage

      No, I just switched his COBOL quote out for the BASIC one on my whiteboard at work on Monday.

      The BASIC one is

      It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

      See: Wikiquote [wikiquote.org]