Sometimes you can prune the state space with formal or automated reasoning.
formatting link
might be of interest. It's a DSL which uses an SMT solver to check the invariants. A walkthrough of a simple example is here:
formatting link
The ImProve compiler turns the ImProve input into C, Ada, or Simulink. I haven't used it but I've played with the related Atom DSL by the same guy. It's pretty cool.
In particular, we strongly believe the FSM specification and implementation techniques are extremely valuable and still offer the best mechanisms for producing reliable hardware and software. (Of course other techniques are beneficially applied in addition to those techniques)
The only difference is the extent to which proof is practical - but that doesn't *reduce* the benefits, it merely puts an *upper limit* on them.
(I'm still mildly pleased that when I and another schoolboy implemented programs for converting from one 5-channel paper tape format to another, my program worked first time and his never did. My program was ~80 words (160 instructions) long and my first assembler program, his was enormous. I later found out I had reinvented a simple FSM with two states: figure-shift and letter-shift.)
YES! And I am here to testify that there's a ... happy valley where you get much gain for less than overwhelming effort in moving that way.
The rest is an economic calculation, sadly.
In a world where firmware is starting to heat up politically ( the VW mess is merely the opening salvo ) I think it behooves us to gird our loins a bit.
There you go. Unfortunately, our education system doesn't seem to teach that as much as it does declarative logic; at least not in CS.
Yup. And eventually I've occasionally been able to force other people to see that too.
I've been thinking that for decades :(
It will only change when - manufacturers are forced to be responsible for the /consequences/ of misdesign - insurance premiums are dependent on properly designed equipment
Oh, we weren't taught that! It was entirely extra-curricular. Mind you, everybody in my school was taught integration and differentiation of polynomials (except 1/x) for external exams (O-levels) at 15yo/year10 (yes, one year early). Nowadays maths teachers have difficulty believing that.
I think I agree with that. Much of my time when programming goes into forecasting what will be useful in the future and how things are expected to evolve... Which is not a complex task, it is just one I try to solve based on insufficient knowledge at the moment. I must say I have done pretty well last 20+ years though, I have thrown away very little code and had to rewrite almost nothing (while almost everything I wrote is still heavily in use in the DPS environment). But looking back it looks just bulky, not too complex. Well, most of it.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.