Friday, September 26, 2008

Libro Ruby Gratuito

Acaba de hacerse disponible el libro "The Ruby Way", de Hal Fulton, para descargarlo gratuitamente, en formato *.chm (Microsoft help) . 


Referencia:
"The Ruby Way", de Hal Fulton en formato chm, en rapidshare

Metaprogramación en el Ruby C API

Acaban de publicar un artículo interesante sobre metaprogramación en el Ruby C API.

Referencia:
"Metaprogramming in the Ruby C API".

Thursday, September 25, 2008

Inteligencia Artificial en Ruby

Ola Bini de ThoughtWorks, en Suecia, anunció recientemente la intención de traducir el libro "Paradigms of Artificial Intelligence Programming" de Peter Norvig, de Lisp a Ruby.

El código se encontrará disponible en github.

Referencia:
Ola Bini, sitio oficial

Conferencia Lone Star Ruby 2008

Conferencia Lone Star Ruby 2008 tuvo lugar entre los día 4-6 de Septiembre, en Austin, Texas.

Partes de la conferencia se encuentran en video en línea.

Referencia:
Conferencia Lone Star Ruby 2008, sitio oficial

Rails en Genética

Me acabo de encontrar esta presentación que parece implicar que ya hay un proyecto en la red usando Rails para desplegar resultados de análisis genéticos.



El sitio se llama ensembl.org y reúne datos y herramientas para genetistas, que les permite reportar y analizar diferentes proyectos relacionados con el genoma humano, además del de otras especies. Parece indicar que empezaron a construir muchos de los módulos en Perl, pero ahora están usando Ruby/Rails.

Todavía no he encontrado un texto que explique esto, pero las imágenes de la presentación y el portal hablan por si solos.

Referencia:
Genomes on Rails
ensembl.org

Tuesday, September 23, 2008

Neal Ford habla sobre Programación Políglota

Neal Ford, de ThoughtWorks, nos habla en una entrevista sobre la influencia creciente del lenguaje Ruby. En esta entrevista, nos dice lo siguiente:

* Que ya Java lleva 12 años de historia, y empieza a parecer un lenguaje viejo;
* la compatibilidad con lenguajes anteriores, C/C++, pasa a ser una desventaja;
* Afortunadamente Java es dos cosas: lenguaje y plataforma;
* usando la plataforma Java, se puede ahora escribir en otros lenguajes, tales como Groovy, un dialecto de Java más moderno;
* también vale la pena mirar a a JRuby, que es un lenguaje super-moderno (Ruby), pero esta versión compila a bytecodes de Java;
* Ruby es un lenguaje mucho más expresivo que Java o Groovy; de hecho, quizás se puede decir que Ruby es el lenguaje más poderoso en este momento;
* JRuby es Ruby corriendo sobre la plataforma Java.
* en la escala de Paul Graham, Java obtiene 4/9 puntos; Ruby obtiene 8/9.
* Rails es una plataforma para desarrollo web, y mucho de su potencial lo deriva de Ruby, que es un lenguaje bastante poderoso.
* Mingle, hecho en Ruby/Rails, pero también en JRuby; explota la productividad de Ruby/Rails, y la conveniencia de la plataforma Java;
* este modelo se verá más y más, "programación políglota": el uso simultáneo de varios lenguajes y plataformas, porque no hay un lenguaje ideal para hacerlo todo.
* Hoy en día los programadores usan varios lenguajes simultáneamente: Java, SQL, Javascript, XML, HTML, etc
* Seguirá siendo común el uso de lenguajes especializados para solucionar problemas específicos.
* Debido a la limitación en el hardware de la "Ley de Moore", nos acercamos al límite físico del número de transistores por unidad de espacio, así que, de ahora en adelante, veremos múltiples "núcleos" de procesadores, y por lo tanto, habrá necesidad de explorar la programación paralela.
* Con "programación políglota" las partes concurrentes se pueden escribir en Scala, o Jaskell (un dialecto Java de Haskell), que pueden manejar la concurrencia intrínsicamente, aliviando al programador de los dolores de cabeza; escribir la otra parte (GUI) en Ruby/Rails, y el resto en la misma JVM.
* Con Groovy y JRuby se pueden hacer meta-programas. Este hecho hace que Ruby sea muy apetecido y se le encuentre muy superior a Java. La meta-programación permite la posibilidad de extender las clases básicas de Java. Poder extender java.lang.String es una cosa necesaria en cualquier proyecto que se haga.
* Los lenguajes y ambientes restringidos (Java, C#) afectan la productividad de los mejores programadores.
* Ruby/Rails es un buen ambiente para programar, pues Ruby tiene esa flexibilidad en el lenguaje.
* En Java han tratado de hacer lo mismo con AspectJ, pero es demasiado complejo.
* Rails es un lenguaje específico para desarrollar aplicaciones web, hecho en Ruby, crea una abstracción que simplifica el trabajo; usa el poder de Ruby, y lo simplifica para programadores.
* "Something Nimble", un sitio explicando cosas que se pueden hacer en Ruby;
* debido a la complejidad de aprender varios lenguajes, habrá gente que se especialice en Scala, etc.
* los tres mejores libros (según Neal Ford) son:
- "The Pragmatic Programmer", Hunt & Thomas
- "Refactoring", Fowler, et.al.
- "Smalltalk Best Practice Patterns", Kent Beck

Referencias:
Entrevista en InfoQ (24-Aug-2008)
sitio oficial de Paul Graham
Programación Políglota
Haskell, sitio oficial
Groovy, sitio oficial
JRuby, sitio oficial
AspectJ, sitio oficial
Ruby on Rails, sitio oficial
Something Nimble, sitio oficial