Programación declarativa avanzada Lenguaje de programación Manuel David Romero Guerrero Uxio Prego Montón Francisco Tomás López de las Huertas Arance.

1 Programación declarativa avanzada Lenguaje de programac...
Author: Wilfredo Naragon
0 downloads 2 Views

1 Programación declarativa avanzada Lenguaje de programación Manuel David Romero Guerrero Uxio Prego Montón Francisco Tomás López de las Huertas Arance

2 ÍNDICE  ¿QUÉ ES SCALA?  HISTORIA  DEMOSTRACIÓN  CARACTERÍSTICAS  SINTAXIS  CONCURRENCIA  PRESENTE  FUTURO  BIBLIOGRAFÍA SOBRE SCALA Programación declarativa avanzada

3 ¿QUÉ ES SCALA?  Es un lenguaje de programación de propósito general diseñado para expresar patrones comunes de programación de forma concisa y elegante.  Se integran las características de los lenguajes orientados a objetos y funcional.  Scala no es una extensión de Java, pero es totalmente interoperable con él.  Scala se traduce a bytecodes Java y la eficiencia de los programas compilados por lo general es igual que Java. Programación declarativa avanzada

4 HISTORIA  Scala fue diseñado por Martin Odersky y su grupo de la Escuela Politécnica Federal de Lausana (Suiza).  Odersky tenía como objetivo combinar la programación funcional y la programación orientada a objetos.  Se inició en 2001 y la primera versión que se hizo pública fue en 2003. En 2006, se lanzó una segunda versión conocida como Scala v2.0. Programación declarativa avanzada

5 DEMOSTRACIÓN (I) Máquina Virtual Java Plataforma.Net

6 Programación declarativa avanzada DEMOSTRACIÓN (II)  Directa  Plugins  Frameworks Eclipse Intellij Netbeans

7 Programación declarativa avanzada DEMOSTRACIÓN (III)

8 CARACTERÍSTICAS DEL LENGUAJE (I)  Declarativo  Perezoso No puro  Aplicación parcial  Plegado  Filtrado  Mapeado  Patrones A varios niveles Programación declarativa avanzada

9 CARACTERÍSTICAS DEL LENGUAJE (II)  Orientado a Objetos puro  Objeto null  Objeto Unit  Tipificación  Estático  Fuerte Programación declarativa avanzada

10 CARACTERÍSTICAS DEL LENGUAJE (III)  Lenguaje de alto nivel  Expresividad Patrones Sentencia for comprensiva Yield Soporte nativo de expresiones regulares  Ligereza  Concisión  Inteligencia Programación declarativa avanzada

11 CARACTERÍSTICAS DEL LENGUAJE (IV)  Eficiente  Integrable con XML  Interoperabilidad  Java .NET Programación declarativa avanzada

12 ALGO DE SINTAXIS (I)  Tipos por defecto  Byte, de -2^7 a 2^7-1  Char, de 0 a 2^16-1  Short, de -2^15 a 2^15-1  Int, de -2^31 a 2^31-1  Long, de -2^63 a 2^63-1  Float y Double, según el estándar IEEE754 Programación declarativa avanzada

13 ALGO DE SINTAXIS (II)  Tuplas  Hasta de 22 elementos Programación declarativa avanzada

14 ALGO DE SINTAXIS (III)  Perezoso  Pero no puro! Programación declarativa avanzada

15 ALGO DE SINTAXIS (IV)  Aplicación parcial  modN se aplica parcialmente Programación declarativa avanzada

16 ALGO DE SINTAXIS (V)  Mapeado Se presupone fib declarado previamente Programación declarativa avanzada

17 ALGO DE SINTAXIS (VI)  Patrones  Tradicionales  Tipos existenciales Programación declarativa avanzada

18 ALGO DE SINTAXIS (VII)  Orientación a objetos pura null Programación declarativa avanzada

19 ALGO DE SINTAXIS (VIII)  Orientación a objetos pura null Programación declarativa avanzada

20 ALGO DE SINTAXIS (IX)  Orientación a objetos pura Unit Programación declarativa avanzada

21  Lenguaje de alto nivel  Expresividad Patrones Sentencia for comprensiva Para empezar… Compliquemoslo un poco más con un filtrado… ALGO DE SINTAXIS (X) Programación declarativa avanzada

22 Sentencia for comprensiva Permanencia: yield Ámbito expandido for generativo ALGO DE SINTAXIS (XI) Programación declarativa avanzada

23  Lenguaje de alto nivel  Ligereza  Concisión ALGO DE SINTAXIS (XII) Programación declarativa avanzada

24  Lenguaje de alto nivel  Concisión Parámetros con valores por defecto ALGO DE SINTAXIS (XIII) Programación declarativa avanzada

25  Lenguaje de alto nivel  Concisión Lambda ALGO DE SINTAXIS (XIV) Programación declarativa avanzada

