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

2 comments:

Anonymous said...

En este escenario planteado por Ford me da la impresión de que Ruby puede prescindir del mundo Java, pero no lo contrario, y al igual que .NET, se han tirado ganchos para aferrarse y ser llevados en el mismo impulso que Ruby ha ganado. ¿Convendrá que los programadores acepten que estas plataformas se liguen al lenguaje o será mejor esperar el desarrollo de nuevas, esas si, apegadas por entero al modelo moderno de Ruby?. Como sea, es muy interesante ver como se agitan las olas alrededor de este lenguaje.

Anonymous said...

Perdón, me enfoqué en la burbuja Ruby y su contexto cuando el tema era la programación Políglota.