Upload
wilfredo-naragon
View
241
Download
0
Embed Size (px)
Citation preview
1
Programación declarativa avanzada
Lenguaje de programación
Manuel David Romero GuerreroUxio 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
Programación declarativa avanzada
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)
8CARACTERÍSTICAS DEL LENGUAJE (I)
Declarativo Perezoso
No puro Aplicación parcial Plegado Filtrado Mapeado Patrones
A varios niveles
Programación declarativa avanzada
9CARACTERÍSTICAS DEL LENGUAJE (II)
Orientado a Objetos puro Objeto null Objeto Unit
Tipificación Estático Fuerte
Programación declarativa avanzada
10CARACTERÍ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
11CARACTERÍ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
39SCALA EN LAS EMPRESAS
Électricité de FranceTwitter
Xebia
Sony
SiemensReaktor
Programación declarativa avanzada
40
PRESENTE (I)Posición Abril 2010 Lenguaje Programación Índice Abril 2010
1 C 18.058%2 Java 18.051%3 C++ 9.707%4 PHP 9.662%5 (Visual) Basic 6.392%6 C# 4.435%7 Python 4.205%8 Perl 3.553%9 Delphi 2.715%
10 JavaScript 2.469%
27 Scala 0.433%
40 Caml/F# 0.280%
43 Prolog 0.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 .NetIntegrable con Java y XML
Xquery y XPath
Tipos estáticos Inferencia 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
Funcional Haskell / F# Imperativo C / C++ Orientado a Objetos Java / 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
49LIBROS SOBRE SCALA (III)
Steps in Scala
(Christos KK Loverdos y Apostolos Syropoulos – Septiembre 2010)
Programación declarativa avanzada