BitƔcora de clase - Jueves Noche 2016
Herencia vs Composición. Errores.
- Composición (los ejemplos estÔn en Smalltalk, pero lo principal es la explicación teórica) - Manejo de Errores |
Clases
En esta clase introdujimos la idea de clase. Pueden leer mĆ”s al respecto en Módulo 4:Ā Clases. Method lookup y polimorfismo con clases. Hablamos tambiĆ©n sobre la importancia de que los objetos se encuentren en un estado vĆ”lido a la hora de obtenerlos, lo cual lo logramos definiendo constructores cuando corresponda para poder parametrizar la construcción. TambiĆ©n pueden encontrar una nueva guĆa de Mumuki sobre estos temas: 9. Clases e Instancias Si bien todavĆa falta un poco de teorĆa para poder resolverlo en su totalidad, ya pueden empezar a laburarlo de a poquito. Todos los grupos que armaron ya tienen un tutor designado, asĆ que recuerden hacerle consultas (los mails sobre TP van directo al tutor, y deberĆan incluir a todos sus compaƱeros para evitar problemas de comunicación). |
Intro a objetos y colecciones
Las primeras clases arrancamos con lo bien bĆ”sico del paradigma de objetos, cuyas ideas centrales son los objetos y los mensajes. Los objetos se conocen mediante referencias, y las mismas pueden ser modificadas, o sea, hay asignación destructiva en este paradigma. Una referencia que de ninguna forma puede ser modificada mediante asignación es self, ya que siempre apunta al objeto que recibió el mensaje. Hablamos sobre encapsulamiento, delegación y polimorfismo que son los 3 pilares del paradigma, y que hacen que un programa bien armado sea fĆ”cil de modificar y extender.AdemĆ”s vimos cómo manejar conjuntos en objetos, a los cuales llamamos colecciones, y cómo usar bloques para parametrizar el comportamiento necesario de los mensajes de colecciones. Lección 1: Objetos y mensajesLección 2: MĆ©todos y estadoLección 4: ColeccionesY como prĆ”ctica personal pueden ejercitar con las guĆas prĆ”cticas de Mumuki sobre estos temas. |
Listas y findall
Ćltimo TP de lógico: PrĆ”ctica completa de Pulp Fiction Y como dijimos una y otra y otra vez en esta Ćŗltima clase, CUIDADO, sólo usen listas cuando ese problema no puede encararse con las herramientas principales del paradigma lógico, de forma declarativa y pensando en la lógica detrĆ”s del problema mĆ”s que en un algoritmo que funcione.En esta clase vimos un nuevo tipo de individuo compuesto que son las listas. Las mismas son estructuras recursivas, por ese motivo resultan cómodas para trabajar recursivamente. TambiĆ©n vimos el predicado findall/3 que sirve para armar listas a partir de las mĆŗltiples respuestas de una consulta y asĆ poder trabajar con el conjunto de respuestas para cuando las herramientas se nos quedan cortas. |
Functores y Polimorfismo
En esta clase vimos a uno de los dos individuos compuestos que usaremos en lógico, que son los functores. Vimos cómo podemos usarlos trabajando con pattern matching y cómo evitar problemas de inversibilidad.1. servidores 2. Mes complicado |
Cuantificadores: Existe, No Existe y Para Todo
La primer parte de la clase la dedicamos a ejercitar de los temas vistos la clase pasada, en particular Y, O y negación. Vimos que hasta ahora sólo trabajamos con la idea de Existencia (cuantificador implĆcito en todas las reglas que venimos definiendo) o No Existencia (usando el predicado de orden superior not/1). Existe vs Para Todo A medida que se fueron complicando los problemas nos dimos cuenta que si bien con Existe y No Existe podemos solucionar los problemas mĆ”s complicados tambiĆ©n, hay otro cuantificador muuuuy conveniente para ciertos problemas que es el Para Todo (para lo cual usamos el predicado de orden superior forall/2). Próximamente va a estar disponible una guĆa de aprendizaje de Mumuki sobre estos temas (avisarĆ© por la lista cuando estĆ© publicada). Para la clase que viene tienen como TP estos ejercicios: El objetivo es que usen todos los cuantificadores al menos una vez entre todos los ejercicios (no necesariamente en cada uno), no vale hacer todos los ejercicios sólo con Existe y No Existe ;) |
Introducción a Lógico
El paradigma Lógico que al igual que a Funcional lo podemos categorizar como declarativo (el motor se encarga de deducir si algo es verdadero o no, nosotros sólo declaramos verdades en nuestra base de conocimientos). Los temas de esta primer clase fueron:
El TP para la próxima clase (jueves 2/6) consiste Ćŗnicamente en el ejercicio de la guĆa prĆ”ctica de Inversibilidad: 11. asesinato Desde ya, aparte de eso conviene que hagan todo lo que hay en las siguientes guĆas de aprendizaje y prĆ”ctica: Hay un par de lecciones en construcción sobre negación, esas simplemente ignórenlas. |
Inferencia de Tipos y Typeclasses
En la clase de hoy se terminó de cerrar cómo es que se infiere el tipo de una función incluyendo typeclasses. Ā Para repasar y practicar estĆ”n todas las guĆas de tipos:Ā Introducción tipos de dato,Ā Primera PrĆ”ctica de Inferencia de Tipos,Ā Segunda PrĆ”ctica de Inferencia de Tipos. TP 4 El Ćŗltimo TP de funcional es la siguiente guĆa de Mumuki (completa):Ā TP Funcional 2016 - Buscando deptos Esta guĆa ya tiene ejercicios con la dificultad que podrĆan esperar en un parcial. Hagan especial foco en el uso de orden superior, composición y aplicación parcial que son temas que tienen que tener muy sólidos para el parcial. Y arrĆ”nquenlo con tiempo, tienen dos semanas pero es mĆ”s largo y complicado que los TPs anteriores. |
Composición y Aplicación Parcial
En esta clase (finalmente) hablamos sobre:
También vimos que podemos definir funciones en términos de otras funciones y no en base a la aplicación de las mismas (lo que van a encontrar como notación point-free). TP3 Los ejercicios que componen este TP son:
GuĆas recomendadas para seguir practicando:
Nuevamente no hay una guĆa propiamente sobre composición, este es un tema que se pide utilizar en varios ejercicios a lo largo de las guĆas que ya estuvieron usando, asĆ que siĆ©ntanse libres de explorar cualquier bache que les haya quedado por el camino. |
Recursividad vs Orden Superior
Ya habĆamos aprendido a trabajar recursivamente con los conjuntos, sin embargo a medida que usamos este mecanismo para resolver mĆ”s problemas vemos que empezamos a repetirnos y mucho. Para solucionar esa repetición necesitamos poder parametrizar lo que cambia, que es lógica, o sea, funciones. A esta idea la llamamos orden superior. Este concepto lo vimos de la mano de funciones como filter, map, any, all y la familia de foldĀ (ver guĆa de aprendizajeĀ Listas), sin embargo aplica para cualquier cosa! Como ser los siguientes ejercicios de la guĆa de aprendizaje sobre este tema:Ā 5. Un saludo superior, Parte 1Ā hasta Ā 10. Tipos y Orden Superior. Expresiones lambda, que pueden repasar con esta otra guĆa:Ā Expresiones LambdaĀ (todos menos el 6 por ahora, que pueden saltearlo) TP2 Para la semana que viene deberĆan resolver los siguientes ejercicios:
Y para seguir ejercitando tienen la guĆa deĀ PrĆ”ctica Listas, la deĀ |