Vous êtes sur la page 1sur 12

Tema 6: Programacin funcional en Scala

Sesin 17: Introduccin a Scala (1)

martes 5 de abril de 2011

Referencias
Programming in Scala. Martin Odersky, Lex Spoon, Bil Venners. Ed. Artima.
Programming Scala. Dean Wampler, Alex Payne. Ed. O'Reilly.
Scala by Example. Martin Odersky. November 2010.
A Scala Tutorial for Java programmers. Michel Schinz, Philipp Haller.
November 2010.
The Scala Language Specification. Martin Odersky. November 2010.

martes 5 de abril de 2011

El lenguaje de programacin Scala


Se desarrolla en 2001 en la universidad EPFL (Suiza) por un equipo dirigido
por Martin Odersky
El objetivo principal del lenguaje es integrar el paradigma funcional y el
paradigma orientado a objetos
nfasis en la facilidad del desarrollo de componentes reusables
Est basado en Java: los programas en Scala se compilan a bytecodes de
Java y se ejecutan en la mquina virtual Java
Sus caractersticas funcionales lo hacen muy apropiado para desarrollar
programas muy eficientes en arquitecturas paralelas formadas por granjas de
mltiples ordenadores (Twitter usa Scala)
Sitio web: www.scala-lang.org
martes 5 de abril de 2011

Unificacin de PF y POO
Programacin funcional: hace fcil desarrollar cosas interesantes desde
partes sencillas, usando:
funciones de orden superior
tipos algebraicos y pattern matching
polimorfismo paramtrico
Programacin orientada a objetos: hace fcil adaptar y extender sistemas
complejos, usando:
especializacin (subclases) y herencia
configuraciones dinmicas
clases como abstracciones parciales
martes 5 de abril de 2011

Diseo de Scala
Lenguaje moderno que satisface las necesidades ms importantes de los
desarrolladores actuales
Completamente compatible con Java
Modelo de objetos uniforme
Pattern matching
Funciones de orden superior
Nuevas formas para abstraer y componer programas

martes 5 de abril de 2011

Caractersticas de Scala
Estticamente tipeado, con caractersticas de scripting porque en muchas
ocasiones el compilador realiza una inferencia de tipos
Interoperabilidad: encaja perfectamente en un entorno Java.
Conciso

// Java
class MyClass{
private int index;
private String name;
public MyClass(int index, String name){
this.index = index;
this.name = name;
}
}
// Scala
class MyClass(index: Int, name: String)

martes 5 de abril de 2011

Scala utiliza la PF
Un par de ejemplos con funciones de orden superior:
//Java
boolean nameHasUpperCase = false;
for (int i=0; i<name.length(); ++i){
if(Character.isUpperCase(name.charAt(i))){
nameHasUpperCase = true;
break;
}
}

//Scala
val nameHasUpperCase = name.exists(_.isUpperCase)

martes 5 de abril de 2011

Scala utiliza la PF
scala> val matrix = Array(Array(1, 0, 0),
Array(0, 1, 0),
Array(0, 0, 1))
matrix: Array[Array[Int]] = Array ([I@164da25,...
scala> matrix.exists(row => row.forall(0 ==))
res13: Boolean = false

martes 5 de abril de 2011

Scala es orientado a objetos


A diferencia de Java o C++ en Scala no existen tipos primitivos que no son
objetos
Todas las expresiones se compilan a llamadas a mtodos de objetos
scala> (1).hashCode
res8: Int = 1
scala> (1).+(2)
res10: Int = 3

Veremos ms detalles de POO en Scala en los ltimos tema de la asignatura

martes 5 de abril de 2011

Scala como intrprete y compilador


Scala permite ejecutar sus programas en modo scripting o en modo
compilado
Hasta ahora hemos usado el intrprete de Scala
Cada lnea de cdigo es compilada y se genera bytecode que es ejecutado
por la MV Java

martes 5 de abril de 2011

Scala como intrprete y compilador


Se puede llamar a un script de Scala con el comando scala
println("Hola, "+ args(0) +"!")
args.foreach(arg => println(arg))

Tambin es posible utilizar el compilador de Scala explcitamente, con el


comando scalac
helloworld.scala:
// Definimos un singleton: una clase con un nico objeto
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}
$ scalac helloworld.scala
$ scala HelloWorld

martes 5 de abril de 2011

Expresiones y funciones simples en el intrprete


El intrprete analiza las expresiones, realiza las inferencias de tipos
necesarias y evalua la expresin:
scala> 5 + 2 * 3
scala> 5 + 2.0 * 3
scala> "hola" + " mundo!"

martes 5 de abril de 2011

Vous aimerez peut-être aussi