26  Lenguaje de alto nivel  Inteligencia  Integración con XML ALGO DE SINTAXIS (XV) Programación declarativa avanzada

27  Interoperabilidad  Java .NET ALGO DE SINTAXIS (XVI) Programación declarativa avanzada

28  Más cosas importantes  Sentencia Selectiva  Genericidad Tipos parametrizados ALGO DE SINTAXIS (XVII) Programación declarativa avanzada

29  Más cosas importantes  Genericidad Mejora en las restricciones A, que hereda de B… B, del que heredada A… ALGO DE SINTAXIS (XVIII) Programación declarativa avanzada

30  Más cosas importantes  Genericidad Proyección de tipos ALGO DE SINTAXIS (XIX) Programación declarativa avanzada

31  Más cosas importantes  Traits Conjunto de métodos parametrizados ¿Cómo las interfaces de Java? Parecido, pero no ¿Cómo las clases abstractas de Java? Sumamente parecido, pero tampoco ¿Y? Herencia múltiple ALGO DE SINTAXIS (XX) Programación declarativa avanzada

32  Más cosas importantes  Traits ALGO DE SINTAXIS (XXI) Programación declarativa avanzada

33  Más cosas importantes  Paquetes “à la C#” ALGO DE SINTAXIS (XXII) Programación declarativa avanzada

34 CONCURRENCIA (I)  El instrumento principal que proporciona Scala para la concurrencia son los Actores (o actors).  Son procesos concurrentes que se comunican a través del intercambio de mensajes.  La librería de Actors de Scala proporciona envío de mensajes tanto asíncronos como síncronos. Programación declarativa avanzada

35 CONCURRENCIA (II) Las dos operaciones principales que se pueden hacer con un actor es enviar y recibir un mensaje: Programación declarativa avanzada

36 CONCURRENCIA (III) Programación declarativa avanzada

37 CONCURRENCIA (IV) Programación declarativa avanzada

38 CONCURRENCIA (V) Programación declarativa avanzada

39 SCALA EN LAS EMPRESAS Électricité de France Twitter Xebia Sony Siemens Reaktor Programación declarativa avanzada

40 PRESENTE (I) Posición Abril 2010Lenguaje ProgramaciónÍndice Abril 2010 1C18.058% 2Java18.051% 3C++9.707% 4PHP9.662% 5(Visual) Basic6.392% 6C#4.435% 7Python4.205% 8Perl3.553% 9Delphi2.715% 10JavaScript2.469% 27Scala0.433% 40Caml/F#0.280% 43Prolog0.258% Programación declarativa avanzada

41 PRESENTE (II) Programación declarativa avanzada

42 FUTURO(I) Programación declarativa avanzada  "Creo que hay un mercado mundial de quizas unos cinco ordenadores." THOMAS WATSON, chairman de IBM, 1943.  "Pero... para que nos van a servir?" Ingeniero de la Advanced Computing Systems Division de IBM, 1968, hablando de los microchips.  "¿Quien demonios va a querer oir hablar a los actores?" H.M. WARNER, Warner Brothers, 1927.  Muchas veces la gente no sabe lo que quiere hasta que se lo enseñas. Steve Jobs

43 FUTURO (II)  The New Big Thing Programación declarativa avanzada Alto Nivel Multiparadigmático Ligero Elegante Seguro Orientado a Objetos Funcional Concurrente JVM y.Net Integrable con Java y XML Xquery y XPath Tipos estáticosInferencia de tipos

44 FUTURO (II)  The New Big Thing Programación declarativa avanzada  Escasa Documentación  No está preparado para la producción  Librerías estándar  Sintaxis Compleja  No tiene Patrocinador Corporativo

45 FUTURO (III)  ¿Imperativo o Funcional?  El Creador  Los Usuarios  El continuador de Java  Productividad  Incorpora vacíos de Java  Proyectos con varios lenguajes  Concurrencia Programación declarativa avanzada

46 FUTURO (IV)  Enseñanza y Aprendizaje  Puristas FuncionalHaskell / F# ImperativoC / C++ Orientado a ObjetosJava / C#  Constructivistas Programación como un todo  Se recomienda por ser Interesante la combinación de paradigmas Programación declarativa avanzada

47 LIBROS SOBRE SCALA (I) Programming in Scala (Martin Odersky, Lex Spoon y Bill Venners – Noviembre 2008) Beginning Scala (David Pollak – Mayo 2009) Programación declarativa avanzada

48 LIBROS SOBRE SCALA (II) Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine (Venkat Subramaniam – Julio 2009) Programming Scala (Alex Payne y Dean Wampler – Septiembre 2009) Programación declarativa avanzada

49 LIBROS SOBRE SCALA (III) Steps in Scala (Christos KK Loverdos y Apostolos Syropoulos – Septiembre 2010) Programación declarativa avanzada