(Reposting from lobste.rs)<p>It's a shame there wasn't more information on the tools Ada provides for concurrency - I haven't seen another language which gives you as much flexibility and power to write safe concurrent code. It's much more heavy weight than some other languages in some ways, but gives you very strong guarantees you don't get elsewhere.<p>It also would've been nice to talk a bit about some of the features which make it particularly well suited for embedded systems:<p>* things like the ravenscare profile which give you a safe subset of the language using statically allocated never terminating threads<p>* the ability to select the scheduling algorithm (including ones with task priorities which are used to avoid the possibility of deadlocks completely - see the priority ceiling protocol for more details)<p>* the ability to address specific memory locations being built into the language, not just casting ints to pointers like you would in C<p>* full control over how elements on records are laid out, including endianness, this is essential with the previous feature when you're dealing with memory mapped IO registers for controlling hardware<p>* the ability to define that certain data types can only be used at certain specific memory locations (see <a href="https://cs.anu.edu.au/courses/comp4330/Lectures/RTES-03%20Interfaces.01.pdf" rel="nofollow">https://cs.anu.edu.au/courses/comp4330/Lectures/RTES-03%20In...</a> "pages" 314 - 332)<p>For anyone who's had to write code to interface with hardware on micro controllers, they're probably wetting themselves with excitement by now, doing this in C relies on the compiler doing what you think it will, which there's no guarantee of because the ability to use many of the features is implementation defined, if defined at all.<p>ANU's COMP4330, which these slides come from, is an excellent resource for learning more about both Ada and real time systems in general: <a href="https://cs.anu.edu.au/courses/comp4330/1-Lectures-Contents.html" rel="nofollow">https://cs.anu.edu.au/courses/comp4330/1-Lectures-Contents.h...</a>