Note: The AdaCore website has a section called Gems that gives tips on a lot of useful ways to apply Ada.
Finally, if you do Ada, you get the option of using Design-by-Contract (built-in to 2012) and/or SPARK language. One gives you clear specifications of program behavior that take you right to source of errors when fuzzing or something. The other is a smaller variant of Ada that integrates into automated, theorem provers to try to prove your code free of common errors in all cases versus just ones you think of like with testing. Those errors include things like integer overflow or divide by zero. Here’s some resources on those:
The book and even language was designed for people without a background in formal methods. I’ve gotten positive feedback from a few people on it. Also, I encouraged some people to try SPARK for safer, native methods in languages such as Go. It’s kludgier than things like Rust designed for that in mind but still works.
For Spark2014 you might want to start with AdaCore University also, or if you're in Paris in December there is a public training session : https://www.adacore.com/public-spark-training .
SPARK might be kludgier than Rust, but the guarantees it can make are stronger. And from what I've seen, it's less kludgy than the dependent type systems I've seen.
I meant integrating it into FFI's expecting C code. It's true that it makes stronger guarantees. I have a concept also that's called Brute Force Assurance where one source gets converted into Rust, Frama-C, and SPARK. Idea is static analysis tools for each knock out errors others can't catch. Final result is portable C.
Rust not, because rust is not thread safe. You manually have to prevent it from dead-locking. Fearless concurrency is just a clever marketing trick.
But with pony you can. And there are several other "fearless concurrent" systems with native threading.
Rusts approach won't help you with scheduling---but in theory you don't have to do all your scheduling dynamically: if you know your program well enough you can schedule a lot of things statically and give guarantees.
(I wonder if anyone has come up with the right type system for this problem, yet?)
If I don't know what RTOS is, my first reflex is to try and learn it on my own. Only if I fail this I will try to make others to give me an answer. I don't like wasting their time and making them provide the same reply for the thousandth time looks pretty wasteful to me.
In this case, looking up RTOS in Google is as simple as it gets. People who ask what it is do so because they didn't try to learn this by themselves.
I'm not exactly a fan of such people. I accept that they have different beliefs than me, and I try my best to be tolerant, but a sense of discomfort when dealing with people like that never leaves me. Is it arrogance too, I wonder?
If you are in a thread about a specific topic, likely filled with people knowing what they are talking about, asking there is only natural. It's quick, prevent you from learning the wrong information by looking it up wrong, filter the essential... And last but not least, the answer will be added to the thread, allowing the next readers to find it in the right context, including search engine bots.
> If you are in a thread about a specific topic, likely filled with people knowing what they are talking about, asking there is only natural.
Sure. But, is it also natural and a win-win situation if your exact question is answered multiple times upthread? Shouldn't you use your browser's search function to see if it's not answered already before posting the question?
Somewhere a 12 or 13 year old is reading this for the first time and wondering what the heck a RTOS is. You were young and uninformed once too(or at least I was), and some nice people didn't tell me to RTFM, because at that point I didn't know what it would have even meant.
One of the most important skills in life, is to be able to step into the shoes of someone else, and look through their eyes. It helps you in all kinds of ways: negotiation, getting a job, hiring employees, keeping others happy, having fulfilling relationships, knowing what users or customers want, etc.
You need this skill in your personal life, in your job, when you start a company, etc.
http://www.electronicdesign.com/embedded-revolution/assessin...
This Barnes book shows how it’s systematically designed for safety at every level:
https://www.adacore.com/books/safe-and-secure-software
Note: The AdaCore website has a section called Gems that gives tips on a lot of useful ways to apply Ada.
Finally, if you do Ada, you get the option of using Design-by-Contract (built-in to 2012) and/or SPARK language. One gives you clear specifications of program behavior that take you right to source of errors when fuzzing or something. The other is a smaller variant of Ada that integrates into automated, theorem provers to try to prove your code free of common errors in all cases versus just ones you think of like with testing. Those errors include things like integer overflow or divide by zero. Here’s some resources on those:
http://www.eiffel.com/developers/design_by_contract_in_detai...
https://en.wikipedia.org/wiki/SPARK_(programming_language)
https://www.amazon.com/Building-High-Integrity-Applications-...
The book and even language was designed for people without a background in formal methods. I’ve gotten positive feedback from a few people on it. Also, I encouraged some people to try SPARK for safer, native methods in languages such as Go. It’s kludgier than things like Rust designed for that in mind but still works.
GPL download for AdaCore GNAT:
https://www.adacore.com/community