Software-Driven Skies: The Role of Programming in UAV Systems