Tag Archive for ruby programación

Ruby, suficientemente rápido

Leyendo una entrevista sobre Ruby y herramientas de visualización me he acordado de algo que me está pasando y que se resume en una parte de la entrevista.

So if execution time isn’t important, why Ruby then? Why not use Java, C or Erlang? I think there are two main reasons. The first is Ruby’s ability to easily access and transform data and Ruby’s ability to integrate with almost anything.

En el trabajo llevo varias semanas trabajando en una herramienta que ayuda al departamento comercial, se trata de una serie de proramas situados entre facturación y ventas que les ayuda a analizar costes y realizar una oferta comercial lo más ajustada. Para ello los distintos programas trabajan con varias decenas de listas de coste, cada uno con miles de precios, para intentar unificarlas y generar una lista de venta que tiene unas centenas de precios.

Siento ser tan vago en detalles, pero diré que se manipulan listas de códigos telefónicos, destinos y precios/costes. Para ello se necesitan transformar muchas filas almacenadas en bases de datos mediante árboles y algunos otros algoritmos más o menos complejos. Todo ello empecé a programarlo en Ruby, que es un lenguaje que permite un prototipado muy rápido, llevandome una grata sorpresa ya que los cálculos se hacían en segundos.

Al ver que los tiempoes eran muy manejables, cree una aplicación Rails, metí las librerías en lib/ y doté de un frontend vía web a la aplicación. Por ahora ha seguido creciendo, y en total el proceso que realizan mensualmente lleva unos 10 minutos. En un principio había pensado reescribir la aplicación, o las librerías, en C# para ganar velocidad, pero ¿realmente merece la pena el esfuerzo? Como mucho, podría ganar 10 minutos cada mes, suponiendo que el proceso pasara a ser instantáneo al reescribirse en un lenguaje compilado.

Más de una vez todos nosotros nos habremos encontrado con la situación de que se necesite alguna herramienta interna, y puesto que los requisitos de ese tipo de aplicaciones suele ser muy diferente, en la mayoría de ocasiones nos vale tener una aplicación con calidad de prototipo que podamos desarrollar rápidamente utilizando un lenguaje/plataforma que quizás no sea la ideal, pero es lo suficientemente rápido y nos permite agilizar la creación de nuestro pequeño monstruo.

Supongo que da para otro post hablar de esos pequeños monstruitos que van creciendo y acaban convirtiendose en algo que no es lo que estaba pensado ¡cuánto echaremos de menos no haberlo planteado y desarrollado de otra forma en esos momentos!