I spent last week at the 18th International Conference on Reliable Software Technologies/Ada Europe conference – it was a great event. We're big fans of Ada at Rapita (our RVS tools are mostly built with Ada). It was interesting to see that our initial (slightly controversial) decision to use the language is repeatedly vindicated by the many people here showing evidence about how using Ada and related technologies like SPARK has massively reduced the cost of producing good software.
For me the highlight of the week was actually not something written in Ada though. It was a talk from Professor Raúl Rojas of Autonomous Labs, Berlin about autonomous cars - cars that drive themselves. As he explained their project and showed videos of some of their achievements (software driving cars through the busy streets of Berlin, Mexico City and other places around the world) we began to see the complexity of this project.
I'm sure that we barely scratched the surface of the functionality in their system - whole complex subsystems working together somehow. Things like: vision recognition (cars, traffic lights, pedestrians), stereo vision (judging depth from two cameras), landscape mapping (building a map of what's around you), control (actually doing the driving) and so on.
Yet, the most challenging for me is the system that's the "brain" - the control centre that makes the decisions about what to do. I know very little about artificial intelligence, but this component must have so many "modes" (as we might call them in more conventional software) - following a lane, driving without lanes, responding to an obstacle, guessing what to do at junctions, emergency braking, overtaking... what else do you just do when driving? The list goes on.
I'll leave you with a video that briefly shows the concept in action. Roll on Ada-Europe 2014.