Readit News logoReadit News
Celeo · 2 months ago
If you prefer a video format with some of the highlights, see https://www.youtube.com/watch?v=Gv4sDL9Ljww.
spapas82 · 2 months ago
This is insteresting to me especially since this is a 2005 document. Is there a reason why C++ was chosen instead of Ada which to my knowledge was the gold standard for such software ?
bri3d · 2 months ago
https://web.archive.org/web/20111219004314/http://journal.th...

A large segment in this article (which is great overall) focuses on this decision. The short summary is "hiring Ada developers was hard and middleware and tooling were difficult to acquire."

While I've moved through a lot of parts of the software industry and may just be out of touch, I actually feel that this may be less the case today. I've seen a lot of school programs focus less on specific languages and frameworks and more on fundamental concepts, and with more "esoteric" languages becoming popular in the mainstream, I actually think hiring Ada developers would be a lot easier today (plus, big industry players like NVIDIA are back to using Ada since AdaCore have been so effective at pushing SPARK, which probably helps too).

jandrewrogers · 2 months ago
My recollection is that it came down to two factors. Pragmatically, the pool of highly skilled C++ programmers was vastly larger and the ecosystem was much more vibrant, so development scaled more easily and had a lower maintenance risk. By 2005 they had empirical evidence that it was possible, albeit more difficult, to build high-reliability software in C++ as the language and tooling matured.

These days they are even more comfortable using C++ than they were back then due to improvements in process, tooling, and language.

eastbound · 2 months ago
> 4.10.9 Inheritance Class hierarchies are appropriate when run-time selection of implementation is required. If run-time resolution is not required, template parameterization should be considered (templates are better-behaved and faster than virtual functions). Finally, simple independent concepts should be expressed as concrete types. The method selected to express the solution should be commensurate with the complexity of the problem.

I’m a TS + Java person. Is this specific to C++ or is it just due to control freaks with low abstraction skills?

moffkalast · 2 months ago
This is over 200 convoluted rules with multiple subpoints on 140 pages, who the hell checks compliance with this without it taking over a decade?
Quothling · 2 months ago
You should see some of the manuals I go through for our some of IoT devices. As far as how Lockheed Martin does it, this quote from the article linked by bri3d answers it:

> MISRA-C was used as the basis for the C applications and a coding standards was developed with the assistance of Bjarne Stroustrup, original author of the C++ language. For both C and C++ Static Code Analysis (SCA) tools are used to ensure that restricted features are not utilized. Arguments about the lack of reliability in either C or C++ are addressed by programming standards restrictions and SCA checks. In truth, this approach is probably more consistent and robust than the manual checks used for previous development efforts including Ada.

moffkalast · 2 months ago
Alright that makes far more sense than doing it the "bureaucratic" way. Non-compliant doesn't compile. Must be really annoying working on this codebase hah.
spwa4 · 2 months ago
Wait, no underscores? Vertical tab allowed? Form feed allowed? What would you even use them for?
sema4hacker · 2 months ago
Before you read this, read "The Elements of Programming Style" by Brian Kernighan and P. J. Plauger.
jcims · 2 months ago
CTRL+F security
jandrewrogers · 2 months ago
Why would this be relevant?