Scala: A SCAlable LAnguage

ScalaScala es un lenguaje de programación híbrido que integra características de los lenguajes funcionales y orientados a objetos. Esta particularidad lo hace un lenguaje muy potente ya que provee más herramientas al momento de resolver problemas de programación.

Scala corre en la maquina virtual de Java (JVM) y es compatible con las aplicaciones Java existentes.

El nombre Scala es una combinación de las palabras «scalable» y «language», significa que que fue diseñado para crecer con las necesidades de sus usuarios.

Orientado a objetos y funcional

Scala es un lenguaje 100% orientado a objetos, esto quiere decir que en Scala todo es un objeto y no existen los tipos primitivos. Además Scala provee soporte completo de programación funcional incluyendo:

  • Currying
  • Pattern matching
  • Tipo de dato algebraico
  • Lazy evaluation
  • Tail recursion
  • Inmutabilidad
  • Funciones anónimas

Integración con Java

Scala corre en la máquina virtual de Java, sus clases pueden ser mezcladas con libertad, sin importar si están en el mismo proyecto o en diferentes proyectos.

Las librerías de Java, frameworks y herramientas están disponibles. Ant y Maven, IDEs como Eclipse, IntelliJ o Netbeans, framewroks como Spring e Hibernate funcionan a la perfección con Scala.

Concurrencia

Scala propone un modelo seguro de concurrencia basado en Actores. Los Actores son procesos concurrentes que se comunican mediante el intercambio de mensajes.

Escribiendo menos código

Una de las características, que quizás será valiosa para los programadores, es que Scala resuelve tareas típicas de programación en menos líneas de código.

Mapas dinámicos

Muchas veces nos toca crear listas de mapas y para ello debemos primero instanciar la lista y los mapas, y luego añadir los valores.

[java]/* JAVA */
public List<Map> createList(){
List<Map> entries = new ArrayList<Map>();
Map e1 = new HashMap();
e1.put(«name»,»john»);
e1.put(«age»,35);
Map e2 = new HashMap();
e1.put(«name»,»mary»);
e1.put(«age»,32);
entries.add(e1);
entries.add(e2);
return entries;
}
[/java]

[scala]/* SCALA */
val entries = List(Map(«name»->»joe»,»age»->35),Map(«name»->»joe»,»age»->32))
[/scala]

Construcción de variables implícita

Algo común para los programadores es crear propiedades privadas en la clases con sus respectivos métodos getter y setter.

[java]/* JAVA */
public class Shape {

private int height;
private int width;

public Shape(int w, int h) {
this.width = w;
this.height = h;
}

public void setWidth(int w) {
this.width = w;
}

public void setHeight(int h) {
this.height = h;
}

public int getWidth() {
return width;
}

public int getHeight() {
return height;
}

}
[/java]

[scala]/* SCALA */
class Shape(val width:Int, val height:Int){
}
[/scala]

Valores por defecto en los parámetros de métodos

Muchas veces necesitamos un valor por defecto para los parámetros que recibe una función cuando estos son nulos.

[java]/* JAVA */
public void draw(Integer sides, Float radius){
if(sides == null || sides == 0){
sides = 3;
}
if(radius == null || radius == 0){
radius = 1.0f;
}
}
[/java]

[scala]/* SCALA */
def draw(side:Int=3, radius:Float=1.0f) = {
}
[/scala]

Forzando restricciones

Algo típico cuando desarrollamos es realizar validaciones sobre los datos, ya que muchas veces los datos deben pertenecer a un dominio específico para que nuestra aplicación funcione correctamente.

[java]/* JAVA */
public Shape(int w, int h) {
if(w <= 0 || h <=0){
throw new IllegalArgumentException();
}
this.width = w;
this.height = h;
}
[/java]

[scala]/* SCALA */
require(width>0 && height>0)
[/scala]

Deducción de tipo

A pesar de que Scala es un lenguaje de tipado estático, puede reducir líneas de código deduciendo el tipo.

[java]/* JAVA */
Integer x = 1;
List intList = new ArrayList();
intList.add(1);
intList.add(2);
intList.add(3);
[/java]

[scala]/* SCALA */
val x = 1
val intList = List(1,2,3)
[/scala]

Documentación

En la web oficial de Scala se puede encontrar una documentación muy completa sobre el lenguaje, como así también tutoriales y guías de inicio para quienes quieran comenzar a conocer y utilizar este lenguaje.

Tags

Access top talent now!

Related

Get in Touch