Download SCALA Lenguaje de Programación

Document related concepts
no text concepts found
Transcript
SCALA
0011 0010 1010 1101 0001 0100 1011
Lenguaje de Programación
1
2
4
0011 0010 1010 1101 0001 0100 1011
1
2
4
Scala
0011 0010 1010 1101 0001 0100 1011
• Es un lenguaje de programación de alto nivel
multi-paradigma diseñado para expresar patrones
comunes de programación en forma concisa,
elegante y con tipos seguros.
1
2
• Integra sutilmente características de lenguajes
funcionales y orientados a objetos.
4
• Toma muchas ideas de otros lenguajes anteriores
(de Smalltalk a Erlang, de Haskell a ML, de Eiffel a
0011 0010 1010 1101 0001 0100 1011
Ruby) y las intenta aglutinar en un lenguaje
aparentemente amplio pero que esconde un núcleo
conciso y compacto. La mayoría de la funcionalidad
más visible está implementada en forma de
librerías.
• Escala deriva de Funnel, que es un lenguaje mucho
más formal.
• Tampoco hay que olvidar la relación de Scala con
Java, claro. Es significativo, por ejemplo, que el
propio autor del lenguaje en su libro Programming
in Scala haga tantas referencias a Java.
1
2
4
Algo de Historia
0011 0010 1010 1101 0001 0100 1011
• Fue creado en la Escuela Politécnica Federal de
Lausanne por Martin Odersky en el año 2001.
• Fue liberada públicamente en la plataforma Java
en Enero del 2004, y en la plataforma.NET en
Junio del mismo año. Una segunda versión del
lenguaje fue liberado en Marzo de 2006.
1
2
4
Sobre su Autor…
0011 0010 1010 1101 0001 0100 1011
• Martin Odersky, nacio en Alemania el
5 de Septiembre de 1958
• En el año 2007 se une a la ACM.
• Actualmente es profesor de la cátedra
de Métodos de Programación en la EPFL.
1
2
4
Escala es Funcional
0011 0010 1010 1101 0001 0100 1011
• Scala es también un lenguaje funcional en el
sentido de que cada función es un valor. Scala
proporciona una sintaxis ligera para definir
funciones anónimas, es compatible con las
funciones de orden superior, permite que las
funciones se aniden y admite currificar.
• Las clases de casos de Scala y su compatibilidad
integrada para la coincidencia de patrones modelan
tipos algebraicos utilizados en muchos lenguajes de
programación funcionales.
1
2
4
…………….
0011 0010 1010 1101 0001 0100 1011
• Además, la noción de coincidencia de patrones de
Scala naturalmente amplía al procesamiento de
datos XML con la ayuda de patrones de secuencia.
En este contexto, las comprensiones de secuencia
son útiles para la formulación de consultas. Estas
características hacen que Scala sea ideal para el
desarrollo de aplicaciones como servicios web.
1
2
4
Su Mutua relación con POO
0011 0010 1010 1101 0001 0100 1011
• Después de pensar que Java era un lenguaje sin
mucho futuro, acabo de encontrar un lenguaje que
podría salvar a Java y mantenerlo como el lenguaje
de máquina de alto nivel de la JVM, cuyo propósito
es soportar su próximo lenguaje de alto nivel.
• Parece el mejor lenguaje para la JVM, y tiene una
ventaja final: al ser OO podría ser adoptado
rápidamente por la comunidad de Java, mientras
aprenden a utilizar las capacidades adicionales que
tiene el lenguaje, presentando la rara oportunidad
de una transición aparentemente tranquila.
1
2
4
………
0011 0010 1010 1101 0001 0100 1011
• Scala beneficia de la madurez y de la diversidad
de las bibliotecas que han hecho la fuerza de Java
desde una decena de años. Además, es posible de
invocar del código escrito Scala a marchar de
programas escritos Java lo que facilita la
transición de Java a Scala.
• La implementación actual corre en la máquina
virtual de Java y es compatible con las aplicaciones
Java existentes.
1
2
4
Que soporta Scala
0011 0010 1010 1101 0001 0100 1011
• · clases genéricas,
· anotaciones de variación,
· límites de tipo superior e inferior,
· clase interior y tipos abstractos como miembros de objeto,
· tipos compuestos,
· referencias automáticas tipeadas de manera explícita,
· vistas y
· métodos polimórficos.
· Un mecanismo de inferencia de tipo local se encarga de que
no se le requiera al usuario anotar el programa con la
información de tipo redundante. En combinación, estas
características proporcionan una base poderosa para la
reutilización segura de abstracciones de programación y para
la extensión de la seguridad de tipos de software.
1
2
4
Funcionamiento de Scala
0011 0010 1010 1101 0001 0100 1011
• Cualquier método puede utilizarse como un
operador de infijo o de sufijo y los cierres se
construyen automáticamente en función del tipo
esperado (destino escribiendo).
• Un uso conjunto de ambas características facilita
la definición de nuevas instrucciones sin extender
la sintaxis y sin utilizar instalaciones de
programación meta similares a macro.
1
2
4
……………
0011 0010 1010 1101 0001 0100 1011
• Scala está diseñado para interoperar con populares
entornos de programación como Java 2 Runtime
Environment (JRE) y .NET Framework (CLR). En
particular, la interacción con los lenguajes
orientados a objetos como Java y C# es tan suave
como sea posible. Scala tiene el mismo modelo de
compilación (compilación separada, carga de clase
dinámica) como Java y C# y permite el acceso a
miles de bibliotecas de alta calidad.
1
2
4
“Hola Mundo” en Scala
0011 0010 1010 1101 0001 0100 1011
• object HelloWorld { def Mano(args:
Array[String]) = println("Hello, world!") }
1
• object HelloWorld extends Aplicación {
println("Hello world!"); }
2
4
Pagina Oficial
0011 0010 1010 1101 0001 0100 1011
• http://www.scala-lang.org/
1
2
4
0011 0010 1010 1101 0001 0100 1011
1
2
4
0011 0010 1010 1101 0001 0100 1011
1
2
4
Algunas Aplicaciones:
0011 0010 1010 1101 0001 0100 1011
• Twiter esta basado en el lenguaje Scala
1
2
4
0011 0010 1010 1101 0001 0100 1011
1
2
4