Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Programming

Join COBOL's Next Generation 276

jfruh writes "COBOL, it's finally becoming clear, isn't going away any time soon; there are far too many business-criticial applications written in it that work perfectly well for that to happen. This reality could be a career boon for IT staff. Need to learn the ins and outs of COBOL? Your employer may well pay for your training. Just getting started in IT? COBOL can provide a niche that gets you a first job."
This discussion has been archived. No new comments can be posted.

Join COBOL's Next Generation

Comments Filter:
  • Nothing does (Score:4, Interesting)

    by geekoid ( 135745 ) <{moc.oohay} {ta} {dnaltropnidad}> on Tuesday June 25, 2013 @12:19PM (#44102433) Homepage Journal

    what COBOL does as well as COBOL does it.

    • by julesh ( 229690 ) on Tuesday June 25, 2013 @12:26PM (#44102521)

      This is true. There is no other language which enables programs written in COBOL to run.

      • Actually, you could probably get Lua to run COBOL programs....
      • From the homepage of OpenCOBOL [opencobol.org]:

        OpenCOBOL translates COBOL into C and compiles the translated code using the native C compiler. You can build your COBOL programs on various platforms, including Unix/Linux, Mac OS X, and Microsoft Windows.

        So would that be COBOL running on C?

        • Re: (Score:3, Insightful)

          by osu-neko ( 2604 )
          No. That would be COBOL running on machine code. By the time it's running, compile time (the only time C was involved in the process) is past...
      • COBOL, which is compiled, doesn't need another language to run. It does, in many implementations, require a run-time library to supply common functions which are called by the compiled code - for example, the DISPLAY verb may be implemented as a common subroutine. On IBM mainframes, the run-time library support for many languages is provided by the Language Environment product.
    • Re:Nothing does (Score:4, Interesting)

      by Nerdfest ( 867930 ) on Tuesday June 25, 2013 @12:29PM (#44102557)

      If you mean solving business-related information technology problems in a concise and maintainable way, I think you're very, very wrong. COBOL is a horrible, wordy language. If you mean wearing out developer's keyboards, you are more correct. COBOL is too verbose to be easily legible. I'm of the opinion that there is an ideal level of information density when it comes to conveying the intent of a piece of software. At one end is assembly, and at the other is COBOL. neither are good. C approaches it from one end and probably something like Python from the other. Both are for more usable, maintable, and flexible languages.

      I'm of the opinion that if you enjoy writing code in COBOL you either haven't used anything else or you're a masochist.

      • Re:Nothing does (Score:5, Insightful)

        by Nerdfest ( 867930 ) on Tuesday June 25, 2013 @12:32PM (#44102601)

        I will also add that the reason it's so hard to get rid of is that most software written in COBOl tends to be a tangled mess that can't be easily split up and decoubled, replacing parts with more modern, usable languages. It tends to be an all or nothing venture. It has very little, if anything to do with it being the best language for the job.

        • Re:Nothing does (Score:4, Interesting)

          by macraig ( 621737 ) <mark.a.craig@gmCOMMAail.com minus punct> on Tuesday June 25, 2013 @12:58PM (#44102911)

          It didn't have to be that way. When I was still in school a millennium ago and took my one and only COBOL course, I recall devising a pseudo-structured way of using the language that the instructor had never seen before, yet my code was no less capable than the more typical approach(es). It obviously caught him quite by surprise by his reaction, which I've never forgotten (I've forgotten every detail about my technique). Perhaps it made my code more modular and maintainable.

          • Re:Nothing does (Score:4, Insightful)

            by Nerdfest ( 867930 ) on Tuesday June 25, 2013 @01:08PM (#44103053)

            It may be possible, but you shouldn't have to bend or force the language to make it do the right thing. A language should make doing things the "right" way easy.

            • Re:Nothing does (Score:4, Insightful)

              by macraig ( 621737 ) <mark.a.craig@gmCOMMAail.com minus punct> on Tuesday June 25, 2013 @01:13PM (#44103113)

              Agreed, but the origins of that language predated many theories about what the right way is, and by then I suppose there was so much code in the wild that no one wanted to tackle the matter head-on?

              • Re:Nothing does (Score:4, Insightful)

                by azadrozny ( 576352 ) on Tuesday June 25, 2013 @01:35PM (#44103413)

                You are spot on. If the creators of the Internet knew what it would grow into, they would have designed it differently. Consider the debates and frustration surrounding HTML5 or IPv6. Sometimes you have to declare you have done your best and release it, and then adapt as you learn.

            • Re: (Score:3, Insightful)

              by icebike ( 68054 )

              As long as YOU get to decide what is the right way, there would only be one computer language. Your pet language.

              Look, its pretty clear you are totally ignorant about COBOL, and have maybe looked at a couple programs once, but your pontifications clearly indicate you haven't a single clue.

              • I've worked with everything from machine language and microcode to Ruby. My dislike for COBOL comes from working with COBOL.

            • You don't have to do this. There are modern structured constructs in COBOL. The problem though is that if the program you are working with wasn't written using them then you have to deal with the mess. And there are a lot of COBOL programs written using GOTOs and the like.

              These problems exist in every language, but they tend to be more common in COBOL and Fortran because those are some of the oldest languages around. Thus you have to deal with decades old code that still has to work; plus the programmer

              • plus the programmers learned by example from the boss, who learned by example from the boss, who learned by example...

                This does not go on ad-infinitum. COBOL is younger than I am. Now, get off my lawn!

              • The best use of goto is for an orderly cleanup of resources. If something goes wrong partway through acquiring all the necessary resources to do a task, you just "goto" the appropriate stage of the cleanup. See http://programmers.stackexchange.com/questions/154974/is-this-a-decent-use-case-for-goto-in-c/154980#154980 [stackexchange.com] for example.

                It's also good for breaking out of multiply-nested loops, for checking a bunch of possible error conditions before starting the meat of a procedure, etc.

                • With COBOL you can change the destination of a GO TO on the fly. Some call this self modifying code, but it's more similar perhaps to Fortran's computed GOTO. So you can really get some convoluted spaghetti code this way, much more than if you just had a simple GO TO. Especially if when the program was written in older dialects.

              • by lgw ( 121541 )

                You can also do perfectly structured programming using GOTO instead of for and while loops - because for and while loops are effectively just macros around GOTO.

                I did assembly programming for 5 years, and the programs I wrote were arguably more clearly structured than what I've written since, as without the language helping you it paid to be obsessive about it.

            • It may be possible

              It isn't, unless by "a millennium" he means what the rest of us call a week.

              You couldn't do anything remotely clever with the wanky old version I had the pleasure to work with in the '90s (which, according to its (c) message, was older than I was).

        • Re:Nothing does (Score:4, Insightful)

          by Minwee ( 522556 ) <dcr@neverwhen.org> on Tuesday June 25, 2013 @01:05PM (#44103019) Homepage

          It has very little, if anything to do with it being the best language for the job.

          That depends on what "the job" is. If the job is to implement a completely new, problem-free and infinitely maintainable system for managing financial transactions with no budget or time constraints, then the answer is "No". Actually, it's a much longer answer that starts with "HELL NO" and includes phrases like "If I ever catch", "Then I'm going to" and "With a frikkin' caber, that's what", but the general sense of it is "No".

          If the job is to keep the horrific monstrosity which runs the entire bank lumbering along for another few months while still complying with the latest round of new regulations before it drives you irredeemably mad then the absolute best language for the job is COBOL, because that's what code-thulhu is already written in.

        • Re:Nothing does (Score:4, Insightful)

          by SerpentMage ( 13390 ) on Tuesday June 25, 2013 @01:19PM (#44103185)

          And of course languages like Javascript, Ruby, PHP, and so on don't make tangled messes? Lest we forget Objective C or even C++. The only languages that I would think where most people would agree to that are "clean" would be C#, Java, and Smalltalk. I don't want to get into the functional paradigm because it is not IMO a tangled mess if you understand the paradigm.

          Anyhoo, if messes were the basis of whether or not to adopt programming languages we would not be writing any programs. Ever try to figure out WTF a Java Spring or Java EE app is? Its a bleeding mess!

          The thing is that Cobol applications work! Yes they work, and they perform oodles of calculations without having to do anything major. Let's not forget that at the end of the day most things don't change that much. Thus why rewrite? And the answer, "oh but this is a new shiny toy" does not count.

        • I imagine it's also possible for an artist to make a living doing cave paintings. That doesn't mean I'd want to do it.

          I have a huge amount of respect for Grace Murray Hopper. But technology changes.
          • Admiral Grace was very aware of the current available technologies, and their direction. I think that if you had ever talked with Admiral Grace, you would have found her insight to be very compelling; but I speak from personal experience.
        • Most software written in COBOl tends to be a tangled mess that can't be easily split up and decoubled.

          More modern languages have done little, if anything, to reduce a programmer's ability to create a confused mess. Goto may be gone, but inheritance has tremendous power for cryptic obfuscation, and I have seen way too many cases where a programmer has used this capability to the hilt. Perhaps most frustrating are the cases where a rewrite has ended up no better than the original.

          • More modern languages have done little, if anything, to reduce a programmer's ability to create a confused mess. Goto may be gone ...

            Goto is still with us. One "feature" I have never seen implemented in anything except COBOL is the ability, when calling a subroutine, to specify the start point and the exit point of the subroutine.

      • Re: (Score:2, Informative)

        by Anonymous Coward

        If you mean solving business-related information technology problems in a concise and maintainable way, I think you're very, very wrong. COBOL is a horrible, wordy language. If you mean wearing out developer's keyboards, you are more correct. COBOL is too verbose to be easily legible. I'm of the opinion that there is an ideal level of information density when it comes to conveying the intent of a piece of software. At one end is assembly, and at the other is COBOL. neither are good. C approaches it from one end and probably something like Python from the other. Both are for more usable, maintable, and flexible languages.

        I'm of the opinion that if you enjoy writing code in COBOL you either haven't used anything else or you're a masochist.

        COBOL is a domain specific language. You're a masochist and a fucking idiot if you use COBOL to design an operating system, or a control system for a nuclear plant. COBOL is designed from the start for business applications. And that's what it's good at. The syntax is what it is, but 100 times better to design business programs in COBOL than in fucking JAVA. There's a reason why languages come and go but FORTRAN and COBOL are still there. Think about it.

        • COBOL was breated not to be the perfect language for business, but to be a language that was easy enough for an average 'business-person' that was not a programmer, to write programs. The end result unfortunately was that lots of average 'business-people' wrote software. In general, it ended up being a tangled mess that is still (barely) running many years later and few know how to maintain or replace it. Be careful what you wish for,

          • Re: (Score:2, Insightful)

            by Anonymous Coward

            So... you're saying that COBOL has already been replaced by VBA?

        • by blippo ( 158203 )

          Hi AC.

          I think you have confused the term "domain specific language" with something else. And besides, what's generally considered as a nice language is that it's easy to extend it (using the language itself) so that you can USE it as a DSL. Not so much for COBOL.

          Today, it would probably make more sense to use a modern lisp dialect to write business applications, at least from the DSL point of view, and
          its an even older language.

          Whats keeping Fuckin' COBOL alive is the fact that it's running in a well define

      • Re:Nothing does (Score:5, Insightful)

        by solidraven ( 1633185 ) on Tuesday June 25, 2013 @12:43PM (#44102749)
        Being verbose is often considered bad, yet languages like VHDL and Ada do it as well. The latter two combine it with a very strict syntax. As a result Ada and VHDL code that compiles/synthesizes has a larger chance of working on the first attempt. More keystrokes isn't exactly a problem. I'm not sure about you but my typing speed isn't the limiting factor in writing programs. The days of planning, flow diagrams, etc. are.
      • There is on thing every new COBOL complains about in COBOL: Its too verbose.
        There is one thin that every COBOL journeyman loves about COBOL: Its so verbose and easy to read.

      • COBOL has some features rarely seen elsewhere, except in libraries. A wide variety of data types including built-in fix point and decimal for example. It is also relatively simple, there's no way to do fancy tricks with it like with C, you won't have complex data structures, what you see is what you get and that helps maintenance. Now maybe there are better business oriented languages but they just aren't that popular or portable.

        Of course it has bad stuff too. Like Fortran it only added structured prog

        • by jbolden ( 176878 )

          A wide variety of data types including built-in fix point and decimal for example.

          Structurally that's an integer datatype with a show routine that includes a decimal. Modern languages don't confuse how data is displayed with how it is computed.

          • Come on, how are they going to create the next Y2K fiasco with that kind of thinking.

            • by jbolden ( 176878 )

              Y2K was because of an integer datatype with 2 digits and inconsistent treatment for the first digit being something other than 5-9, there they really did run out of room.

              The next Y2K fiasco is going to be 32 bit timestamps in C...

          • by bws111 ( 1216812 )

            No, it isn't. Your ignorance is showing. Decimal types mean you have decimal data. So you can have two records with EBCDIC/ASCII decimal fields in them, read those records in (without doing ANY parsing or translation of the records, add two fields together and write the results. Excluding the actual IO operation, that can be done in only 7 instructions (PACK, OI (to set the sign) for both operands, ADD PACKED, UNPACK, OI). Note that the compiler is using DECIMAL instructions to do that.

            Which of your '

      • by dargaud ( 518470 )
        Ada is wordy, but for the few months I tackled it I found it powerful, intuitive and very readable. I looked at Cobol source code for sheer kicks and got cold sweat worse than any horror film or girlfriend saying "I'm late".
    • Re:Nothing does (Score:5, Interesting)

      by mwvdlee ( 775178 ) on Tuesday June 25, 2013 @01:19PM (#44103187) Homepage

      It sure does!

      On the other hand, I got out of COBOL programming after some ~12 years because the only thing COBOL does well is what COBOL has done thousands of times before.

      It's a boring platform to develop for; very few interresting (from a technical perspective) projects ever come along.
      Safe and secure life as a developer; yes. Actually enjoying your safety and security; no.

    • It keeps the makers of CapsLock keys in business.

  • The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence. [utexas.edu] -- Dijkstra

    So I say any company that wants to send their employees to a COBOL class should be sent to jail for torture and reckless endangerment.

  • "COBOL, it's finally becoming clear, isn't going away any time soon; there are far too many business-criticial applications written in it that work perfectly well for that to happen.

    Well I guess we can finally fire all the COBOL programmers. Their job is now completed.

    • That is until the hardware dies and business decides to move COBOL to new hardware rather than develop in a newer language.
      • They can simply compile all the COBOL code to the new platform. Since the COBOL applications in question work perfectly well, I assume they are written in a way that is platform independent.
        • Most likely there won't be any major development, but you still need a developer to do it.
        • by jbolden ( 176878 )

          Since the COBOL applications in question work perfectly well, I assume they are written in a way that is platform independent.

          How are those two concepts even connected? That's like saying Since the COBOL applications in question work perfectly well, I assume they are written using lots of variable names with "blue" in them.

    • But then you need to get rid of all politicians, federal, state, county, and city. Because those guys tend to change the rules all the time so that the code needs to be continually maintained. Maybe fire the bosses also, because they keep changing rules or wanting the program to do something new.

  • This. (Score:4, Funny)

    by mfwitten ( 1906728 ) on Tuesday June 25, 2013 @12:31PM (#44102587)

    This is why we can't have nice things.

  • by mindmaster064 ( 690036 ) on Tuesday June 25, 2013 @12:33PM (#44102617) Homepage
    COBOL is one of the few languages that is completely standardized. IO, formatting, everything works the same EVERYWHERE. Certainly, the column nature of coding in the language is annoying, but not much more than BASIC was with it's numbering scheme. As far as the programs that chug through industrial-sized databases go few touch as many records as COBOL does.
    • ...annoying, but not much more than BASIC

      I'm sold!

    • by T.E.D. ( 34228 )

      COBOL is one of the few languages that is completely standardized. IO, formatting, everything works the same EVERYWHERE. Certainly, the column nature of coding in the language is annoying, but not much more than BASIC was with it's numbering scheme. As far as the programs that chug through industrial-sized databases go few touch as many records as COBOL does.

      This comment was found in a time-capsule we buried 35 years ago in 1978, along with a six-pack of Shlitz.

      Sad to say, the beer had gone kinda skunky, but I think the comment is still good, isn't it?

    • Procedural languages are OK for > 90% of needs. You don't really need an OO language nor a fancy framework to read a sequential file and summarize its records to generate a payroll... Oh, and the fixed-column format is optional in the modern COBOL compilers.

    • COBOL is one of the few languages that is completely standardized. IO, formatting, everything works the same EVERYWHERE.

      Hahahahaha!!!! No way. I work in a COBOL conversion shop (simple explanation, anyways) and I've worked with COBOL on several types of machines, and not even all the A series machines act the same with the same code. You would not believe the crazy, undocumented crap that programmers use to make their programs work.

      Sure, the basic "COBOL" language is mostly standardized (once you pick your variant) but real life implementations are not coded that way and everyone manages to find the little things that make

  • They abandoned worshipping the Lords of COBOL a long time ago.
  • COBOL is... (Score:4, Insightful)

    by erp_consultant ( 2614861 ) on Tuesday June 25, 2013 @12:39PM (#44102691)

    not a lot of fun to program in. It's wordy, it's procedural...generally kind of boring. But...it's imbedded in so many mission critical systems. The ERP system that I work on is chock full of COBOL stuff, mainly in the Payroll processing modules. It works, it's really fast, and nobody wants to mess with it. Sure, you could rewrite it in Java or some other language but it represents risk that many companies are not willing to take.

    COBOL programmers are in big demand now and it's only going to grow. I'm not sure how many schools still teach COBOL but I suspect it's not many. So if you can put up with having a little less glamorous coding to do it's a great job opportunity.

    • by Qzukk ( 229616 )

      I feel that COBOL is the exact opposite of Perl. People call Perl a write-only language because you can write code in it that is really, really hard to read and understand. Meanwhile, statements like

      MULTIPLY X BY Y GIVING RESULT

      are easy to read and understand exactly what is happening, but I'll be damned if I can ever remember to write that twisted bit of English without looking it up in a reference (and I use this statement as an example every time I make this point about COBOL). For me, COBOL's att

      • by cdrudge ( 68377 )

        COBOL stands for COmmon Business Oriented Language. It's syntax was suppose to be English readable to allow bean counters, actuaries, businessmen, etc to read, write, or at least understand what it was doing using terminology that they would use.

        • "Make it possible for programmers to write in English and you will find the programmers cannot write in English."

        • Re: (Score:2, Insightful)

          by Anonymous Coward

          Exactly this!!

          My dad programmed COBOL from the early 70's until he retired. He always came back to this point. You get an auditor comes in and wants to really know what your program is doing, he'd actually look at the listing. He wasn't a programmer, he was an accountant, an auditor. He could follow what you were doing without feeling like you were pulling the wool over his eyes. And if you don't think keeping an auditor happy is important, you haven't been audited.

          • by tlhIngan ( 30335 )

            My dad programmed COBOL from the early 70's until he retired. He always came back to this point. You get an auditor comes in and wants to really know what your program is doing, he'd actually look at the listing. He wasn't a programmer, he was an accountant, an auditor. He could follow what you were doing without feeling like you were pulling the wool over his eyes. And if you don't think keeping an auditor happy is important, you haven't been audited.

            That's probably why it's verbose. But it's probably also

  • Come on. Why is this even allowed on /.? The RFA has the email address of the recruiter and is really just a solicitation. The piece on /. is hardly any better.
  • Another good point (Score:2, Interesting)

    by Anonymous Coward

    One of the reasons so much IT outsourcing in mainframe shops is happening is because new workers have little exposure to the mainframe culture. I work in an industry highly dependent on mainframes, but not directly with the technology. However, I do see the fundamental difference between mainframe systems work and Linux/Windows on Intel systems work. For someone who doesn't "get it," mainframes look completely inflexible and definitely a legacy technology. When you're talking about a system that still has r

    • People have been reinventing mainframes - badly - for years. They just call them "servers" and "clouds" and other euphemisms.
      • by blippo ( 158203 )

        True that,

        Whole departments exists, inside or outside companies, just to run sql servers, web servers, java application servers, virtual windows machines, etc etc, that's used just for developing and testing, and to get something done with them, like restoring a database backup from before your script messed it up, you need to file a "work order" and hopefully, some dude, possibly in another country, would find the time, within a couple of days, to restore it for you, because, you know, it's *clearly* cos

    • by blippo ( 158203 )

      Strict change control process you say...

      It's hard to find anyone thats faster than a bunch of old COBOL geezers to rattle out untested code - or rather code that's not been even run even once - into production systems. But I guess they use changeman to do it, so they do at least know *what* code that's currently is running.

    • When you're talking about a system that still has references to things like punch cards ...

      Nothing wrong with that as long as it's been updated to use Virtual Card Decks.

  • by Anonymous Coward

    I've got a pile of various degrees, none in CS, yet I keep ending up coding shit for a living. None of it is all that great - I'm a massive generalist and not a programmer. It's tempting to just get a good intro to COBOL and then dive into it for a career. It's one of those languages that doesn't change much and isn't about to get replaced with the newest and greatest.

    After half of my career switching jobs every 3-4 years, I'm thinking about settling down. Compared to what I've had to code so far in life, C

  • by istartedi ( 132515 ) on Tuesday June 25, 2013 @01:10PM (#44103079) Journal

    COBOL is plainly superior... from an evolutionary standpoint. It propagated and survived. Nevermind that it feeds on the souls of developers. That's irrelevant. Evolution only cares about propagation and survival.

  • COBOL is a hipster programmer's dream!

  • I am sure Data [youtube.com] can chime in on this.

  • Again? (Score:4, Informative)

    by Antipater ( 2053064 ) on Tuesday June 25, 2013 @01:20PM (#44103197)
    An identical story was posted back in February [slashdot.org]. By the same user, no less. So, Mr. Josh Fruhlinger, how much does Eric Bloom pay you to Slashvertise for him?
  • we need more (Score:3, Interesting)

    by Toshito ( 452851 ) on Tuesday June 25, 2013 @01:26PM (#44103289)

    At my work we're just starting a multimillion dollar project, mostly in COBOL, on a mainframe. And I'm not talking about modifying old code, we're developing a new system. So we'll need about 30 new COBOL programmers very soon. It's far from dead!

  • MOVE CORRESPONDING. Try doing that right in any other language. Try figuring out where each different C compiler put your bits and bytes, and what size it made your integers, and what other random changes it made with alignment and ordering. I cannot believe that anyone on /. honestly loves a language that defines which of its behavior is undefined and unpredictable.

    You can write both garbage and poetry in any language. Cobol at least *tried* to make some things clear.
  • by KernelMuncher ( 989766 ) on Tuesday June 25, 2013 @02:24PM (#44104025)
    In the late 90's COBOL consultants were paid big bucks to fix the Y2K (non) problem. Now they get good money for replacing all of the retiring baby boomers. And since nobody in India seems to know the language (and there's zero interest in universities teaching it), I think job security would be excellent. It's a great niche to fill.
  • Until you realize that you have to go back to the world of Packed Decimal and EBCDIC - no thanks!!!

  • I'm working on a git client written in COBOL and need help with the Beowulf drivers.
  • The money better be very, very good.

Every nonzero finite dimensional inner product space has an orthonormal basis. It makes sense, when you don't think about it.

Working...