¿Porque los lenguajes tienden a terminar como java o .net?

Por mucho que querramos evitarlo, omitirlo o hacernos de las bestias, java y .net aun son las plataformas empresariales que mas uso tienen a nivel .gt (para que no digan que estoy hablando pajas hablo solo por lo que he visto :D).

Para los criticos de nueva era siempre terminan diciendo «naaa esos tus lenguajes viejos», «.net es un dinosaurio», «java es un apatosaurio» y les puedo decir que tienen toda la boca atorada de razon.

¿Ahora analicemos un poco porque se provoca esto?

Si pensamos un poco los primeros lenguajes de programación de antaño no tenian ni de cerca la facilidad de los lenguajes de ahora. Estos se han ido construyendo de manera evolutiva, un dia teniamos hexadecimal, de ahi nos fuimos a assembler, de assembler a c, de c a c++ por poner una linea imaginaria de desarrollo. Cada nueva generación aportaba al anterior caracteristicas que no tenia y que sin embargo lo hace menos eficiente.

Esta ineficiencia es provocada porque simple y sencillamente las nuevas caracteristicas de una u otra forma afectan como el compilador funciona (incluso en codigos intermedios como el bytecode o CLI). El compilador tiene que pelearselas no solo con variables y procedimientos, ahora agrega clases, objetos, instancias, interfaces, que de una u otra forma el compilador traduce a algo más entendible y digerible para la PC.

Hace 2 semanas hablaba con alguien que programo en los tiempos cuando AWT aun «rockeaba» (abstract windows toolkit o ventanas java de los 90’s para los entendidos). Esta persona me comentaba que en esos tiempos Java era como programar en lo que ahora presume gente de los nuevos lenguajes «se sentia bien y era eficiente».

Un lenguaje que ha sonado mucho ultimamente es python, aunque he programado muy poco python con relación a java, le he seguido la pista en mi afan de lectura y hacerme la vaca con las responsabilidades. Python poco a poco ha ganando caracteristicas, aportando formas más faciles de programar, conservando codigo limpio y tambien he visto como se ha hecho más y más ineficiente. En las ultimas oportunidades que he tenido de desarrollar una aplicación, la combinación fue python+pyQT. La verdad sentia mi aplicación tan o más lenta que una aplicacion con java+qtjambi y creo que no soy el unico. En la red andan algunos ports de python a otras maquinas virtuales (ver jython) y viendo algunos benchmarks estos ports con menos caracteristicas han ganado en rendimiento.

Asi que mientras más faciles sean los lenguajes, seran menos ineficientes. Y, claro que se pueden optimizar los compiladores, pero no es lo mismo compilar desde una estructura de 3 direcciones como assembler a codigo objeto, a compilar un conjunto de clases .cs con herencia, polimorfismo que tiene que terminar en una estructura de tres direcciones (quienes hayan leido el libro del dragon me entenderan).

Si quieres performance, c++ seria el balance. Y en la web pues php se ha ganado a pulso ese lugar. No son lenguajes tan simples ESO ES UN HECHO. Y aunque hay frameworks como symphony o codeigniter en lo poco que he probado se me ha hecho más simple hacer algunas cosas con django, o en el caso de java con grails.

Pero si quieres presumir de tu nuevo lenguaje adelante!!!, poco a poco se ira poniendo marranito o ya de plano se queda sin innovación y sigue igual de ligero ;-).

3 Replies to “¿Porque los lenguajes tienden a terminar como java o .net?”