Many state systems run on COBOL, a decades-old computer programming language; there’s just no need to subject people to this. It would be better, more efficient, more impactful, and no more expensive to have the federal government enact its own system, and fewer people would fall through the cracks.
Cobol, eh?
Indeed, as of 2016, the GAO notes that several agencies, such as the departments of Agriculture, Homeland Security, Health and Human Services, Justice, Treasury and VA, reported using COBOL.
Umm:
Most of the blame for that has been piled onto the 60-year-old COBOL language. That’s because the underlying software for many state unemployment systems and the IRS is written in COBOL.
So, bumping the program up from the states to the IRS will mean not using Cobol, eh?
From many federal government agencies to your local bank, COBOL is still in use. An estimated 43% of banking systems and 95% of ATM swipes utilize COBOL code.
“More impactful” => arsehole at work.
Centralise!
Let no conceivable function escape your eyes!
Remember why the good Lord made your eyes
So don’t shade your eyes
But centralise, centralise, centralise.
Only be sure always to call it please ‘efficiency’
That Grace Hopper was one bright bimbo.
Nothing wrong with COBOL.
I always claimed not to trust any language designed after I was born. Which left me with FORTRAN, COBOL and Lisp, I think.
Got a soft spot for C but not sure it’s to be trusted.
jgh, excellent and ironical.
It has come to my attention that most if not all US states use English, a centuries-old and imported language, and pay their welfare in dollars, a centuries-old and much-inflated currency. Time this was fixed, by the Federal Government, who will communicate in legalese and pay in pure new promises. If it ain’t broke, break it.
I used to be amused when I was in Italy to see cashpoints from the Bank of Bologna labelled ‘Bancobol’ (Ban Cobol), but there must have been a takeover because I haven’t see one for years.
There’s nothing wrong with COBOL for back end database, file management and printing reports. It’s what it was designed for FFS, payrolls, IRS and all that bollocks.
There’s nothing more scary than someone who wants to proudly tell you they’ve just taken a million or more lines of code and rewritten them in a new language. Because you know there’s going to be a decade of pain before all the significant bugs have been removed and the thing actually performs at the level of the original.
Mr Sammon should stick to writing about things he knows about. Like being a staff writer on Prospect or wearing glasses. He could write about those instead.
Wait ’til he hears about MUMPS.
Arthur Teacake – I think you’re probably okay with ALGOL, too, no?
“This stuff has been running for 60 YEARS!!”
…
“So it works well then?”
If Cobol dates fro 60 years ago, it probably ran at first on machines with perhaps 4k or 8k words (so bigger than bytes) of RAM which in any case would have been at least a thousand times slower than a laptop, let alone a high-spec desktop. A quick search shows that there are many Cobol compilers for modern computers. Therefore, the language is far from dead, and works unimagineably better now than it did in the early days.
Fortran certainly does.
I first learnt a “language in the Algol family”. Jolly good it was too. I hated it when I later had to use Fortran: primitive rubbish that encouraged bad programming.
Old joke from 1998-9; where a very experienced programmer has been making shedloads of money fixing legacy COBOL code for the “Year 2000 Bug”, and is now both filthy rich and thoroughly fed up. So, he decides that never mind a long holiday, he’s going to be cryogenically frozen for a few decades, with his money earning compound interest, to be woken up when he finally can have the flying car Tomorrow’s World promised him.
So, he lies down in his freezing chamber, and the liquid nitrogen rushes in just like in Demolition Man…
…and he wakes up to bright lights in a hospital, which he was expecting, with cars flying past the window. Result! Except there’s a lot of people around him, looking worried, so he makes a quick check that all his body parts seem to be present and correct…
The leader of the group (everyone’s wearing silver togas and some of them are sitting in hoverchairs) looks at him earnestly. “Michael Smith? Do you feel OK?”
“A bit woozy, but not too bad. What’s the problem?”
“Well, there was a bit of an ironic glitch with your pod, and its autowake code. Turns out your cryogenics company hadn’t checked for Y2K issues… anyway, you were frozen for a long time, and most of your peers didn’t survive being thawed, so for a long time we kept you on ice while we decided what to do. Anyway… we’ve worked out how to wake you, because… it’s June 17 9999. And, I’m told, you know COBOL?”
Software (aka “programming”) is one of these things that seems to cancel rational thought.
Someone who can put up a bookshelf does not suddenly regard themselves as a qualified civil engineer, capable of building bridges or tower blocks.
So why does some journalist, who can offer some amateurish code bashed out as a hobby, suddenly regard themselves as a software engineering expert?
Alternatively: buy me the best paints and brushes, and I will still turn out a blotchy mess, whereas Leonardo had the most primitive tools, yet created the Mona Lisa.
COBOL is just a tool. In the hands of the skilled, it is perfectly adequate for the job it was intended. That it is still around, after all these years, both proves this, and demonstrates the huge past investment in it. Why change such code? Where’s the upside? Even a novice can see the downside.
Any computer language is just a tool and is no better, and no worse than those who use it. F*ckwits can write BASIC in any language. Conversely, skilled software engineers can write quality code in BASIC, though it’ll take much longer. And isn’t worth the effort.
Many of the troubles you see in code today is because of halfwits not understanding what they are doing, or of new ‘improved’ languages that, if not used like unguarded chainsaws, will leak memory, overflow buffers, and generally trash around.
The basics don’t change, but those who say “learn to code” are as ignorant as the journalist that report it.
@jgh: Brilliant! Love the h/t to the finest songwriter going. “The rich folk hate the poor folks…”. Not played much nowadays. “Hearts full of youth, hearts full of truth, six parts gin to one part vermouth”
@Arthur Teacake: Don’t fear C, it is designed to be close enough to the machine that it does EXACTLY what you tell it. Unlike many ‘modern’ languages. If that isn’t what you wanted, look in a mirror. In all my years, I have only ever encountered one genuine compiler fault*: every other problem I have encountered in a lifetime codebashing (in my code or others) was User Error. This does not apply to C++ which is sh*te.
*And it was a free demo compiler: the cheapskate company had never bought a licenced version for commercial usage. When shamed/threatened into doing so, that sorted the problem.
Tim tC
I feel that describing C++ as ‘sh*te’ is being unreasonably kind.
I too use C, and am mocked by my C++-using colleagues. On the other hand, I’m reasonably sure I understand my code. Theirs is unreadable.
go can be fun but for some reason interfaces rub me the wrong way. But goroutines and channels are v. neat and useful. And let you do compile-time-checked things which C doesn’t udnerstand.
@ Tim the Coder
I remember a compiler fault (in 1965): the guys who had written the Algol60 compiler for the new computer at Wilton hadn’t made provision for zero as a real number (only as an integer). After I went back to college for Michaelmas Term my boss wrote to me to tell me that (after she had written to them – she was seriously bright (Girton) – pointing out and explaining the problem) they had recognised and corrected it.
If COBOL is 60 years old why were people still using FORTRAN when I was taught it in the mid-60s?
From what I’ve heard (I gave up programming in order to train as an Actuary in 1967) COBOL was a good language, whereas FORTRAN was ****.
Dearieme,
I agree.
In my career, I’ve used two Algol based languages.
They both were far superior to any of the languages created since.
Assembler has its own niche, and well designed for its intended tasks.
@dcardno: I suppose Algol 60 might qualify, but I never used that.
@Tim the Coder: I don’t fear C, it was my language of choice for my entire career. I haven’t the words to express how atrociously bad an idea C++ is.
john77: COBOL and FORTRAN are domain-specific languages – business for COBOL and maths for FORTRAN. FORTRAN’s syntax was horrible but has got much better since, and is still the go-to language for vector/matrix type problems. Other languages have tried to be all things to all men – C++ is an example and is now rather a mess as a result.
The really major changes over the years that make stuff work better have come under the hood in optimising compilers that turn the code we write into something that executes efficiently on the computer of choice.
Personally, having written and modified code in more than a dozen languages, I’ve preferred C for the bigger stuff that has to run fast but these days I prefer Python for the small projects I find I need to build.
@Rowdy… Not only was she a very smart lady (IBM Fellow, etc. etc.) but is the only computer programmer ever to have had a warship named after her… The “USS Hopper” is an Arleigh Burke-class guided missile destroyer – so those who wish to slag off COBOL, consider yourselves warned! 🙂
I reckon that the downer that the “computer science” mob had and still have on COBOL is that it had the temerity to be designed by a sailor (and a lady sailor at that) rather than an academic computer scientist (though of course, the Blessed Grace was indeed an academic as well).
Personally, having started in software in the late 1960s, initially as a “plugger” on the Univac 10/04 (it wasn’t really “software” as it was done with plugs and wire in a damned-great frame and a fully-plugged program took quite a bit of physical strength in order to slot the frame home on the machine without dislodging any plugs!), the move to assembler seemed like it was “de-skilling the craft” and “3rd generation languages” (COBOL, Algol, ForTran, etc) were a bit of a doddle, but an absolute godsend if you wanted to get much done. I still have a softspot for “C” and have my first-edition “The C Programming Language” by Kernighan and Richie on my study bookshelf.
It’s all “horses for courses” I suppose, but unless you’ve tried APL you ain’t lived!!
Thank you very much, Tim, for bringing these journalistic hit-pieces to my attention. Like any other right-minded person I am disgusted by their open sexism: COBOL was a language crafted by a woman, Grace Hopper. So any criticism on COBOL is an obvious attempt by the patriarchy to discourage women to go into computer science and must be dealt with immediate cancellation of all the perpetrators.
In this case, however, I suggest some kind of leniency: If the cancelled ones learn COBOL (or – ADA, named in honor of Ada Lovelace..) and pledge to make a living by using only these languages – they might be readmitted to human society!
I still dabble in PDP11 assembler. Lovely code. I’ve recently discovered that for a restricted range of values my INTDIV() code gives the wrong results, and am digging into it to track down why. I can bodge it by making it do INT(INT(A)/INT(B)), but I want to fix it properly. I’m hampered by misplacing my “orange book” of mathematical coding algorithms. (I can’t remember what it’s called, just that it has an orange cover.)
Grace Hopper is also famous for a quote about battleships being safe in harbour, but not much use: you had to put them at risk to use them, i.e. nothing ventured nothing gained.
It wasn’t clear if she was speaking before or after December 7th, 1941…
@jgh
Ah, PDP-11……those were the days. Radix40 has made a huge comeback: 3GPP is now riddled with it.
When I referred to users getting it wrong, I should of course have said SS$PILOT_ERROR. Getting rusty.
If ‘The Matrix’ was correct, and we are all living in a simulation, then it can only be running on God’s Wonderful Operating System: VAX/VMS. 13 billion years uptime – and no reboots! (film reference…)
@Tim-t-C..
Re VAX VMS… I heard a lovely story, it was from an old DEC colleague so I reckon it’s true, concerning Y2K and VMS reliability. Apparently Iarnród Éireann (Irish Railways) had an old VAX – probably an 11/780, installed in the late 1970s/early 80s – that controlled most, if not all, the signalling systems. The version of VMS that it ran needed some Y2K patches installing, which they set about doing in 1999. Except, they couldn’t find the bloody thing – they knew it was somewhere because the signals still worked. It had been running, completely untouched, for 18 or 19 years, and somehow the records concerning its location had got mislaid. There was a bit of a panic until finally somebody dug out a tatty old bit of paper and they found it in an old shed in Ballyslumgullion (or somewhere like that).
Multi-programming, multi-tasking and not needed touching for 18+ years! Eat your hearts out Windoze users. 🙂
Further to “The Blessed Grace”… Was she the one who used to carry “a nanosecond” in her handbag? It was a piece of wire 30cm long – the distance that light travels in said period of time – so she could show the unscientific something that had a (somewhat) real-world connection to what we nerds take for granted. 🙂
COBOL is just a tool. In the hands of the skilled, it is perfectly adequate for the job it was intended. That it is still around, after all these years, both proves this, and demonstrates the huge past investment in it. Why change such code? Where’s the upside? Even a novice can see the downside.
Valid point, but the reason for change is that nobody has learnt COBOL for many decades, and active programmers are therefore a (sadly) dying breed.
@Chris Miller… It’s always struck me as odd that COBOL, which for decades was one of the most widely-used programming languages, has never been taught in computer science courses, they instead appearing to prefer rather “blind-alley” languages such as Pascal. In the 50-odd years I’ve been in the industry I’ve only ever met one contractor who made a living from writing Pascal. I’ve met hundreds who’ve done so from COBOL. Despite it’s continuing use on “big iron” where it (still) virtually runs the world’s financial systems, no academic thinks it worth teaching.
But what do I know? I’m just a retired (moderately wealthy) dinosaur.
@ Tractor Gent
When I was young FORTRAN was used for the book-keeping sort of accounting: it was not designed for mathematics. But the *big* problem was that it was designed around the functionality of IBM machines rather than the needs of programmers [which is its format was f(y)=x instead of x=f(y), something that I always found, at best, irritating].
The biggest issue I have with COBOL is the file formats, and the interface restrictions. COBOL flat files are in fact crap to deal with if you want to mine data – so much so that several COBOL systems I know that are still running have special extracts that run periodically (hourly/daily/weekly etc) to dump huge amounts of data into something actually designed as a database – like PostGRES as a freeware example.
One of the real benefits of COBOL (by todays standards anyway) is that it is parsimonious with data, and back in the day when MB disks were expensive, that made sense. Now, with multi GB SSD’s at pretty reasonable prices, you simply do not need to pack your data so well – be expansive so you an actually use it in real time. Same with RAM, COBOL can run in titchy little allocated spaces, but that’s no longer the virtue it was when RAM was $$$ per MB. When your middle of the road server comes with 32 cores, 512 GB of RAM, 16 TB of SSD, and fits in a 2 U chassis with minimal cooling, being efficient in olden times terms is just not the virtue it was.
So as you might guess, I’ve used COBOL programmes, and some are still running – but they are being converted (carefully !) to use a JVM front end and PostGRES backend. On our modern hardware, it is as fast, and the new system is a hell of a lot better designed as an interface, and ALL of the data is available to the myriad of tools that can use SQL Queries as a source.
So, it’s been extremely useful, but there are better alternatives now, especially if you need access to the data via a variety of tools.
COBOL can handle database extensions – most of its implementations in the banking world (and in business more generally) are interfacing with DBs (some of them even ‘relational’), not flat files.