logo_scala

Scala es un lenguaje de programación multi-paradigma que une lo programación orientado a objetos y la programación funcional, que promueven la escalabilidad desde lo más pequeño.

El nombre de Scala significa “Scalable Languaje”, se llama así ya que fue diseñado para poder crecer según la demanda de los usuarios, se puede usar Scala para crear pequeños scripts hasta para desarrollar grandes sistemas muy sofisticados.

Las principales características de Scala son:

  • Tipado estático

    Scala es un lenguaje de tipado estático, lo que quiere decir que une el tipo a una variable durante toda la vida de esa variable. En contraste con los lenguajes de tipado dinámicos que unen el tipo al valor real referenciado por una variable, lo que significa que el tipo de una variable puede cambiar junto con el valor que hace referencia.

  • Orientado a Objetos – (OOP)

    Scala es un lenguaje orientado a objetos puro en el sentido de que cada valor es un objeto y cada operación es una llamada de método. El lenguaje soporta arquitecturas de componentes avanzados a través de clases y traits.

  • Funcional (FP)

    A pesar de que su sintaxis es bastante convencional, Scala es también un lenguaje funcional (FP) en toda regla. Tiene todo lo que se puede esperar, incluyendo funciones de primera clase, funciones anónimas, funciones de orden superior, funciones anidadas, una biblioteca con estructuras de datos inmutables eficientes, y una preferencia general de inmutabilidad sobre la mutabilidad.

    La Programación funcional (FP) es un paradigma de programación que es más antigua que la OOP, que se había refugiado en las torres de marfil de la academia hasta hace poco. El interés por la FP está aumentando debido a la manera que simplifica ciertos problemas de diseño, especialmente la concurrencia.

    Podría parecer que la programación orientada a objetos y FP son incompatibles. De hecho, la filosofía de diseño de Scala es que la OOP y FP sean más de sinergia y no oposición. Las características de uno de los enfoques puede mejorar a la otra.

  • JVM (Java Virtual Machine)

    Scala se ejecuta en todas las máquinas virtuales de Java y también en Android. las clases de Java y Scala pueden combinarse libremente, sin importar si residen en diferentes proyectos o en el mismo. Incluso pueden referirse mutuamente entre sí.

  • Una sintaxis concisa, elegante y flexibles

    Scala utiliza una serie de técnicas para minimizar la sintaxis innecesarios, haciendo el código de Scala tan sucinto como código en lenguajes dinámicos. La inferencia de tipos minimiza la necesidad de información de tipo explícito en muchos contextos. Las declaraciones de tipos y funciones son muy concisas. Scala permite incluir caracteres no alfanuméricos en el nombres de las funciones. Combinado con un poco de azúcar sintáctica, esta característica permite al usuario definir métodos que se parezcan y se comporten como operadores.

  • Arquitecturas Escalables

    Scala está diseñado para escalar desde pequeños scripts interpretado hasta grandes aplicaciones. Scala ofrece cuatro mecanismos del lenguaje que promueven sistemas escalables de composición:

    1. Tipos explícitos;
    2. Miembros de tipo abstracto y genéricos;
    3. Clases anidadas;
    4. Mixin utilizando traits
  • Rendimiento

    Como el código de Scala corre sobre el JVM, se beneficia de todas las optimizaciones de rendimiento realizadas sobre las bibliotecas y el core del JVM.

    Si confía en el rendimiento de Java, puede confiar en el rendimiento de Scala. Por supuesto, algunas construcciones particulares del lenguaje y algunas partes de la biblioteca pueden funcionar considerablemente mejor o peor que otras opciones en otros lenguajes de programación. Siempre deberías perfilar y optimizar tu código cuando sea necesario.

  • Preparado para el Futuro

    Scala brilla especialmente cuando se trata de software de servidor escalable que hace uso de procesamiento concurrente y síncrona, utilización paralela de varios núcleos y procesamiento distribuido en la nube.

    Su naturaleza funcional facilita una escritura segura y una programación multi-hilo de alto rendimiento. Hay menos dependencia del estado mutable y los actores de Scala proporcionan herramientas poderosas para la organización de sistemas concurrentes en un alto nivel de abstracción.

Scala es un lenguaje es un poco difícil dominar porque requiere de competencias en la programación orientado a objetos (OOP), la programación funcional (FP) y el tipado estático, para usarlo más eficazmente.

Recursos

Algunos recursos gratuitos para aprender scala y conocer un poco más del lenguaje:

Comunidades y listas de Correo

Si conoces algún link interesante sobre algún recurso o comunidad no dudes en comentarlo para añadirlo

Referencias

Benjamín

Soy Benjamín Gonzales B, desarrollador de Software con más de 10 años de experiencia, me apasiona todo lo relacionado a las nuevas tecnologías y el software libre. Me gusta investigar , leer y aprender cada día algo nuevo. Desarrollo en LINUX,PHP, JAVA, C#, Javascript, MySql, SqlServer, entre otros y actualmente ando experimentando con lenguajes funcionales como: Erlang, Clojure y Scala. Y otros no funcionales como GO.

Latest posts by Benjamín (see all)

Introducción a Scala
Compartir
Tweet about this on TwitterShare on Facebook3Share on Google+0Share on LinkedIn0Email this to someonePin on Pinterest0Share on Tumblr0Share on Reddit0Share on StumbleUpon0
Etiquetado en:                                    

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *