Después de varios años de educación intensiva, incluyendo Cálculo en la universidad, utilizamos las habilidades que aprendimos para resolver problemas. Entendiendo cómo funciona la CPU, habiendo tomado clases para comprender cómo funcionan los diferentes lenguajes de programación con el hardware, así como la lógica matemática, somos capaces de idear elegantes algoritmos para resolver problemas complejos y conseguir que las máquinas hagan lo que queremos que hagan.
Hay un método llamado O(x) donde x es el factor de eficiencia del código. cuando x es grande es un mal código Para el procesamiento intensivo. Considere la posibilidad de buscar datos en una base de datos y piense en cómo podría buscar una carta de números específicos en una baraja de 100. suponga que las cartas están en orden y y quiere buscar la carta número 75. ¿Cómo la encontraría rápidamente?
Podría empezar al principio o al final de la baraja e ir hasta encontrarla. Esto es una búsqueda lineal, O(100). Mirarás todas las cartas hasta que encuentres la carta elegida.
Llevemos x a un valor muy grande. Yo trabajo con bases de datos con cientos de miles de millones de registros. T buscar linealmente me llevará horas a no ser que lo que busco esté al principio de la búsqueda.
X es el número de registros. Ahora bien, si construyo un índice en una estructura de datos eficiente, puedo convertir O(x) en O( log base 2(x))Construyéndolo en un árbol binario.
Lo que esto significa es nosotros que dado Log base 2 de x, puedo encontrar mi registro en pocoset vistazo a los datos.
¿Has jugado alguna vez a 21 Preguntas? El mismo concepto. Algunos piensan en algo. Haces preguntas de Sí/No solamente. Si tienes cuidado con lo que preguntas puedes obtener lo que piensa tu amigo en 21 preguntas o menos.
Log ^2(1000000000) es 20,8. Esto significa que en un billón de registros sólo necesitas mirar no más de 21 para encontrar el tuyo.
En la universidad hay clases que enseñan algoritmos y optimización. Nosotros usamos estas herramientas y las incorporamos en nuestros jorbs para crear software elegante que realice tareas muy complejas.
En los últimos años los ingenieros de software de la Misión Marte fueron capaces de posicionar un satélite sobre Marte para fotografiar el aterrizaje del rover. En directo. Esta fue quizás la hazaña de ingeniería de software más impresionante que he visto nunca. Imagina todas las variables que van f una nave espacial desde la Tierra viajando miles de millones de mikes en el transcurso de varios meses para ir en directo a la televisión para transmitir el aterrizaje de la nave lI've en la televisión!
¿Imagina los algoritmos necesarios para guiar un cohete impulsor de SpaceX para aterrizar en una pequeña plataforma de aterrizaje flotante de forma automática y precisa cada vez sin importar el punto de elevación o de aterrizaje? Serían un gran reto y una profunda recompensa.