programación declarativa avanzada lenguaje de programación manuel david romero guerrero uxio prego...

Post on 28-Jan-2016

244 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related