Bienvenido de nuevo, Scott Stanley aquí. En estas lecciones vamos a echar un vistazo a imperativo versus programación declarativa, Lambdas, interfaces funcionales y funciones de nivel superior. Así que en esta lección, vamos a echar un vistazo específicamente a ¿Qué es la programación imperativa? ¿Qué es la programación declarativa? Entonces vemos aquí, hay un par de paradigmas de programación diferentes, un par de enfoques para resolver problemas de programación. El enfoque imperativo ha existido probablemente por más tiempo. Define un programa como una secuencia de sentencias que cambian el estado del programa. Por lo general, tiene variables de trabajo y bucles y normalmente una buena cantidad de código. Mientras que declarativo por otro lado, es un enfoque que expresa la lógica de un cálculo sin describir su flujo de control. Es algo así como declarar que te gustaria que pasara y sólo teniendo que sea así, mientras que imperativo es arremangarse y escribir una buena cantidad de código. Y luego quieren que nos aseguremos de que vemos aquí que una función debe devolver un valor basado únicamente en el argumento y no debe tener efectos secundarios. Quiero decir que es la definición de libro de texto de una función. Por lo general, cuando hablamos de programación declarativa, la función es lo siguiente que vamos a empezar a hablar de eso. Tenemos una lista de tipo de estudiante, cuatro estudiantes supongo Scott, Tyler, Chris y Edward. Y luego, antes de cada prueba en el conjunto de unidades J aquí terminaremos con una nueva lista de estudiantes para cada prueba. Entonces, de esta manera, no hay residuos entre las pruebas en ejecución. Las pruebas son totalmente independientes de esta manera. Así que eso es todo. Lo primero que miramos es una búsqueda. que está usando el estilo imperativo. Y entonces vamos a recorrer a todos los estudiantes y estamos tratando de determinar si el que alguien busca, en este caso, quieren saber si Eddie Van Halen está aquí, quieren saber si existe. Así que ahí está nuestro booleano 'encontrado = falso', así que vamos a empezar pesimista. No, no existe. Y la identificación que queremos buscar es la número cuatro. Así que ahí está nuestro bucle. Lo primero que haremos en el ciclo es decir, ¿esta identificación de estudiante es igual a la que se busca? Si es así, decimos que encontrado es igual a verdadero y salimos del bucle y volveriamos verdaderos a quien preguntaba ¿este estudiante existe? Esa es una buena cantidad de código. La forma declarativa de resolver ese mismo problema. sería preguntar a los alumnos, cuál es la colección aquí la lista de estudiantes, Pregunte a los estudiantes si contiene Eduardo. Y en este caso sería cierto. Entonces, si echamos un vistazo a cómo funcionó, el código, en lugar de tener que escribirlo cada vez que quieras jugar ese juego, este estudiante existe o no, está contenido dentro del tipo de estudiante método igual. Así que antes vimos el orden natural de un estudiante fue compararme con otro estudiante por apellido. Bueno, aquí hemos agregado un igual en un código hash que es lo que se llama cuando se invoca colecciones que no contienen. Así que regresemos y veamos eso una vez más. Cuando se invoca el método collection contains, el método estudiante es igual a lo que se invocará. Así que lo primero que va a hacer es decir ¿El otro tipo de objeto es del mismo tipo que yo? En otras palabras, quiero asegurarme que un estudiante está siendo comparado con otro estudiante. Y en ese momento puedo decir, ¿mi identificación es igual a esta otra identificación de estudiante? Así que es un enfoque mucho más limpio. Y como puedes ver si, si esa es la pregunta que alguien quiere poder preguntarte, es mucho más limpio solo decir, 'Estudiantes, ¿contienes a Edward?' Mucho más simple de hacer eso que escribir todo este código. Así que echemos un vistazo a otro ejemplo aquí. y eso es un tipo imperativo usando un comparador que hemos visto esto, creo, colección ordenar estudiantes y ordenarlos de esta manera. Entonces, si miramos a los estudiantes por fecha de nacimiento comparador, bueno ahí está, vamos a terminar clasificando a los estudiantes, dado dos estudiantes a la vez comparando sus fechas de nacimiento. Entonces todos estarán ordenados ahora cronológicamente según su fecha de nacimiento. Y el sabor declarativo de este no nos obligaría a escribir esto, no requeriría eso. El sabor declarativo de ese tipo. es lo que vamos a ver en la próxima lección. Gracias por ver. La próxima lección será Lambda e interfaces funcionales.