I'm sure there is good government software out there, but there are plenty of showcases of the opposite (especially since these are systems that NEED to work).
I'm sure there is good government software out there, but there are plenty of showcases of the opposite (especially since these are systems that NEED to work).
My first son is named Christopher, and we realized right away that there is a 10 character first name limit in a ton of systems almost from day 1 - calling my insurance company, the automated system asked "Are you calling about... Christophe?"... in a French accent, which was hilarious.
My compiler started out with those, but I quickly realized that there were only two actual limits:
1. allocated memory
2. stack size
It turned out to be much less code and many fewer error messages to just detect out of memory and blowing up the stack.
Limits will be there whether you standardize minima for them or not.
For instance, no C compiler will handle a function with any number of parameters; as you try test cases with more and more parameters, eventually they will all crap out, right? If for no other reason, than memory.
So then if you don't have anything in the standard about this (like the ECMAScript standard doesn't, for instance) you have to conclude that all those compilers are nonconforming.
But if you have it in the standard that a conforming implementation must handle functions with 128 parameters, then those implementations which crap out at over 128 are spared from being declared nonconforming. Only those which crap out at 128 parameters or fewer have a conformance issue.
Limits settle questions. The user reads the spec and then has confidence they can have 4095 characters in a literal which will be portable to anything calling itself conforming. The implementor reads the spec and then has confidence that their implementation doesn't have to handle more than 4095 characters in a literal in order to handle maximally portable programs. There are goalposts firmly in the ground.
It can be useful for an implementation to optionally diagnose when a minimum limit is exceeded, even if it allows for much more. For instance, to tell the user they are using a larger character literal than 4095. This helps the user prepare a portable program that will work in other implementations.
If a compiler has to work with some object file format which allows only six character symbol names (with case being indistict), there is nothing that can be done; but there is little reason to impose such a stringent limit if the underlying linker technology has a much more lenient one.
I think C90 still made that 6 character the minimum limit; a conforming C implementation of C90 was not required to accept a program which makes two external definitions that do not differ in the first six characters of the name, ignoring case.
In those days, it would have been useful to have a warning if you're using longer identifiers, or if your identifiers are not unique in the first N characters.
C99 raised a bunch of these limits, including that one; it became 31 characters. No mention is made that case is indistinct; it must be distinct.
The limit is still there; use 32 and your program is not strictly conforming to C99.
The way to make a profit on government contracts:
1) Underbid
2) Find every possible use case that’s OBVIOUSLY needed, yet not in the specs
3) Leave them unimplemented
4) Charge through the nose for the extra work.
The system has already been paid for and put to production. It’s too late for the buyers to back out, lest they be out both money and face
They thought that the next computer system would be better, and when they re-wrote it for the new machine, they'd be able to fix the problems they found, in about 3 years or so. They certainly didn't expect it to still be running in the 1970s or 1980s, let alone in 2021.
IBM broke everything when they introduced backwards compatibility. It saved a ton of time, in the short term, but everything before that point was frozen, and the technical debt it caused has never been paid.
To be a US resident, you must be known to the government. To leave, the government will tax a percentage of your wealth. Try to tell the government to pound sand while remaining, and they can bring the full legal weight of their monopoly on force against you.
The difference in scale of harm between what CVS is capable of versus the government means we should have no issue with holding government to a much higher standard, And be proactive in pointing out when it falls short.
That decision probably dates back decades and was based on the limited amount of space on a 80 column punch card. And as the system evolved past punch cards, no one bothered to update the spec because "it's always been 10 characters, if we change it now, something might break"
The limits have probably been in place for 40+ years and nobody wants change it. Or maybe nobody knows how. It's much easier to tell them to abbreviate their name as "Chris" and move on.
Not sure what did go through, but I'm sure that "Christofer" as a test string didn't.
Or the government not having enough funds to upgrade its systems since the 80s when storage space came at a significant premium (or not making modernizing IT systems a policy/budgetary priority)
Not to say that throwing money at government solves problems either. A competent administration is needed also to instil confidence in voters that they are actually committed to solving problems. Not sure what the situation is like in NJ
The 'government work' was probably done by a private contractor. Note that the OP is about a private bank. If you haven't seen results like that in private business, you've lived a charmed life!