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íglotaHaskell, sitio oficial
Groovy, sitio oficial
JRuby, sitio oficial
AspectJ, sitio oficial
Ruby on Rails, sitio oficial
Something Nimble, sitio oficial