Dopo diversi anni di istruzione intensiva, incluso il calcolo al college, usiamo le abilità che abbiamo imparato per risolvere i problemi. Comprendendo come funziona la CPU, avendo preso lezioni per capire come i diversi linguaggi di programmazione lavorano con l'hardware e la logica matematica, siamo in grado di creare algoritmi eleganti per risolvere problemi complessi e far sì che le macchine facciano ciò che vogliamo. Considerate la ricerca di dati in un database e pensate a come potreste cercare una carta con numeri specifici in un mazzo di 100. Supponiamo che le carte siano in ordine e che vogliate cercare la carta numero 75. Come faresti a trovarla velocemente?
Potresti iniziare dall'inizio o dalla fine del mazzo e andare avanti fino a trovarla. Questa è una ricerca lineare, O(100). Guarderai tutte le carte finché non troverai la carta scelta.
Portiamo x ad un valore molto grande. Lavoro con database con centinaia di miliardi di record. La ricerca lineare richiederà ore, a meno che ciò che sto cercando non sia all'inizio della ricerca.
X è il numero di record. Ora, se costruisco un indice in una struttura dati efficiente, posso rendere O(x) in O( log base 2(x))Costruendolo in un albero binario.
Quello che significa è che dato Log base 2 di x, posso trovare il mio record in pochi minuti sbirciando i dati.
Hai mai giocato a 21 Domande? Stesso concetto. Alcuni pensano a qualcosa. Tu fai solo domande Sì/No. Se stai attento a ciò che chiedi puoi ottenere ciò che il tuo amico sta pensando in 21 domande o meno.
Log ^2(1000000000) è 20,8. Questo significa che in un miliardo di record hai solo bisogno di guardare non più di 21 per trovare il tuo.
Al college ci sono classi che insegnano algoritmi e ottimizzazione. Noi usiamo questi strumenti e li costruiamo nei nostri jorbe per creare software eleganti per eseguire compiti altamente complessi.
Negli ultimi anni gli ingegneri del software della missione Mars sono stati in grado di posizionare un satellite sopra Marte per fotografare l'atterraggio del rover. Dal vivo. Questa è stata forse l'impresa di ingegneria del software più impressionante che abbia mai visto. Immaginate tutte le variabili che vanno f un'astronave dalla Terra che viaggia per miliardi di microfoni nel corso di diversi mesi per andare in diretta televisiva a trasmettere l'atterraggio del mezzo lI've in TV!
Immaginate gli algoritmi necessari per guidare un razzo booster di SpaceX per atterrare su un piccolo pad di atterraggio galleggiante automaticamente e con precisione ogni volta non importa il punto di sollevamento o di atterraggio? Sarebbe molto impegnativo e profondamente gratificante.