The advantages of fly-by-wire are too good to pass up, so that leaves the question of how to design an FBW system.
A high school teacher of mine in the 1970s predicted an accident like AF447. He framed it this way: the 'American' approach is to implement FBW to always do what the pilot inputs indicate, whereas the 'French' approach is to do the right thing, and override the pilot if the FBW 'knows' better. That's an interesting cultural cultural consistency as well!
So, the 'American' approach is better if the sensors are not working as expected, and it makes the software simpler. The 'French' approach is better if the pilot is wrong, but both the sensors and the software must be working perfectly. Everyone makes mistakes, and all software has bugs. What to do?
(In reality, some 'judgement' is needed by the software, even in the American approach.)
EDIT: That said, some of the design choices in the Airbus FBW are baffling, such as making the control input the average of two different inputs. I like to think AF447 is less likely to have happened in a Boeing ship, although the ulitimate cause of the crash was a pilot making what amounts to a beginner mistake.
Don't miss William Langewiesche's article!
https://www.vanityfair.com/news/business/2014/10/air-france-...