Title: Diapositiva 1
1Lenguaje de programación
Manuel David Romero Guerrero Uxio Prego
Montón Francisco Tomás López de las Huertas Arance
Programación declarativa avanzada
2ÍNDICE
- QUÉ ES SCALA?
- HISTORIA
- DEMOSTRACIÓN
- CARACTERÍSTICAS
- SINTAXIS
- CONCURRENCIA
- PRESENTE
- FUTURO
- BIBLIOGRAFÍA SOBRE SCALA
Programación declarativa avanzada
3QUÉ 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
4HISTORIA
- 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
5DEMOSTRACIÓN (I)
Java
Máquina Virtual
Plataforma .Net
Programación declarativa avanzada
6DEMOSTRACIÓN (II)
- Directa
- Plugins
- Frameworks
- Eclipse
- Intellij
- Netbeans
Programación declarativa avanzada
7DEMOSTRACIÓN (III)
Programación declarativa avanzada
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
12ALGO DE SINTAXIS (I)
- Tipos por defecto
- Byte, de -27 a 27-1
- Char, de 0 a 216-1
- Short, de -215 a 215-1
- Int, de -231 a 231-1
- Long, de -263 a 263-1
- Float y Double, según el estándar IEEE754
Programación declarativa avanzada
13ALGO DE SINTAXIS (II)
- Tuplas
- Hasta de 22 elementos
Programación declarativa avanzada
14ALGO DE SINTAXIS (III)
Programación declarativa avanzada
15ALGO DE SINTAXIS (IV)
- Aplicación parcial
- modN se aplica parcialmente
Programación declarativa avanzada
16ALGO DE SINTAXIS (V)
- Mapeado
- Se presupone fib declarado previamente
Programación declarativa avanzada
17ALGO DE SINTAXIS (VI)
- Patrones
- Tradicionales
- Tipos existenciales
Programación declarativa avanzada
18ALGO DE SINTAXIS (VII)
- Orientación a objetos pura
- null
Programación declarativa avanzada
19ALGO DE SINTAXIS (VIII)
- Orientación a objetos pura
- null
Programación declarativa avanzada
20ALGO DE SINTAXIS (IX)
- Orientación a objetos pura
- Unit
Programación declarativa avanzada
21ALGO DE SINTAXIS (X)
- Lenguaje de alto nivel
- Expresividad
- Patrones
- Sentencia for comprensiva
- Para empezar
- Compliquemoslo un poco más con un filtrado
Programación declarativa avanzada
22ALGO DE SINTAXIS (XI)
- Sentencia for comprensiva
- Permanencia yield
- Ámbito expandido
- for generativo
Programación declarativa avanzada
23ALGO DE SINTAXIS (XII)
- Lenguaje de alto nivel
- Ligereza
- Concisión
Programación declarativa avanzada
24ALGO DE SINTAXIS (XIII)
- Lenguaje de alto nivel
- Concisión
- Parámetros con valores por defecto
Programación declarativa avanzada
25ALGO DE SINTAXIS (XIV)
- Lenguaje de alto nivel
- Concisión
- Lambda
Programación declarativa avanzada
26ALGO DE SINTAXIS (XV)
- Lenguaje de alto nivel
- Inteligencia
- Integración con XML
Programación declarativa avanzada
27ALGO DE SINTAXIS (XVI)
- Interoperabilidad
- Java
- .NET
Programación declarativa avanzada
28ALGO DE SINTAXIS (XVII)
- Más cosas importantes
- Sentencia Selectiva
- Genericidad
- Tipos parametrizados
Programación declarativa avanzada
29ALGO DE SINTAXIS (XVIII)
- Más cosas importantes
- Genericidad
- Mejora en las restricciones
- A, que hereda de B
- B, del que heredada A
Programación declarativa avanzada
30ALGO DE SINTAXIS (XIX)
- Más cosas importantes
- Genericidad
- Proyección de tipos
Programación declarativa avanzada
31ALGO DE SINTAXIS (XX)
- 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
Programación declarativa avanzada
32ALGO DE SINTAXIS (XXI)
- Más cosas importantes
- Traits
Programación declarativa avanzada
33ALGO DE SINTAXIS (XXII)
- Más cosas importantes
- Paquetes à la C
Programación declarativa avanzada
34CONCURRENCIA (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
35CONCURRENCIA (II)
- Las dos operaciones principales que se pueden
hacer con un actor es enviar y recibir un
mensaje
Programación declarativa avanzada
36CONCURRENCIA (III)
Programación declarativa avanzada
37CONCURRENCIA (IV)
Programación declarativa avanzada
38CONCURRENCIA (V)
Programación declarativa avanzada
39SCALA EN LAS EMPRESAS
Électricité de France
Twitter
Sony
Xebia
Reaktor
Siemens
Programación declarativa avanzada
40PRESENTE (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
41PRESENTE (II)
Programación declarativa avanzada
42FUTURO(I)
- "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
Programación declarativa avanzada
43FUTURO (II)
Funcional
Seguro
Alto Nivel
Multiparadigmático
Elegante
Orientado a Objetos
Concurrente
JVM y .Net
Xquery y XPath
Integrable con Java y XML
Ligero
Tipos estáticos
Inferencia de tipos
Programación declarativa avanzada
44FUTURO (II)
- Escasa Documentación
- No está preparado para la producción
- Librerías estándar
- Sintaxis Compleja
- No tiene Patrocinador Corporativo
Programación declarativa avanzada
45FUTURO (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
46FUTURO (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
47LIBROS 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
48LIBROS 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