[HN Gopher] How Masten Space Systems Is Using Ada and Spark to L... ___________________________________________________________________ How Masten Space Systems Is Using Ada and Spark to Land on the Moon's South Pole [pdf] Author : MaxBarraclough Score : 29 points Date : 2021-09-30 20:36 UTC (2 hours ago) (HTM) web link (www.adacore.com) (TXT) w3m dump (www.adacore.com) | StatsAreFun wrote: | I wish I had more opportunity to use Ada. GNAT Studio can be | buggy but the language itself and the safety it brings to | software engineering is really nice to work with. | okl wrote: | > Ghosh says they're trying to fully understand what they're | building before they start coding. | | This should be normal practice IMO. | sjburt wrote: | I've seen this approach. The wrong thing still gets built, but | at least you know why it was built that way. | olah_1 wrote: | I'm sure Ada makes a reliable program, but wouldn't it also be | good to have an Erlang/Elixir style "self-healing" system with | supervisors that can stop and restart each other? | Jtsummers wrote: | That actually is done with a lot of these kinds of systems. In | many of the ones I've worked on you have software or hardware | "watchdog timers" that have to be reset, or a process will be | terminated and restarted (how will vary a bit). Hardware | watchdog timers usually trigger something like a reboot, | causing the program to be reloaded and restarted. That's about | the simplest you can make a supervisor, but you can have more | complex ones monitoring the actual internals to respond should | the state become corrupted in some fashion as well. | | https://en.wikipedia.org/wiki/Watchdog_timer | trothamel wrote: | The programs that ran on the Apollo Guidance Computer were | written this way. If there was a sufficiently bad error, the | AGC would restart execution. The programs took advantage of | the memory in use at the time being non-volatile, and not | reset to zero when the computer restarted, so the program | could figure out what the CSM or LM was doing, and continue | it. | | This actually happened on Apollo 11. The 1201 and 1202 | program alarms were the computer overloading, and running out | of space for more processes. When this happened, the computer | would reset, and navigation would pick up again. | MaxBarraclough wrote: | I'm not sure that mindset fits for this kind of problem. It's | not a web server handling lots of independent requests, it's a | real-time critical system that is required to always transition | to the correct state within the deadline. I'm no expert on this | stuff though. | Verdex wrote: | I'm interested in hearing more. | | I've been looking into erlang on and off for nearly 14 years | now. I think the language is really neat. But the self-healing | supervisor tree thing is something that I've yet to get my head | wrapped around. | | Like ... if you have some code that's like "X / 0" then it | seems like it's not going to matter how many times you restart | the process. | macintux wrote: | The general strategy is to test the system to the point where | any bug like that is an edge case, some weird input you | didn't expect. | | So every time you get that input you'll still crash, but | other transactions will continue normally. Hopefully that | input is either due to a transitory glitch like a bit flipped | in RAM, or a user who isn't bored enough to keep submitting | it, but either way the process isolation means all your other | jobs can continue. | SkyMarshal wrote: | Ada/Spark can do that too, but you also want things like memory | safety, hard real-time and/or constant-time capability, and | provable correctness. Ada also enables those capabilities. ___________________________________________________________________ (page generated 2021-09-30 23:00 UTC)