¿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 respuestas a “¿Porque los lenguajes tienden a terminar como java o .net?”

  1. Firefox 3.5.1 Firefox 3.5.1 Windows XP Windows XP
    Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1

    El titulo de este post me ahuevo cuando lo lei, ya que suena ambiguo tomando en cuenta que .net no es un lenguaje, sin embargo, en el aspecto de la eficiencia (que en esto se centra el post) tenes toda la razon, entre más construcciones de alto nivel tengan los lenguajes, menos probable es que sus programas sean eficientes. ya que por lo regular uno se mal acostumbra a todas aquellas «bondades» que nos proveen sus construcciones de «alto nivel» (como el excelente manejo de listas que maneja python de manera nativa), los cuales los hacen fáciles de abstraer, pero difíciles para su interprete/maquina virtual

  2. Firefox 3.5 Firefox 3.5 GNU/Linux GNU/Linux
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5

    @Erik: Seeee es que lo escribi de madrugada tratando de hacer un poco de mi tesis y porque es compleja la compilacion xD.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *