Wednesday, February 4, 2009

Diferencias entre Ruby 1.9.1 y 1.8.x

Bueno, y qué hay de nuevo en Ruby 1.9.1?

En resumidas cuentas:
- nueva máquina virtual (antes era solo un interpretador AST)
- algunos objetos han sido sometidos a dieta de memoria (Object, Array, String, etc)
- mucho más rápido (ver Antonio Cangiano)
- soporte para caracteres multilingües;
- nueva sintaxis para Hashes con símbolos como llaves, y ahora las llaves preservan el orden;
- muchos cambios al API (mejoras, consistencia, remueven código obsoleto, etc.);
- cambios en la semántica del lenguaje (argumentos a bloques ahora funcionan casi como argumentos a métodos);
- índice a cadena ahora retorna subcadena de longitud 1;
- dos puntos (:) ahora ya no se pueden usar en if y en when;
- String.each ya no existe;
- nueva literal para lambdas: ->
- iteradores externos (class Enumerator) ahora hacen parte del lenguaje;
- concepto nuevo, fibras (class Fiber);
- lazos nativos (con GIL, como Python);
- rubygems, rake ahora son parte del lenguaje;
- minitest reemplaza el test/unit viejo;

Los libros citados en las referencias saldrán en mes y medio. Yo también estoy actualizando el mío, "Ruby Fácil", y estará listo en un par de semanas, pues no tengo que lidiar con la burocracia y distribución de las casas de imprenta.

Referencias:
Lista oficial de diferencias, Ruby-lang
"Ruby 1.9: What to Expect", Dave Thomas y David A Black, RubyConf2008, video en Confreaks
"1.9.1?", tema en Ruby-Forum
"The Great Ruby Shootout", Antonio Cangiano
"10 Things to be Aware of in moving to Ruby 1.9", David A Black
"Son of 10 Things ...", David A Black
"Programming Ruby 1.9", Dave Thomas (saldrá en Abril-2009)
"The Well-Grounded Rubyist", David A Black (saldrá en Marzo 2009)

8 comments:

QuarK said...

Muy buenas, empecé hace un par de días a empollar ruby, tengo intención de ver si es viable meterme con rails en lugar de con php para mi proyecto final. He usado otros lenguajes, aparte de los que dí en la carrera, pero este me encanta, ya que me parece bastante distinto al resto y así de paso que hago el proyecto, aprendo un nuevo lenguaje.
Pero me he topado con que está en una transición y claro, toda la documentación que encuentro es de versiones posteriores... ¿hay algún manual actualizado? es que he leido algún manual de ruby, pero sé que hay varias cosas que van a cambiar y no sé si empezar con la 1.8.7 o la 1.9.1.. supongo que me tocará coger el manual en una mano y el changelog en otra y tachar lo que vea cambiado.. ¿no?

Diego F Guillen-Nakamura said...

Hola Quark, gracias por tu comentario. Sinceramente creo que es mejor meterse de una vez a aprender con las versiones estables que hay alla afuera (Ruby 1.8.6, Ruby 1.8.7, y Rails 2.1, Rails 2.2), que se encuentran disponibles para Windows, Linux y MacOS. Hay mucho por aprender, asi que es mejor meterse de cabeza en esto ahora mismo. Despues, cuando vayan saliendo las nuevas versiones, pues queda mas facil aprender las diferencias (el delta) poco a poco.

QuarK said...

Muchas gracias por la respuesta :), estaba mirando de si, en lugar de aventurarme con rails, lo hacía con django, pero me corre prisa aprender y parece que rails será más amigable y me facilitará muchas cosas..
Lo único que echo de menos de django es el que esté integrada la librería de login, que no sea por terceras personas.. es un rollo tener que programar de cero algo tan delicado y que pueda llevar tanto tiempo (hablo desde la experiencia de php). ¿sabes si rails tiene algo parecido?

Diego F Guillen-Nakamura said...

