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."
Nothing does (Score:4, Interesting)
what COBOL does as well as COBOL does it.
Re:Nothing does (Score:4, Funny)
This is true. There is no other language which enables programs written in COBOL to run.
Re: (Score:3)
Re: (Score:2)
Actually, you could probably get Lua to run COBOL programs....
Huh? How would that work? Lua is pretty cool, but this is not only about interpreting the individual instructions.
Re:Nothing does (Score:5, Funny)
You're about to find out. 2014 is going to be the Year Of COBOL On The Desktop.
Re: (Score:3)
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... [veryant.com]
not even C? (Score:3)
So would that be COBOL running on C?
Re: (Score:3, Insightful)
Re: (Score:3)
Re:Nothing does (Score:4, 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.
Re:Nothing does (Score:5, 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.
Re:Nothing does (Score:4, 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.
Re:Nothing does (Score:4, 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.
Re:Nothing does (Score:4, 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?
Re:Nothing does (Score:4, 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.
Re: (Score:3, 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.
Re: (Score:2)
I've worked with everything from machine language and microcode to Ruby. My dislike for COBOL comes from working with COBOL.
Re: (Score:3)
Re: (Score:3)
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
Re: (Score:2)
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!
goto has its place (Score:3)
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.
Re: (Score:3)
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.
Re: (Score:3)
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.
Re: (Score:2)
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)
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)
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.
Re: (Score:2)
I have a huge amount of respect for Grace Murray Hopper. But technology changes.
Re: (Score:3)
Re: (Score:2)
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.
Re: (Score:3)
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)
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.
Re: (Score:3)
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)
So... you're saying that COBOL has already been replaced by VBA?
Re: (Score:3)
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: (Score:2)
Yes, but like a few other languages, COBOL makes writing bad code easy. A good language should make writing *clean* code easy.
Re:Nothing does (Score:5, Insightful)
Re:Nothing does it better (Score:3)
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.
Re: (Score:3)
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
Re: (Score:3)
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.
Re: Nothing does (Score:2)
Come on, how are they going to create the next Y2K fiasco with that kind of thinking.
Re: (Score:2)
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...
Re: (Score:2)
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 '
Re: (Score:3)
Re: (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++ p
Re: (Score:3)
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.
Re: (Score:2)
Mathematicians have spent many centuries refining how best to expresses mathematical operations with clarity by hand.
FTFY. Spend all day typing up proofs on LaTeX and then tell me that's the optimal notational system (I know other systems for typing math exist, but they all take a while).
Re: (Score:2)
Verbosity isn't better for humans. Humans can only retain and manipulate fairly short lists which means the number of things in any block of information has to be small. The more things the more levels need to be in the hierarchy.
Look at human languages. The density of Perl came from just starting to import even some of the density features of human language into computer languages. So no. If computer languages were more like human like them to be they would:
a) Take much longer to learn
b) Have tremen
Re: (Score:2)
Yes, COBOL is wordy, but for the most part you can accomplish the same thing in the same number of lines. Unless of course you write C or C++ where you are packing as much as you can into a line. Yes, I wish I could do "running_total =+ current_val" instead of "compute running-total = running-total + current-val", or do "last_val = current_val" instead of "move current-val to last-val". My real issue being 'verbose' is when it causes extra lines, which makes logic harder to follow.
ADD CURRENT_VAL TO RUNNING_TOTAL.
Which doesn't excuse 1001 other ways of inducing COBOL inflicted carpal-tunnel syndrome, but at least there's that.
Although one of the most horrible programs I ever saw included a 3-page "IF" statement. Since the "ENDIF" for the original COBOL is a miniscule dot, that's just a disaster looking for ways to happen.
Re:Nothing does (Score:5, 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.
Re: (Score:2)
It keeps the makers of CapsLock keys in business.
Re:Nothing does (Score:5, Insightful)
Keeping them employed until retirement age.
Re:Nothing does (Score:4, 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.
Re: (Score:2)
Re: (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, i
Re: (Score:2)
Nah, you can do it just as trivially in C, just make a struct mapping the physical record just as in COBOL. People often don't do that, but that's people for you.
Re: (Score:3)
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.
Re: (Score:2)
Ya, but try to find a PL/I compiler that runs on a wide variety of machines and operating systems, or a significant number of PL/I programmers.
A complicated answer to a simple problem (Score:2)
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.
Re:A complicated answer to a simple problem (Score:4, Funny)
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.
By that logic, as a result of off-shoring initiatives, several major US corporations have technically declared war on the nation of India.
Works perfectly well? (Score:2)
"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.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
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.
Re: (Score:2)
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)
This is why we can't have nice things.
The reason it is still used is simple. (Score:4, Interesting)
Re: (Score:3)
...annoying, but not much more than BASIC
I'm sold!
Re: (Score:3)
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?
Re: (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.
Re: (Score:2)
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
Computers protest at being forced to run COBOL (Score:2)
COBOL is... (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.
Re: (Score:3)
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
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
Re: (Score:2)
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.
Re: (Score:3)
"Make it possible for programmers to write in English and you will find the programmers cannot write in English."
Re: (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.
Re: (Score:2)
That's probably why it's verbose. But it's probably also
An advert, not even thinly veiled (Score:2)
Another good point (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 r
Re: (Score:3)
Re: (Score:2)
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
Re: (Score:2)
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.
Re: (Score:2)
Re: (Score:2)
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.
I'm considering this, actually (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, C
COBOL is plainly superior... (Score:5, 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.
Hipster COBOL (Score:2)
COBOL is a hipster programmer's dream!
Re: (Score:3)
Call it retro and everyone will want to learn it.
ask an ANDROID (Score:2)
I am sure Data [youtube.com] can chime in on this.
Again? (Score:4, Informative)
we need more (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!
Object-oriented (Score:2)
You can write both garbage and poetry in any language. Cobol at least *tried* to make some things clear.
good career stability (Score:3, Interesting)
Sounds interesting.... (Score:2)
Until you realize that you have to go back to the world of Packed Decimal and EBCDIC - no thanks!!!
Good. I can use the help. (Score:3)
The very definition of a soul destroying job. (Score:2)
The money better be very, very good.
Re:Java = the next COBOL (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.
Re:You Can Tell COBOL Was Designed By A Woman (Score:5, Funny)
Re: (Score:2)
People always say Java is the next Cobol. I program in Java, so I guess I already joined the next COBOL gen?
And it is your duty as a Java programmer to prevent this prophecy from becoming true. Even if it means destroying Java when it's time comes.