blog de bferro

Curso de Scala presencial "en línea"

En breve estaré impartiendo un curso de Fundamentos del lenguaje de programación Scala, presencial "en línea", usando el sistema Webex Training Center, con todas sus posibilidades. Lo estaré ofreciendo en el horario de la tarde noche dos veces por semana con una duración de 30 horas (5 semanas). Los interesados pueden enviarme un correo a barbaro.ferro@gmail.com para conocer temas, precios y calendario.

¿Cómo crear objetos?

La pregunta que da título a esta entrada, parece tener una respuesta trivial, y en efecto la tiene. No existe otra manera de crear objetos en Java u otros lenguajes similares que no sea a través del operador new del lenguaje. Pero la pregunta se hace interesante si nos detenemos a pensar en qué lugar del código debemos escribir esa creación de objetos, de suerte que un usuario de nuestras clases pueda usar objetos de ella.
En estos días estoy platicando sobre la creación de objetos en uno de los cursos que imparto y me resultó interesante compartir esas pláticas aquí. Siempre habrá alguien que se interese por estas cosas.

Ceylon: Introducción rápida

Una forma de contribuir con Ceylon, o con cualquier otro proyecto de open source, es escribir en la lengua de Cervantes (modificada por Bárbaro), mucho de lo que ya está escrito en el sitio de Ceylon en la lengua de Shakespeare ( modificada por Gavin). Mi intención es traducirlo todo al español y confío en Manzanero con su semana de más de 7 días.
Por lo pronto lo que sigue es una traducción libre de Quick Introduction

Introducción rápida

Es imposible captar la esencia de un lenguaje de programación observando solamente la lista de características. Lo que realmente hace al lenguaje es la combinación de esa pequeñas cosas trabajando juntas. Y resulta que es imposible apreciar esa sinergia sin escribir código. En esta sección vamos a mostrar de manera rápida lo suficiente de Ceylon para lograr un interés suficiente que te conduzca a probar el lenguaje. Lo que sigue por supuesto que no es una lista completa de las características del lenguaje.

Una sintaxis legible y familiar

Curso de programación con el lenguaje Scala

Primera llamada al Curso de Programación con Scala.

Scala es uno de los tantos lenguajes de programación que en los últimos años han surgido para la máquina virtual de Java. Es un lenguaje que combina de manera muy elegante el estilo imperativo de la programación orientada a objetos, con el estilo de la programación funcional.
Scala permite hacer uso de todo el potencial del lenguaje Java e ir mucho más allá para resolver problemas donde la transparencia referencial que se obtiene con la programación funcional es un ingrediente imprescindible para escribir código "limpio".
Este curso introduce al participante conocedor de Java en el mundo de Scala, siguiendo un camino ni largo ni tortuoso y asimilando la "complejidad" del lenguaje "sorbo a sorbo".

Introducción e instalación de Scala

Ya está el sitio de ceylon-lang.org

El día de ayer Gavin King anunció la "salida al aire" del sitio http://ceylon-lang.org. De hecho puse el anuncio en un post anterior, pero me lo marcaron como spam.
Aunque aun no se libera al público, ya está disponible en Github: http://github.com/ceylon.

Welcome to ceylon-lang.org!

Esto seguramente les interesa a varios.

Welcome to ceylon-lang.org!

by Gavin King 17 Nov 2011 ceylon-lang.org

Today, we're proud to announce a dedicated Ceylon community, ceylon-lang.org. Simultaneously, we're opening up access to our git repositories and even providing a special pre-release build of the Ceylon IDE, only for the truly adventurous.

We're not yet quite ready to release Milestone 1, due to a number of unsolved bugs and integration issues. But we're working really hard to get these sorted out!

I'm taking this opportunity to thank Red Hat's James Cobb for the web design, Emmanuel Bernard for setting up the infrastructure behind this site, and Tom Bentley for helping with much of the content. And, while I'm mentioning people's names, I would also like to thank new hires Stef Épardaud and Tako Schotanus for all the work they did getting the compiler up and running as volunteer contributors before coming on board, and David Festal from SERLI for making the IDE happen.

If you're interested in contributing to Ceylon, now is a really great time to get involved!

Discurso de Steve Jobs en Stanford en 2005

Este discurso de Steve Jobs lo paso a menudo en mis clases. Está lleno de bellos mensajes.

I am honored to be with you today at your commencement from one of the finest universities in the world. I never graduated from college. Truth be told, this is the closest I've ever gotten to a college graduation. Today I want to tell you three stories from my life. That's it. No big deal. Just three stories.

The first story is about connecting the dots.

I dropped out of Reed College after the first 6 months, but then stayed around as a drop-in for another 18 months or so before I really quit. So why did I drop out?

Scala: Clases "case" y pattern matching (1/2)

Las clases case (no encuentro un término adecuado en español) son uno de los mecanismos que Scala utiliza para hacer "pattern matching" sobre objetos, sin la necesidad de escribir el código de boilerplate que se requeriría si esta opción no existiera.
Pattern matching es una necesidad en la programación, y en el caso particular de la programación funcional es una técnica natural para resolver muchos problemas que hacen uso de datos recursivos con estructuras arbóreas.
Scala contribuye al pattern matching sobre objetos tratando de lograr cierta uniformidad de la sintaxis funcional y la sintaxis orientada a objetos.
Para describir las clases case y su utilización en el pattern matching necesitamos también hablar de otras cosas como las clases sealed (selladas) y del tipo Option y sus "derivados".
Utilizo aquí los ejemplos del texto de Odersky. Es un caso de estudio sencillo de comprender, y así no se pierde el tiempo. No veo necesario inventarme otros ejemplos.

Veamos primero las clases case

Las patentes de Steve Jobs

Las patentes del mago Jobs, considerado como uno de los grandes inventores de este mundo.
http://www.nytimes.com/interactive/2011/08/24/technology/steve-jobs-pate...

Los niveles de "expertisidad" en Scala

En http://www.scala-lang.org/node/8610, Martin Odersky escribe sobre los niveles de Scala para el principiante y el experto. Me parece interesante "copiar" aquí una parte referente a lo que debe conocerse y usarse según el nivel y el tipo de cosas que desarrollamos. Esto creo que puede orientar a los que están en "amoríos"con este lenguaje.

Level A1: Beginning application programmer
Java-like statements and expressions: standard operators, method calls, conditionals, loops, try/catch
class, object, def, val, var, import, package
Infix notation for method calls
Simple closures
Collections with map, filter, etc
for-expressions

Level A2: Intermediate application programmer
Pattern matching
Trait composition
Recursion, in particular tail recursion
XML literals

Level A3: Expert application programmer
Folds, i.e. methods such as foldLeft, foldRight
Streams and other lazy data structures
Actors
Combinator parsers

Level L1: Junior library designer
Type parameters
Traits
Lazy vals
Control abstraction, currying
By-name parameters

Level L2: Senior library designer

Distribuir contenido