Me parece que la sintaxis de Ruby es mucho mas elegante que la de Python; aunque los marcos Python/Django y Ruby/Rails son igual de maduros, y comparan casi igual; te invito a visitar estas dos paginas que los comparan de una manera imparcial: http://www.scribd.com/doc/121814/RailsDjango-Comparison
http://jesusphreak.infogami.com/blog/why_django
Si haces un search en Google por "rails authentication", vas a encontrar como 4,000 paginas. A pesar de que prefiero Ruby/Rails, tambien he pasado algun tiempo con Python, y no quiero empezar otra guerra de lenguajes; yo diria que cada uno tiene su merito, y su grupo religioso de seguidores, que varia de region en region. Aprende ambos ... :-)

QuarK said...

La verdad lo de python me lo planteé por puro pragmatismo, estaba entre los dos y para decidirme fuí a infojobs y ví cuántas ofertas habían de cada uno (lo suelo hacer a la hora de plantearme aprender una tecnología), de python había bastante más que de ruby y luego que google tenía parte de lo suyo en python y tal.. pero, personalmente, se me hace más feo, sé que es una tontería, pero ver un código en python no me causa la misma sensación que verlo en ruby, me parece más entendible, me anima más a aprenderlo, pero vamos es algo subjetivo.
Django me parece una gran herramienta, buenísima, pero estoy más acostumbrado, por manejar codeigniter, a la estructura de carpetas y al funcionamiento de rails.. así que creo que me costará menos :D.
Muchas gracias por los consejos, seguiré leyendo tu blog :).

ea2fp said...

Hola.
Soy nuevo en programación y además no tengo ni idea de Inglés. Estoy intentando llevar a cabo el manual Ruby facil. Me acabo de comprar la 2ª edición, la versión no impresa (supongo que los de lulu la mandarán via E-mail). Encuentro que los ejercicios que propones(en la 1ª edicion), (Alguno de ellos de mucho nivel para novatos) podrían estar con las soluciones, asi podríamos estudiarlos y seguir adelante con mejor comprensión.
¿Algún sitio para hacer ejercicios en Español con las soluciones. ¿algo mas de documentación en Español.
Te agradecería de sitios en Español.

Saludos
Chemamata.
73 EA2FP

Diego F Guillen-Nakamura said...

Hola Chemamata,

Gracias por tu compra. Los de Lulu te haran llegar el libro por medios digitales.

Si, todos los ejercicios tienen las soluciones al final del libro, asi que puedes copiarlos, pegarlos usando un editor, y ejecutarlos para ver como funcionan. [pon especial cuidado al copiar-pegar, que a veces no todos los signos se copian tal como estaban intencionados, porque el font del libro es diferente al de los editores para programadores]

Algunos ejercicios tienen especial inclinacion hacia ingenieria, especialmente los de tipo numerico. Pero a medida que avanzas en el libro veras ejemplos mas realistas, orientados hacia la programacion web.

Ningun lenguaje es la ultima panacea, pero veras que cada lenguaje tiene sus idiosincracias y nos ensena a pensar de una manera diferente.

Buen provecho, y mucho animo.

Diego F Guillen-Nakamura said...

Hola Chemamata,

Lastimosamente no te puedo recomendar ningun otro libro en espanol, porque no conozco ninguno. Yo leo todo mi material en ingles para poder estar al dia con la tecnologia. Te recomiendo que hagas un esfuerzo por aprender ingles, porque puede influir muy positivamente en tu carrera profesional, cualquiera que ella sea.

De pronto podrias tratar de ponerte en contacto con los usuarios de Ruby en tu localidad, para que haya un intercambio positivo de ideas. Podrias tambien averiguar en las universidades de tu localidad, que siempre hay otros estudiantes igual de inquisitivos y motivados.

Solamente conozco de la existencia del Foro de Rails en Espanol. De pronto te pueda servir cuando ya entiendas un poco mas sobre Ruby, y quieras seguir con Rails. La direccion de este foro es: http://www.ruby-forum.com/forum/22

Siento mucho no poderte ayudar mas en ese sentido; vivo en un pais que no habla espanol, y no tengo ningun material en espanol a mi alcance.

Suerte.