Cobol, the venerable computer language so beloved of Y2K-fearing businesses, has hit 50 years young today, having been invented on the 28th of May 1959 at a meeting of the Short Range Committee at the Pentagon. The news comes from Cobol specialists Micro Focus, which tells us that there are two hundred times as many Cobol …
I remember in 1999 we were set to start our second year of computer science at college. The C programming tutor had some kind of breakdown leaving us with a void in the curriculum. The solution? We all had to learn Cobol for a year instead. It really wasn't the progression from Pascal we were hoping for, and I'm glad to say I have never had to deal with it ever since then!
Happy birthday Cobol.
Alter Cobol to proceed to History
I remember back in 1969 I was sent on a two week course to learn Cobol, and had to pick up 1900 Plan from the teach-yourself books. It should have been the other way around. I can also remember inserting an Alter statement just for the hell of it, but I did comment it very thoroughly at both points.
Pascal? Forget it. I never liked working in a straight jacket.
And I thought cobol.com was a welsh language soap.
I'm one of those odd people that's quite fond of it. :-)
Happy Birthday, COBOL. The only programming language I know that's twice as old as I am.
I had to learn Cobol over 10 years ago as part of my software engineering degree and it was a nightmare. We were using dumb unix terminals and VI editor to write to code. Trying to debug your code was a horible experience. Thankfully the following year we moved onto Visual C++ with interactive debugging. Joy joy!
Hmmm.... Not sure about that el reg. I mean, you did mention in your article that the language 'just works'. That's exactly the reason that it's still here.
If it aint broke, don't fix it!
And, as everyone knows...
A system without Cobol and Fortran is like a chocolate cake without ketchup and mustard.
(in other words: quite alright, really).
And I remember,,,
,,,,getting 100's of errors just because I could never spell "Environment Division" correctly!
y2k fearing indeed
My first proper job after leaving University was converting a banking back office system written in COBOL to use four-digit dates. It was a nightmare!
I remember it ran on a set of RANK-XEROX Sigma 9s (rumour had it that NASA had used these machines to help get man to the moon) and crashed all the time. I know cos I used to get woken in the middle of the night to get it running again.
That should be the "Short Range Committee" not the Sort Range Committee.
And yes, COBOL is a fine example of a computer language the "just works" and which doesn't display the mangled estuary syntax of today's languages.
Happy birthday, old thing.
2022 is my red-letter year
Long live C! Often imitated, never equalled, only occasionally accidentally assigned.
Also, saying a programming language "just works" is a little silly - even Intercal "just works."
Nor did I lol, but the natural progression would have been C or some OoP based language, not Cobol!
So was that:
void curriculum ()
Not Dead Yet
Anyone want to bet whether it will still be being used in another fifty years?
I have a nasty feeling that the answer will be "yes".
BURN IT WITH FIRE!
Loads of systems work on it which seems to indicate that the problem in 99.9% of projects is not the technology, rather the management :-)
As for the guy who couldn't debug it, I think you need to find another career mate. It really wasn't very difficult.
Roll on Cobol.NET!!
And why not!
> couldn't debug
Having said that I do remember the transition from Cobol on VAX/VMS at college, in which the compiler produced reasonably helpful error messages about what might be wrong with your syntax, to that on the Sperry mainframe my first employer had, which produced meaningless garbage about what the contents of what some register might be, and which was absolutely and completely useless for any practical purpose...
The language always struck me as pretty reasonable if a tad verbose: especially after Ansi 85 when you could write nice structured code. Some of the implementations, on the other hand, were dreadful, but you can hardly blame Admiral Hopper and her contemporaries for that... Its easy enough to mistake a piss poor implementation with a fundamantal flaw in the language...
I had to learn it in school and have to admit it is one of the easiest languages to learn to program with.
Assembler in COBOL
At my uni, one of the semester projects was writing an assembler. One of the sharp ones, being ultra-bored, decided to implement it in COBOL, as using LISP or C was "too easy". The impressive part is she actually made it work.
I seem to remember that it was created as a stop-gap until something better was designed.
...and when it was everyone cried: "We've got two years worth of COBOL programs here, we're not going to re-write them!". How things have changed.
I had to write a report "FORTRAN vs COBOL" when I was at uni.
Frankly, I thought they both sucked (for different reasons).
File handling in FORTRAN? ha ha ha that made me laugh until I cried.
Then I tried COBOL. That made me cry until I laughed. The best part was that COBOL is also available in French.
When I discovered the ridiculous salaries that some COBOL prorgammers were on, I couldn't wait to get started out here in the real world!
Dull, Dull, Dull
I appreciate there is such a thing as modern OO COBOL and less slavish adherence to the initial column based programme entry. However, when I had a go with it in the late eighties (at college, so probably still using ancient technology) I was struck by how tremendously, hideously dull it was to code in. I'll grant that it's harder to shoot your foot than in C/C++, but I do wish it was somewhat less tedious.
For the same reason, I harbour a dislike for Pascal. Instead of using something more usable like Turbo Pascal, we used ISO Pascal. It might have been standards compliant, but it was coincidentally useless for any real purposes. I'd bin both of them, hell Logo would have been more effective to learn on (now that's an under-rated language).
For some reason, even Fortran wasn't that nasty to use, even if you did have to be careful what letter your variables started with.
All Hail COBOL
@AC 13:19 GMT
DID YOU READ THAT BOOK "LEARN TO PROGRAM IN COBOL IN 21 DAYS", WHICH OF COURSE… Ooops! Sorry I was in COBOL mode there…
Did you read that book "learn to program in Cobol in 21 days", which of course is a misprint, it should be "21 minutes". The big problem with learning Cobol (on big iron) is not the Cobol but all the other crap that goes with it, JCL, databases (VSAM, IMS, DB2, Ingres, Oracle, and so on), utilities, sorts, FileAID, AbendAid, Source management, etc. etc.
Or are you one of those people that don't like COBOL because it is not trendy enough.
Much nicer to have a PC, where you have total control over everything in front of you on your desk.
COBOL is easy to debug, Micro Focus, AcuCorp and even Big Blue provide excellent debuggers. In fact some companies could lean a lot from CA's Xpediter.
Paris, we've all seen her ENVIOREMENT DIVISION
Cobol.Net is already available - http://www.netcobol.com/products/windows/netcobol.html
SSome things just emerge and then never evolve any further
Crocodiles, sharks, tortoises, dragonflies... Unix, C, and COBOL. These beasts emerge upon the world - plug-ugly, kind of dangerous-looking, and reeking of primitive simplicity - and yet they prove themselves immune to either the forces of evolution or to mass-extinction. What is it about these monsters, that is so damn right, that better-looking competitors can't beat? Any designer would tell you that a fish that cannot breathe, unless it keeps swimming forwards, is a stupid idea but, oddly enough, asteroid-strikes appear to prove otherwise.
Personnally, I'm rather glad that my bank account runs on COBOL, since I don't want my bank account to suddenly go: "Unhandled Exception: System.IO.FileNotFoundException: File or assembly name Balance or one of its dependencies, was not found. Aborting." ... which I rather suspect it would have, if your average Visual Basic wonk had ever been let near it.
And, Jamie, COBOL was one of the earliest .NET languages developed at Redmond (long before C# or VB.NET). I believe the compiler actually generates CIL-runtime code directy - rather like the Eifel.NET one does. The only problem is, that no COBOL programmer is willing to take the pay cuts and job insecurity, that becoming a .NET programmer, would entail.
Back in my student days I was actually able to debug somebody's COBOL program despite knowing f*** all about the language. His program included the line:
RESERVE NO ALTERNATIVE AREA.
which had been chucked out with a barrage of silly (i.e. irrelevant) error messages. He couldn't see the difference between his program and the example in the book. Coming fresh to the scene I could see that he should have been thinking in American English and written
RESERVE NO ALTERNATE AREA.
instead. Once that little change had been done the program worked correctly.
The language is commemorated in Cobol Road (off Fortran Road, with Pascal Close in the next block) in the St. Mellons Business Park at the east end of Cardiff.
@Roll on Cobol.NET
I cut my teeth on Cobol in the late 80s... Submitting programs to compile waiting for it to move up the queue... Waiting half an hour (if you were lucky) for the ops to bother to bring the output printout to the window... Just to find you'd made a typo... Jeeeez
english-like computer languages,...
an oxymoron if ever I heard one. COBOL (and ABAP) are only for thickos that want to pretend to be programmers.
Those that can, do; those that can't, SAP.
Ahh ... fond memories ....
Happy Birthday COBOL .... god it's been a long, long time since I've looked at any COBOL code (1991 IIRC) but I have fond memories of it (apart from having to first hand-write listings on those damn tedious ANSI COBOL coding sheets.
As many others on here have already pointed out - it's a fine, easy language to code in and is generally rock-solid in implementation.
I distinctly remember one project I worked on - rewriting writing a secure UNIX shell in C after it had been written by an in-house developer who had been writing COBOL code for 10 years, then learnt C in a weekend (or so he thought). The whole program listing when it was handed over to me was one single monolithic main() function with jumps to labels all over the place - the poor sod had written his program in as close a manner as he could get C to look like COBOL (including loads of #defines to make the language work like COBOL where it wouldn't naturally flow).
Took me two weeks just to figure out what the bloody thing was doing before embarking on recoding it in a more succinct and C friendly style ...
... happy days.
COBOL is a great business DSL - domain specific language. This is why it succeeds so well in a business environment.
Comparing it with languages that work well in academic, scientific, or other domains is pointless.
I wonder what a 50 year old programming language would look like if strangled to death and turned into a handbag? :)
To be fair to it, my limited experience of the language is that it does a perfectly good job of solving the tedious-but-essential computing problems it was intended to solve and is ridiculously easy to learn, if overly verbose.
Why spend the time and effort to rewrite your legacy code in something "trendier" introducing all kinds of bugs in the process just for the sake of being buzzword-compliant, when in 5 or 10 years' time it, too, will be legacy code and may also be in a no-longer-fashionable language?
@Anonymous Coward, compile-time syntax error vs. COBOL
You do realize that what you wrote is _WHY_ COBOL still hangs around, right? You'll never worry about trying to get a void function to return NULL when you use COBOL.
I remember my first COBOL program, written on a Sperry-Univac 90/40 system. The first time I tried to compile it I had four pages of program and six pages of errors.
COBOL is absolutely excellent for its primary problem domain, which is simple business math and file/database functions. Other than that, please use a different language. (No, it is not OK to write an operating system in COBOL.)
@ Bad Memories
COBOL has had an interactive source code debugger (Microfocus Animator) since before C++ existed. Being given poor tools is not a fault of the language. You would have hated a C++ course is all you had was vi.
>void curriculum ()
> return NULL;
Alas no, I think you will find this won't compute.....
the really important anniversary
You have already missed the 'really important anniversary', the 50th of Algol, that was last year. Pascal is merely an Algol derivative via Wirth's Algol-W.
Love It - Happy Birthday Darling
What a lovely old girl she is.
I remember spending hours writing COBOL programs by hand on paper! How many of these young whipper snapper script kiddies have ever bothered to hand write a program first? This is boring and time consuming I know, but it does allow one to do an old-school technique called 'desk checking' - A vital step in getting code to compile and run first time without bugs. (Yes it can be done, I've done it!!)
Long Live COBOL - I hope she is still around in another 50 years continuing to prove that the likes of Java, C++/C#, Perl, Python and all these other new fangled, fly-by-night, pseudo languages are just passing fads.
-- Now if you'll just pass me my walking frame and coat I'll be off.
I can imagine...
one of those Star-Trek time-travels episodes (original series Enterpise-A) when they transport a 21st century bloke into the ship (by accident, as expected)....
...when the warp-drive reactor is throwing a fit (as usual)...
...and this bloke (a certified Cobol COF), when escorted to brig, passing by Scotty, overhears a conversation and finds out that the code that runs the reactor, is entirely written in Cobol, and he can fix it in no time.
That's the sort of life span I can imagine for Cobol.
Anonymous, for obvious reasons (I don1 want any trekkers retaliation!)
Nothing like hearing a tried and tested technology with deep market penetration and five decades of maturity in real world applications as diverse as banking and shop floor manufacturing systems being rubbished by a bunch of people who last used it to write a piece of course work in some bumf*ck university course.
Almost every criticism I hear of the language is either false (usually born of the complainer's own ignorance) or subjective - I'm particularly impressed by those who complain it is too "wordy", like anyone actually types in this cut'n'paste world. The most damning argument against the language in its own Wikipedia entry was for years a howling joke on the idiot wot rote it, showing he a) didn't know what he was talking about and 2) hadn't read the fine manual to find out.
The last time I looked a Cobol program could be written monolithically, modularly, dynamically linked (we usually didn't bother because static linking makes for faster programs and a compile took only a few seconds on a real computer) or statically linked. It could be written procedurally, which was the usual way people went about it, but: it could also be written in an entirely declarative way. It could be written as a decision/action matrix. It couldn't be written using OO techniques entirely, since that feature was still coming (it had been delayed by a blind alley involving people who thought "C" would make a better Data Processing language and that we wouldn't have any Cobol by 1995 doncha know). That is no longer true.
The compiler I used then (and it has long been superceded by a more modern one) was extremely good at figuring out what problems really were and reporting them accurately, in-line.
Of course, that was on a Unisys Clearpath mainframe running OS2200. If you're going to run a reliable language with mature features well-understood in the business DP world (none of that silly doing currency calculations in floating point variables that the bright young things thought was such a good idea during the "Cobol Out, C In, Baby Out With The Bathwater" heydays of the early 90s), you really should be running it on the Rolls Royce of Operating Systems in a reliable recoverable environment.
It is worth saying that someone once opined at me that perhaps people insisted on viewing Cobol as an IT language during debates on it, when in fact it is a DP language. The reverse could be said for "C" and its bretheren. Thank you Dan for that insight.
@ Peter Kay
The purpose of a programming language is not to entertain the programmer.
COBOL is perfectly suited to the transactional applications it's used for. A non-programmer can read (well-written) COBOL and work out what it's supposed to be doing. Its simplicity and the I/O and file control afforded by JCL means that it's inherently secure. I want my bank account details recorded in an application written in COBOL.
Also, nothing impresses non-IT people more than telling them you were an analyst programmer on mainframes.
What was COBOL for??
I recall being told that the design objective of COBOL was to eliminate programmers (before COBOL, programming for commerce meant Assembler). If that was the case it's a massive failure.
And will get you great jobs at really nice places to work. Nice jobs = nice houses and cars. Nice houses and cars = GIRLS. Yes COBOL can get you laid no matter how geeky you are.
If you haven't learned COBOL yet get to it.
Right on the money.
Half the problem with these newfangled C++ etc is that they have a whole lot of frilly bits that the programmers feel they have to use to prove their geekhood. You know, operator overloading and the like. Unfortunately this gets them into all kinds of trouble that they often don't even realise they are in.
COBOL might be very simple, but that's have the appeal. It is relatively hard to get confused by COBOL.
[Did 2 years of COBOL back in early 80s].
Sister Clamp's definition of Hell
Debugging a COBOL program to a deadline on a 300-baud teletype machine. Decades later and I'm still in therapy.
Over the years ...
Over the years I've often had students ask me "what other programming language should I learn?" Invariably, I reply "COBOL!" ... I have had a lot of email thanking me for that advice. Good COBOL coders are worth their weight in core memory ... Always have been, always will be.
Somewhere, Grace is smiling an evil smile in the way that only she could :-)
Pardon me while I polish the case containing my nanosecond.
 Yes, I know, that's been depreciated over the years, but what hasn't?
"Just works" means a lot
If something would actually work in computing, it's usually a big progress. If C and PHP would "just work" we'd have a lot less problems.
vi not bad. vi plenty good.
If someone thought vi was "hard" they should have used mainframe line editors or cards or tape.
Seriously, the easier life gets for coders the more they complain!!!!
I may be biased
... but it turned out rather well, didn't it?
Fifty years in...
And I hear that some of the applications that started development at that time are now nearly ready!
"For some reason, even Fortran wasn't that nasty to use, even if you did have to be careful what letter your variables started with."
I commend unto Sir FORTRAN 90 which, as well as allowing one the luxury of the IMPLICIT NONE statement, would also let you use identifier names like "soapytitwank" or "hairy_japanese_bastards" without the compiler going postal.
Not that I would ever have done such a terrible thing, of course.