Posteado por: israelantezana | 28 - julio - 2009

¿Programar en ruby significa escribir menos código?

A manera de aprender/practicar Ruby acabo de terminar de implementar un pequeño juego que previamente implemente en Java. Tengo entonces dos implementaciones del mismo juego: Java y Ruby. Ambos implementan exactamente la misma funcionalidad. Tienen practicamente las mismas pruebas/specs. Y en ambas versiones intente producir código limpio fácil de entender y modificar.

Algo interesante, surge al comparar la cantidad de codigo de ambas implementaciones:

  Ruby Java % Diferencia
Nro. Líneas 746 1033 38.5%
Nro. Caracteres 21299 29694 39.4%

 

En un programa pequeño como este se ve una diferencia de alredor de 8000 caracteres y casi 40% más de código en la versión Java. Más interesante todavia es que hace tiempo mi amigo Dave Astels, llegó a una conclusión muy similar en su blog post que se puede ver aqui. Me pregunto si esto es solo coincidencia.

Anuncios

Responses

  1. No creo que sea coincidencia. Sin tomar en cuenta el uso de bibliotecas y frameworks, codificar en Ruby genera muchas menos líneas de código que hacerlo en Java. Pongo como ejemplo los closures, AKA navaja suiza de Ruby ;), que son como punteros a función, pero con una sintaxis y semántica que personalmente prefiero sobre otras equivalencias en boga. El código debajo imprime todos lo números pares de un arreglo y genera benchmark numbers de este algoritmo.


    require "benchmark"

    intArray = [6, 7, 1, 3, 45, 108, 44]
    puts Benchmark.measure {
    puts intArray.select {|element| element % 2 == 0}
    }

    PD.- El enlance al artículo de Dave Astels está roto.

    • Ubaldo, acabo de revisar el link hacia el blog de Dave y efectivamente hay algun problema con su blog, seguramente se solucionará pronto.

  2. No entendi bien cual es el punto del articulo, osea que una funcionalidad tenga menos o mas lineas de codigo en uno o otro lenguage no me dice nada de un lenguage o del otro, aparte del hecho claro de que es menos codigo en el fuente, la pregunta seria esto pasara siempre?? ahora yo digo cada lenguage viene a cubrir ciertas nececidades, claramente java y ruby tienen distintas orientaciones y se aplican a a distintos problemas, a mi parecer java esta orientado mas a solucionar problemes del tipo complejo, osea donde el core del negocio es de complejo a muy complejo, y ruby para aplicaciones donde las busquedas de parametros o el core de negocion es menos complejo, por lo qeu vi es cierto que google usa ruby como ejemplo para el gmail se usa para el front end ruby pero el backend de gmail que es un poquito complejo esta hecho en java, creo que es la decion que yo tomaria como lider de proyecto, para proyectos complejos java y sus amigos (hibernate, spring, struts, etc) y para proyectos de complejidad intermedia (hay que evaluar) si usar java o algun lenguage script tipo php (que es el que yo conosco ) y sus amigos(zend, cakephp, etc)

    • Marcelo,

      El punto del artículo es justamente lanzar la interrogante de si escribir un mismo fragmento de funcionalidad involucra menor cantidad de código en ruby que en java la mayor parte de las veces. Muestro como ejemplo, el numero de lineas que obtuve con el ejercicio descrito en el post y tambien doy otra referencia donde pasa algo similar. Uso como indicador el numero de lineas de código ya a menor cantidad de lineas de código es menor el trabajo involucrado para evolucionar un programa (entender, modificar, extender).

      • No estoy deacuerdo que solo el hecho de tener menos lineas de codigo en el fuente automaticamente implique que se tiene mayor facilidad en la evolucion del programa, talvez si en aplicaciones chicas, ademas de que claro esta qeu en C yo lo puedo escribir todo en una sola linea, esto no significa nada, no significa que sea la mejor solucion al problema, de todas maneras respecto a Scalability and Growth: hay un articulo que esta bastante bueno y puedes ver que a partir de esta parte no hay con que darle a java especialmente en cuanto al tema Multi-threading, lo cual serian para aplicaciones del tipo enterprice, para empresas donde el negocio es complicado, si pueden leer el articulo esta bastante bueno
        lo recomemiendo leer, yo no soy un defensor de Java, solo creo que hay que tener criterio para elegir una herramienta de trabajo, en nuestro caso los lenguages de programacion como Java o los tipo php, ruby (scriptings) son solo herramientas, y cada una de estas herramientas se aplican mejor o no deacuerdo al tipo de problema que tengo en frente, usar la misma herramienta para todo me parece falta de criterio y ademas experiencia, yo en lo personal trato de no casarme con las tecnologias

        http://www.pardontheinformation.com/2008/09/java-vs-ruby-on-rails-it-is-dead-heat.html


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: