4 ms·
From the article: > This enduring reliance exists not out of nostalgia, but necessity: COBOL’s reliability, stability, and the prohibitive cost and risk of rep
by drob518 1y ago
From the article:
> This enduring reliance exists not out of nostalgia, but necessity: COBOL’s reliability, stability, and the prohibitive cost and risk of replacing decades of deeply integrated logic make it one of the most mission-critical technologies ever built.
That sentence struck me as odd. Is COBOL any more "reliable" or "stable" than any other language? I'm no COBOL expert, but when I've looked at it and read about how it works, it seems rather verbose and mundane. That's not unexpected; it was developed in a different era with different sensibilities.
- skissane 1y agoHistorically, COBOL lacked dynamic memory allocation-all data structures were fixed size and allocated at program startup. Although COBOL now has the equivalent of malloc/free, its long-time absence encouraged a coding style of using it sparingly-which does make a whole class of bugs less common in COBOL programs
- bhawks 1y agoYes no dynamic memory allocation, however there still are many ways to ABEND your COBOL program. The reliability aspect comes from the fact that these systems have been running for 40+ years, and places where it could have ABEND'd probably have been fixed [hopefully].
- drob518 1y agoOkay, sure, but neither of those things are specific to COBOL. You can write C programs that allocate all memory statically and chase down every core dump over time and have a very reliable C program. Or better yet use Lisp or even Java with GC, if you find C too unsafe.
- skissane 1y agoProgramming languages are a bit like natural languages-they aren’t purely systems of formal rules, they are also usage patterns-there are lots of sentences which are formally correct English, but which few English speakers would ever construct-valid syntax and semantics, but stylistically and pragmatically abnormal. In the same way, a programming language is more than just the set of strings accepted by its compiler, it is a culture-language A may produce (in practice) more reliable code than B, not because of its feature set, but due to the cultural baggage that comes with it-but in a broader sense of “language”, that culture is part of the language too.
- rdc12 1y agoWith C in the embedded world it is very common to write entire applications that never only use static memory and the stack. Sometime programmers will allow dynamic memory during init only, other times not even then (I tend to favour the never approach, as I can verify that malloc is never called anywhere).