5 ms·
C/C++ is almost the only choice on most embedded systems, which is where most safety critical code lives.
by Qworg 10y ago
C/C++ is almost the only choice on most embedded systems, which is where most safety critical code lives.
- throwaway729 10y ago> embedded systems, which is where most safety critical code lives For how much longer? The machines running self-driving cars aren't tiny little processors running single threaded code. They're basically full server racks worth of compute with multi-core cpus, gpus, and who knows what else. The current approach of "use crufty-but-trustworthy hardware and never do anything too complex" doesn't scale to the next generation of "embedded".
- Qworg 10y agoSelf driving machine code is inherently unsafe, as we don't have observability for the neural networks that run the most advanced models. The safety critical portion of the code focuses around running the base functions of the car. One of the major hurdles to real Level 5 systems is proving their correctness.
- throwaway729 10y ago> The safety critical portion of the code focuses around running the base functions of the car. There's the rub. They don't meet the standards of safety-critical code, but they are safety critical. I'm not sure how this challenge will be addressed, but I doubt the answer is "write everything in C". That approach works when your code is relatively simple, but doesn't scale when the code is actually extremely complex.
- nerdponx 10y agoBut the deep networks and such that power a self-driving car aren't written in C anyway. Or are they?
- blackflame7000 10y agoThey most likely are written in C/C++ because the training algorithms are computationally intensive.
- Fricken 10y agoC++ skills are strongly desired by self driving car companies https://hackernoon.com/five-skills-self-driving-companies-need-8546d2aba7c1#.pu9wjnllj https://hackernoon.com/five-skills-self-driving-companies-ne...
- throwaway729 10y agoThey are but that doesn't make them analyzable... Dealing with C craziness AND dnn craziness is silly. And the latter craziness is essential.
- planteen 10y agoA team of PhDs using modern control theory can prove stability of an aerospace control loop across all different operating conditions. A team of software engineers can then implement that with static analyzers and run time checkers during development to give confidence to an implementation. Can you prove stability of a deep learning system across all possible operating conditions it may encounter?
- throwaway729 10y agoCan you do the perception tasks that self driving platforms do using only control theory?
- planteen 10y agoI'm not talking about self driving at all. I took your earlier comment to mean that the you thought the future of avionics control and other classical embedded problems would be using DNNs. Maybe that's not what you meant.
- throwaway729 10y agoNo. That would be crazy. Well maybe not really as planes become more autonomous and airspace more crowded, delivery drones and so on, but we are still a long way from that. I was thinking more of self driving though.
- Qwertious 10y agoThat doesn't make any sense - Pascal and Ada and whatnot that were around in the 1980s, which means the fundamental problem can't be performance on any modern embedded chip. Besides which, you don't trade away stability for performance on a safety-critical chip!
- Jtsummers 10y agoIt's not a technical challenge, but a political/business one. C/C++ won out. > you don't trade away stability for performance on a safety-critical chip! In a sane world, no. But we don't live in a sane world. We live in one where (on one system I worked on) it turned out a plane having an overheat (not fire) on one engine would cause the overheat on the other to fail to report to the pilots (corrected or I'd name and shame). And that wasn't just an issue of language, but of sound (or unsound in this case) logic. No one sits down and develops these things correctly. 10k lines of code (at most) on that project and most of it was just cobbled together in an ad hoc fashion.
- kristianp 10y agoInterestingly there was a comment about an Oberon Embedded IDE today: https://news.ycombinator.com/item?id=13806367 https://news.ycombinator.com/item?id=13806367
- pjmlp 10y agoThere are options available, namely Basic, Pascal, Ada, Java, Oberon compilers all the way down to microcontrolers (PIC and Cortex classes). The main problem is that C and C++ won the political war and many devs don't even bother to look elsewhere. Actually even C++, in spite of its safety improvements over C, has issues to cater to embedded devs. Thankfully the IoT of shame is already making people aware that another path has to be taken.