Esta es una de las preguntas que más frequentemente me hago.
Desde la óptica del arquitecto de sistemas, o al menos desde la mía, las tecnologías candidatas para desarrollar soluciones de calidad serán aquellas que permitan mayor independencia de la plataforma, mayor flexibilidad, herramientas de desarrollo avanzadas que permitan generar código de calidad mediante refactoring, testing, etc. y lo suficientemente implantadas en aplicaciones reales de producción como para poder confiar en su futuro.
En la selección de tecnologías entra el lenguaje, el servidor de bases de datos, el sistema operativo, el framework, el hardware, la tecnología a utilizar para el interfaz de usuario, etc.
Si además nuestro diseño se basa en la programación orientada a objetos, el círculo se hace más pequeño.
Desde este punto de vista, y utilizando la web como interfaz de usuario, lenguajes como Java para grandes aplicaciones y/o PHP para aplicaciones más modestas, la linea de separación siempre es difusa, son a menudo los escogidos.
En la otra acera tenemos la plataforma .NET que, para variar, ha asimilado capacidades de otros lenguajes/tecnologías. Sobre el resto, a mi juicio, destaca por:
- Posibilidad de programar en varios lenguajes
- Entornos de desarrollo tremendamente productivos
pero tiene algunas desventajas:
- Futuro ligado al de una empresa, eso sí, una de las más grandes y voraces.
- Una única plataforma sobre un sistema operativo, aunque con algunas iniciativas interesantes
Es innegable la capacidad de Microsoft para crear herramientas de desarrrollo de alta productividad con las que generar código de manera semiautomatizada. Eso sí, generando un código no demasiado optimizado que puede maquillarse con un hardware potente.
Para el resto de lenguajes destaca como entorno de desarrollo eclipse, uno de los IDEs más interesantes por su capacidad de extensión, de hecho se presenta como una plataforma de desarrollo para cualquier cosa y ninguna en particular.
Pero el asombro y pasmo generalizado aparece con lenguajes como Ruby o frameworks como Rails. Aunque Ruby tiene ya los sufientes años como para considerarse un lenguaje maduro, los defensores de los Java y PHP afirman que no puede competir, todavía, con el marketing y la base de conocimientos existentepara estos.
Ruby es un lenguaje OOP que permite desarrollar soluciones reales como Basecamp, por lo que la crítica de que es un lenguaje de juguete no es creible.
Por supuesto existen soluciones en el mundo Java para incrementar la productividad, XDoclet, etc., pero ese será motivo de otro post
Uno de los valores de la programación extrema es el coraje. Aunque nada indica en XP que esto signifique que haya que cambiar de lenguaje de desarrollo, es posible que tengamos que abrir los ojos ante el nacimiento de otra forma de programar.