Hacker News new | past | comments | ask | show | jobs | submit login

It might not be "perfect code", but I find it fascinating what certain institutions do to create bug-free and easily testable code, institutions which are involved in work where small errors can quite literally ruin billions of dollars of investment.

For example Coding Standards from NASA's Jet Propulsion Laboratory (JPL) for C[1] and Java[2]

This will also give you an idea of just how tedious it is to do so

I am not even sure if enforcing those strict standards leaves a Turing-complete language

[1] http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf

[2] http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_Java.pdf




That's a good point. Safety critical systems commonly require loops to have maximum iteration counters and also forbid recursion.

So what's left probably isn't Turing complete.


From [2] above:

> important general differences from the JPL institutional C coding standard for flight software references (JPL-C-STD) are: (1) the Java standard allows dynamic memory allocation (object creation) after initialization, (2) the Java standard allows recursion, and (3) does not require loop bounds to be statically verifiable. Apart from these differences most other differences are due to the different nature of the two languages.

That said, the standard in question is explicitly only intended for ground-based systems.


How can it not be Turing complete? You have the option of doing those things, even if by accident but you avoid it as much as you can. Turing complete does not mean it runs forever or has a mind of its own. I'm not necessarily trying to be combative and am not the most well versed in computational theory, but this statement seems off.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: