Scala

Lenguaje funcional sobre la JVM, orientado a concurrencia y paralelismo.

Scala: Parte 2

Los primeros pasos en Scala
Como había comentado en mi post anterior sobre el lenguaje Scala, mi pretensión es contribuir "paso a paso" con algunas de las cosas importantes de este lenguaje, discutiendo conceptos relevantes y algo de código para ilustrar esos conceptos.
Creo que es necesario aprender a caminar con pasos firmes para después correr, y por esa razón me voy despacio explicando cada cosa en su momento.
Casi todos los libros y tutoriales de Scala aconsejan comenzar con el intérprete de Scala y "oyendo" a los que saben voy a hacer lo mismo, aunque también me gustaría "saltar del REPL a programas completos. Esa forma me ha ayudado a entender el lenguaje, aunque debo confesar que aun me falta mucho por aprender y que bueno que sea así pues evito el aburrimiento.
El REPL (Read Eval Print Loop) es un shell interactivo que compila código de Scala y retorna el resultado (o el tipo) de manera inmediata. Espero que todos los que leen esto ya tengan en su máquina a Scala y puedan interactuar con el intérprete a medida que leen esta notas.
Definamos algunas variables en el REPL:

scala>val mensaje = "Hola Java Mexico"

HolaMundo en Scala II: Actores

Apenas ayer publiqué mis pininos en Scala. He seguido leyendo un poco al respecto y después hice una segunda versión, con una clase menos, que fue sustituida por una función.

Ahora hice una tercera versión, usando actores. Esto de los actores ya seguramente el Dr. Ferro nos lo explicará mejor en la serie que está escribiendo de Scala. Los actores es la manera en que se maneja concurrencia de manera sencilla en Scala. Aquí me doy cuenta que sí tomaron algunas cosas prestadas de Erlang, un lenguaje de programación funcional creado expresamente para programación concurrente que alguna vez empecé a aprender pero por falta de práctica (porque no tenía un proyecto real que pudiera realizar con él) lo dejé.

Ahora que veo Scala, el modelo de comunicación entre procesos es muy similar, obviamente con algunas diferencias importantes: En Erlang se manejan procesos ligeros, que no corresponden con hilos como los conocemos; la comunicación entre procesos es muy rápida y los procesos ocupan muy poca memoria, por lo que se pueden tener varios miles de procesos corriendo en una aplicación Erlang sin que represente un alto costo al hardware (en términos de CPU/RAM); Erlang no tiene variables, en el sentido de que sean modificables; cuando se crea una variable, y se le asigna un valor, ya así se queda, no se puede modificar.

HolaMundo (en Scala)

Hace tiempo que quiero aprender Scala, pero no he tenido oportunidad de hacerlo. Hoy me decidí a aprender aunque sea un poquitititito, y me topé con una buena idea para hacer mi primer programa: Un servidorsito muy simple, que implemente el protocolo "hola mundo".

Hay que poner un servidor a escuchar conexiones TCP en un puerto; cada conexión que se recibe, debe leer un renglón de texto (se espera un nombre) y devolver un saludo a ese nombre, para después cerrar la conexión.

Tomé la idea de un ejemplo que puse como comentario en un foro aquí mismo. Así puedo comparar...

Pues bien. Primero que nada, la clase que implementa el protocolo, utilizando streams. Lo primero que me topé es con que aquí sí tengo que importar java.io, java.net, etc. Y otra cosa, que no se puede poner * para importar todas las clases, sino que hay que usar subguión.

Scala: Parte 1

En este sitio se han discutido algunas de las cosas del lenguaje Scala, todas ellas muy interesantes y que han llamado la atención de los participantes en esta comunidad.

Tengo la intención de escribir varios artículos sobre este lenguaje de manera “disciplinada” lo que quiere decir comenzar desde el principio, aunque seguramente repetiré algunas de las cosas que ya se han dicho aquí. Eso no es traumático: a veces conviene leer lo que varios dicen sobre lo mismo.

Seguramente va a suceder que los posts queden “algo” extensos: pongo el parche antes que salga el grano, aceptando cualquier crítica al respecto y a otras cosas que pueda escribir aquí.

Comienzo entonces con una introducción al lenguaje. Para algunos será “pan comido” para otros será carbohidrato por digerir.

Scala es un lenguaje escalable
Scala es bautizado con ese nombre para precisamente decir que se inventa un lenguaje escalable.

ViveCodigo ataca de nuevo con una emisión doble sobre Scala

Me complace nuevamente anunciar que ViveCodigo.org el podcast con screencast, ha publicado un nuevo episodio en el cual entrevistamos a Julio Carlos Sanchez (@TheGeekInside) que nos habla sobre Scala. Fue una entrevista muy interesante ya que ademas platicamos de la creación de una empresa llamada TypeSafe (http://typesafe.com) que se va a encargar del desarrollo de Scala y Akka (libreria de actores para Scala y Java). La platica se puso muy buena, tanto que tuvimos que partir el episodio en 2 partes, en le primer parte es la entrevista y la segunda un screencast de introducción a Scala.

Aqui la entrevista

Acá la parte practica de introducción a Scala.

Acá podrán ver todas las ligas que comentamos, así como el código fuente del screencast: http://vivecodigo.org/2011/05/18/podcast-2-de-la-temporada-0/
Muchas gracias por ver el podcast, esperamos sus comentarios.
Saludos

Distribuir contenido