Download Paradigmas de la Programación

Document related concepts
no text concepts found
Transcript
Paradigmas de la Programación FaMAF 2016 Laura Alonso Alemany Ezequiel Orbe qué veremos en esta materia •  aprender conceptos fundamentales (fundacionales) de los lenguajes de programación •  aprender a idenGficar estos conceptos en lenguajes de programación concretos •  evaluar el impacto de las decisiones de diseño en lenguajes de programación, para poder elegir el lenguaje más adecuado a una situación objeGvos de la materia al terminar ustedes podrán... •  pensar cómo traducir programas de un lenguaje a otro •  entender qué caracteriza a un lenguaje •  conocer paquetes de caracterísGcas úGles •  decidir qué lenguaje es más adecuado usar para un problema y contexto determinado •  leer, preguntar y contestar en stackoverflow traducir programas •  C, C++, Java:
int fact (int n) { return (n == 0) ? 1 : n * fact (n-1); }
•  Scheme:
(define fact
(lambda (n) (if (= n 0) 1 (* n (fact (- n 1))))))
•  ML:
fun fact n = if n=0 then 1 else n*fact(n-1);
•  Haskell:
–  fact :: Integer->Integer
–  fact 0 = 1
–  fact n = n*fact(n-1)
deberían poder teer opiniones como... •  hTp://s3.crashworks.org.s3-­‐website-­‐us-­‐
east-­‐1.amazonaws.com/if-­‐programming-­‐
languages-­‐were-­‐vehicles/ •  hTp://www.whoishosGngthis.com/blog/
2014/09/04/learn-­‐to-­‐code/ pracGcalidades pracGcalidades •  teórico-­‐prácGco martes y jueves de 9 a 11, aula 17 •  laboratorio viernes de 9 a 13, lab 30 pracGcalidades •  página de la materia hTp://cs.famaf.unc.edu.ar/materias/paradigmas/ •  grupo de facebook Paradigmas de la Programación -­‐ FaMAF •  docentes: –  Laura Alonso Alemany (teórico-­‐prácGco) –  Ezequiel Orbe (laboratorio) –  SanGago Avalos (laboratorio) –  CrisGan Cardellino (laboratorio) –  Beta Ziliani (laboratorio) –  Melisa Bonias (ayudante) –  Jonathan Mutal(ayudante) –  Maaas Silva (ayudante) pracGcalidades: materiales •  libro: Concepts in Programming Languages sólo algunos capítulos •  y materiales complementarios pracGcalidades: evaluación •  teórico: 2 parciales y un recuperatorio: –  21 de abril –  9 de junio –  16 de junio recuperatorio (un solo parcial) •  labs: 5 labs y un recuperatorio (un solo lab) –  vean el calendario de la materia (también en la página de la materia) pracGcalidades: evaluación •  nota = 50% teórico + 50% laboratorio •  regularización: –  aprobar por lo menos 4 laboratorios –  mínimo 4 en ambos parciales •  promoción: –  aprobar todos los laboratorios –  más de 8 de promedio en el teórico objeGvos de la materia para qué hacemos lo que hacemos? •  por ejemplo, traducir programas de un lenguaje a otro •  encontrar bugs, incluso en programas de otro •  saber cómo opGmizar •  saber elegir el mejor lenguaje en cada contexto •  saber cuándo hay que diseñar un lenguaje nuevo y cómo hacerlo conceptos fundamentales •  qué se puede y no se puede expresar en un lenguaje de programación •  los programas representados como cambios en una máquina •  diferencia entre lo que se expresa (séman&ca) y cómo se expresa (sintaxis) •  potencial de los lenguajes de programación •  cómo diferentes lenguajes usan el potencial diferentes formas de abordar los conceptos hTps://www.destroyallsohware.com/talks/wat pero también: hTp://theory.stanford.edu/people/jcm/papers/
aplas08-­‐camera-­‐ready.pdf no pedimos que puedan leer el paper, pero sí entender qué pretende, por qué y cómo mapa ver el calendario •  historia y paradigmas •  expresividad, sintaxis y semánGca •  paradigma imperaGvo •  paradigma orientado a objetos •  paradigma funcional •  otros paradigmas