Slashdot Mirror


Join COBOL's Next Generation

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."

62 of 276 comments (clear)

  1. Nothing does by geekoid · · Score: 4, Interesting

    what COBOL does as well as COBOL does it.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    1. Re:Nothing does by Joce640k · · Score: 4, Insightful

      Keeping them employed until retirement age.

      --
      No sig today...
    2. Re:Nothing does by julesh · · Score: 3, Funny

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

    3. Re:Nothing does by Half-pint+HAL · · Score: 2

      Actually, you could probably get Lua to run COBOL programs....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    4. Re:Nothing does by Nerdfest · · Score: 3, Interesting

      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.

    5. Re:Nothing does by Nerdfest · · Score: 4, Insightful

      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.

    6. Re:Nothing does by Anonymous Coward · · Score: 2, Informative

      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.

    7. Re:Nothing does by solidraven · · Score: 4, Insightful

      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.

    8. Re:Nothing does by Nerdfest · · Score: 2

      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,

    9. Re:Nothing does by macraig · · Score: 3, Interesting

      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.

    10. Re:Nothing does by Anonymous Coward · · Score: 2, Informative

      Programs should be readable and understandable by humans. In the end it's humans that maintain software, not the computer. Computers only have to execute code, but we, we have to read code. So a verbose language that conveys all the information explicitely is much better than C or C++ where you're almost constrained to obfuscate by default. That's the nature of those languages. So yes in an e-peen contest, C or C++ may win over COBOL; but start maintaining large software and clarity is paramount. C or C++ programmers wouldn't even recognise that word (clarity).

    11. Re:Nothing does by Minwee · · Score: 3, Insightful

      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.

    12. Re:Nothing does by Nerdfest · · Score: 3, Insightful

      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.

    13. Re:Nothing does by macraig · · Score: 3, Insightful

      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?

    14. Re:Nothing does by icebike · · Score: 2, Insightful

      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.

      --
      Sig Battery depleted. Reverting to safe mode.
    15. Re:Nothing does by SerpentMage · · Score: 3, Insightful

      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.

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    16. Re:Nothing does by mwvdlee · · Score: 4, Interesting

      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.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    17. Re:Nothing does by AlphaFreak · · Score: 3, Informative

      Record (file) handling. To process a record-composed file in C you have to write a lot of boilerplate code (just parsing the records into its components and re-creating the records by parts) requires probably to write a specific function to do that. In COBOL you just declare the structure mapping the physical record and you are done.

      By the way, the languge has all the control structures needed to write decent code since COBOL-81. Before that (COBOL-74) it was a really ugly mess, but the modern COBOL (yes, it has been updated a lot of times) allows to write clean and understandadble code.

    18. Re:Nothing does by azadrozny · · Score: 3, Insightful

      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.

    19. Re:Nothing does by Waffle+Iron · · Score: 2

      but start maintaining large software and clarity is paramount.

      Mathematicians have spent many centuries refining how best to expresses mathematical operations with clarity -- And they sure as hell didn't pick spelled out English verbs in all caps.

      That's not clarity; instead, it looks like that obfuscated legalese from an EULA text box.

    20. Re:Nothing does by Darinbob · · Score: 2

      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 programming constructs late in the game, and both languages are often used with on "dusty deck" programs that were written decades ago or by people who didn't use structured consructs. So most COBOL users are going to run into spaghetti code and have to deal with it.

    21. Re:Nothing does by Anonymous Coward · · Score: 2, Insightful

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

    22. Re:Nothing does by Darinbob · · Score: 2

      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 programmers learned by example from the boss, who learned by example from the boss, who learned by example...

    23. Re:Nothing does by blippo · · Score: 2

      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 defined virtual machine, and in a well defined OS on quite solid hardware.

      Fucking Java is the *new* Fucking COBOL, for the fact that it's running in a well defined virtual machine, and in a well defined environment.

      If you find a 10 year old COBOL program, Java program, and a C++ program, you will be able to compile and run the COBOL and Java program
      more or less on the first try, but the c++ will take a rather long time to get in shape since the toolchain and every single library and include file is changed
      since it last worked...

      Another reason is that hey both seems to attract the different kind of-, but still fucking useless- programmers.

      I think Djikstra nailed main problem with COBOL in 1975;

      -- The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.

      The best counter argument is something like this:

      --COBOL programs with convoluted control flow indeed tend to 'cripple the mind, but meh...

    24. Re:Nothing does by jbolden · · Score: 2

      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.

    25. Re:Nothing does by tripleevenfall · · Score: 3, Insightful

      Sure, and like the article says, learning COBOL might get you a first job. But someone hiring for a Java position might be as likely to take a new college grad who has education in Java over an experienced COBOL programmer, since the worlds are quite different.

      I think the logic holds up as long as COBOL holds up, and as long as you continue to educate yourself and keep yourself relevant.

    26. Re:Nothing does by tripleevenfall · · Score: 4, Funny

      You're about to find out. 2014 is going to be the Year Of COBOL On The Desktop.

    27. Re:Nothing does by dargaud · · Score: 2

      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".

      --
      Non-Linux Penguins ?
    28. Re:Nothing does by lgw · · Score: 2

      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.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    29. Re:Nothing does by LifesABeach · · Score: 2

      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.

    30. Re:Nothing does by bws111 · · Score: 2

      People don't do that because it is stupid. C makes NO GUARANTEES about the layout of structures. If you only have one compiler, and are not sharing your data with any other system you might get away with it.

    31. Re:Nothing does by gargleblast · · Score: 2

      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.

    32. Re:Nothing does by RightwingNutjob · · Score: 2

      The determined Real Programmer can write FORTRAN programs in any language. The determined idiot can make unmaintainable spaghetti in any language. If people can make maintainable assembly code (and for embedded applications, good embedded programmers *do* write maintainable assembly), then a good COBOL programmer can write maintainable and comprehensible COBOL programs. Things like variable naming and jump/goto/label naming discipline are a pain in the ass when you've grown up with C and Java-style scoping rules and curly braces that let you be sloppy with zero cost to legibility or maintainability, but they can be the difference between something that's usable as and something that forces a rewrite each time.

    33. Re:Nothing does by Half-pint+HAL · · Score: 2

      on the desktop? It'll be the year of COBOL for Mobile! Run your infrastructure directly on the phones your employee's bring to the office.

      Many a true word spoken in jest...

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    34. Re:Nothing does by s1lverl0rd · · Score: 2

      Oh, a bit like comefrom in Intercal?

    35. Re:Nothing does by TheLoneGundam · · Score: 2

      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.

  2. This. by mfwitten · · Score: 4, Funny

    This is why we can't have nice things.

  3. The reason it is still used is simple. by mindmaster064 · · Score: 3, Interesting

    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.

    1. Re:The reason it is still used is simple. by Sponge+Bath · · Score: 2

      ...annoying, but not much more than BASIC

      I'm sold!

    2. Re:The reason it is still used is simple. by T.E.D. · · Score: 2

      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?

    3. Re:The reason it is still used is simple. by AlphaFreak · · Score: 2

      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.

  4. COBOL is... by erp_consultant · · Score: 4, Insightful

    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.

    1. Re:COBOL is... by Qzukk · · Score: 2

      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 attempt to be almost but not quite English has made it a read-only language.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    2. Re:COBOL is... by nitehawk214 · · Score: 2

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

      --
      I'm a good cook. I'm a fantastic eater. - Steven Brust
    3. Re:COBOL is... by Anonymous Coward · · Score: 2, Insightful

      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.

  5. Re:Java = the next COBOL by gweihir · · Score: 5, Insightful

    And in how far is Java any less messed up than Cobol is? Java, as used by enterprises today, is an abomination.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  6. Another good point by Anonymous Coward · · Score: 2, Interesting

    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 references to things like punch cards compared to Windows Server 2012 running in VMWare, there's a huge mindset change. There is also a very strict change control process around everything, usually because messing up something on the mainframe knocks out the company's key business operations. (Example: RBS went offline for days because an (offshore) employee messed up a batch scheduling software upgrade and executed a wrong rollback procedure.)

    That's why I think mainframes and COBOL get a bad rap -- they're ancient systems, but only because they work and they're at the core of the businesses that use them. And for the purpose, they're great. Mainframes are designed for maximum transaction throughput and reliability above all else, which is why most people don't use them as a generic computing platform. I'm a systems engineer primarily working on Windows installations, but I'm also flexible and cross-platform enough to understand Linux, UNIX and the other systems our stuff talks to. Because of this, I'm employed -- you wouldn't believe how little effort it takes to stand out in an environment of people who stick to the one system they know. Adding a tool to the tool set isn't a bad thing. I don't know everything about Linux or mainframes, but I can at least ask intelligent questions.

    I can also see why people might shy away from learning COBOL, since the MO for most companies dealing with talent shortages is to offshore everything. However, I'm of the mindset that everything happens in cycles. My company is very much "trailing edge" when it comes to IT trends, and we're just starting to figure out that offshoring isn't the magic answer to software development problems. So, I think the trend is coming back around, just like these newfangled "virtual machines" on Intel processors. Wow, what a concept! Sci-fi type stuff! :-)

    1. Re:Another good point by DutchUncle · · Score: 2

      People have been reinventing mainframes - badly - for years. They just call them "servers" and "clouds" and other euphemisms.

  7. I'm considering this, actually by Anonymous Coward · · Score: 2, Interesting

    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, COBOL doesn't look that bad.

  8. Re:A complicated answer to a simple problem by Minwee · · Score: 3, Funny

    The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence. -- 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.

    By that logic, as a result of off-shoring initiatives, several major US corporations have technically declared war on the nation of India.

  9. COBOL is plainly superior... by istartedi · · Score: 4, Funny

    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.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  10. Re:Nothing does it better by icebike · · Score: 2

    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.

    --
    Sig Battery depleted. Reverting to safe mode.
  11. Again? by Antipater · · Score: 3, Informative

    An identical story was posted back in February. By the same user, no less. So, Mr. Josh Fruhlinger, how much does Eric Bloom pay you to Slashvertise for him?

    --
    Everything is better with chainsaws.
  12. not even C? by ChipMonk · · Score: 2
    From the homepage of OpenCOBOL:

    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?

    1. Re:not even C? by osu-neko · · Score: 3, Insightful

      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...

      --
      "Convictions are more dangerous enemies of truth than lies."
  13. Re:You Can Tell COBOL Was Designed By A Woman by seven+of+five · · Score: 5, Funny

    And a missing period gets you in a lot of trouble.

  14. we need more by Toshito · · Score: 3, Interesting

    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!

    --
    Try it! Library of Babel
  15. good career stability by KernelMuncher · · Score: 2, Interesting

    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.

  16. goto has its place by Chirs · · Score: 2

    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 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.

    1. Re:goto has its place by Darinbob · · Score: 2

      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.

  17. Good. I can use the help. by mnemotronic · · Score: 2

    I'm working on a git client written in COBOL and need help with the Beowulf drivers.

    --
    The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
  18. Re:Hipster COBOL by ebno-10db · · Score: 2

    Call it retro and everyone will want to learn it.