Del mismo modo que en otras ocasiones os hemos hablado de lenguajes de programación recientes que van adquiriendo madurez y cuota de mercado al mismo tiempo, hoy trataremos un tema que se fue vislumbrando durante la pasada Google IO: el futuro de Java.
En ese artículo, comentaba cómo Google había dotado a Kotlin, un lenguaje moderno que corre sobre la máquina virtual de Java, de soporte oficial para el desarrollo de aplicaciones Android, tarea hasta ahora reservada exclusivamente a Java. Esto no supone un rechazo inmediato a Java, pero sí hace presagiar que el futuro de este afamado lenguaje no es muy halagüeño.
Que los lenguajes envejecen es un hecho. Además, la propia mejora de las capacidades tecnológicas del mundo que nos rodea hace que los lenguajes de programación utilizados para darles vida a esos dispositivos requieran de una evolución, cada vez a un ritmo más rápido. Recientemente, comentábamos cómo un lenguaje como PHP, que parecía estar anticuándose, ha sabido volver a situarse en la cresta de la ola sin llegar a perder su posición de dominación frente a la abundante y vanguardista competencia en el terreno de la programación web del lado servidor. Ahora bien, el tema que hoy nos ocupa parece que no tendrá un final tan feliz.
El titular de este artículo es bastante esclarecedor por sí mismo: la universidad de Stanford deshecha Java como lenguaje de introducción a la programación. Esto podría no ser digno de reseña pero su sustituto ha sido lo que ha suscitado la polémica: Java ha sido reemplazo por JavaScript.
Ya hemos comentado alguna vez, que el nombre “JavaScript” no es más que un desafortunado movimiento de marketing, pero que nada tienen que ver entre ellos.
JavaScript cuenta casi a partes iguales con forofos acérrimos y detractores, pero es cierto que no tiene competencia alguna en el terreno de la programación web del lado del cliente. De hecho, la práctica totalidad de las opciones que existen hoy en día para desarrollar una aplicación web en el lado del navegador del usuario, pasan en un momento u otro por JavaScript o, a lo sumo, otro lenguaje terminará compilando a JavaScript como, por ejemplo, una de mis alternativas favoritas: ELM.
Tanto es así, que en todos los los rankings de tecnologías más demandadas y mejor remuneradas en la búsqueda de empleo relacionado con el desarrollo, tienen a JavaScript en una posición privilegiada: Node.js, express, JSON, React, Vue.js, Angular, npm, Gulp, Grunt… y la lista podría seguir casi interminablemente.
También hay que sumar que JavaScript es realmente un lenguaje abierto y mantenido por la comunidad, a diferencia de Java que, pese a ser también abierto, es propiedad de Oracle desde que en 2010 adquiriera Sun Microsystems.
¿Es realmente JavaScript un buen lenguaje para aprender a programar?
Nadie pone en duda la importancia de JavaScript hoy en día pero, ¿es realmente JavaScript un buen lenguaje para aprender a programar? Una entidad tan reputada e icónica en el ámbito como la Universidad de Stanford cree que sí, pero en mi humilde opinión, no lo es en absoluto.
El motivo principal es precisamente su practicidad. JavaScript tiene algunos comportamientos curiosos y, a veces, inesperados, especialmente en lo que se refiere al tipado de datos. Aquí vamos a entrar en un terreno quizá demasiado técnico, pero intentaremos hacerlo de la manera más comprensible posible.
Existen dos clasificaciones para los lenguajes de programación según cómo manejan los tipos de datos: dinámica o estática, y fuerte o débil.
El tipado estático requiere que, al declarar una variable que vaya a almacenar datos, se especifique qué tipo de dato almacenará, ya sea un número entero, un decimal, una cadena de texto, etc. Y una vez ha sido asignado, hasta que esa variable no desaparece, no puede modificar su tipo. En cambio, el tipado dinámico no requiere especificar el tipo de dato que una variable almacenará, y el tipo de dato vendrá especificado por el propio contenido de la variable, es decir: si la variable a = 12, será de tipo entero, pero si a = “Hola” será de tipo string o cadena de texto.
Por otro lado, tenemos los lenguajes fuerte y débilmente tipados. Esto quiere decir que cuando se invoca una función, o porción de código que realiza una tarea específica y puede recibir valores de entrada y de salida, esos valores que recibe la función como parámetros deben tener un tipo de datos preasignado, y en los lenguajes fuertemente tipados, sólo aceptará los que se hayan definido, rechazando todo lo demás.
Así son los lenguajes fuerte y débilmente tipados
Tomemos como ejemplo una hipotética función que, simplemente, calcula el cuadrado del número entero que recibe como parámetro.
En los lenguajes fuertemente tipados, esa función sólo aceptará un número entero como parámetro de entrada, retornando un error si no es así. En cambio, en los lenguajes débilmente tipados la función aceptará cualquier tipo de dato que reciba como parámetro de entrada e intentará adecuarlo al tratamiento que se le de en la función. En nuestro ejemplo, si se van a realizar operaciones matemáticas con ese parámetro, tratará de convertirlo a un número entero o un decimal.
A modo de anécdota, esta manera de tratar a los datos según lo que parecen, también recibe el curioso nombre de duck typing. Según se cree, ese nombre proviene del desarrollador James Whitcomb Riley, que afirmó: «Cuando veo un ave que camina como un pato, nada como un pato y suena como un pato, a esa ave yo la llamó un pato.»
Como os podréis imaginar, Java es un lenguaje de tipado estático y fuerte, pero JavaScript es un lenguaje de tipado dinámico y débil que, en mi opinión personal, es útil y hace más fácil el día a día de un programador, pero que puede inducir a errores de concepto graves a alguien que lo utilice para aprender a programar. Estas características suelen ser así por necesidad, ya que los lenguajes que se compilan antes de poder ejecutarse suelen ser de tipado estático, y lenguajes interpretados en tiempo de ejecución, suelen ser de tipado dinámico.
Otro aspecto importante es el ecosistema JavaScript, uno de los más amplios y ricos que se pueden ver hoy en día, con gestores de paquetes, de librerías, de dependencias, etc. para prácticamente cualquier cosa que se nos ocurra. No obstante, esto mismo lleva a una abrumadora cantidad de nuevas opciones, información y obsolescencia a tener en cuenta prácticamente a diario y, por tanto, a una falta de estandarización que sí se disfruta en otros lenguajes, lo que supone un hándicap importante a la hora de iniciarse.
Pese a todo, confiamos en que la decisión de Stanford sea acertada y traiga consigo unas nuevas generaciones de programadores a la altura de los tiempos que están por venir.
3 Comentarios
Puedes enviar comentarios en este post.
Como profesor de programación, opino que tal vez hagan este cambio de lenguaje de programación en la etapa de iniciación, ya que resuelve cosas como:
-Simplificar conceptos y reglas en la escritura de instrucciones de código
-Utilizar los navegadores Web como editores, intérpretes y depuradores de códigos
-Fomentar el desarrollo Web para migrarlo o escalarlo a la Nube
-JavaScript puede ser aprendido de manera muy básica por niños desde 10 años de edad (lo comprobé con una sobrina mía)
-JavaScript está en muchas partes, del lado del servidor y hasta para programar drones, etc.
-Javascript para gráficos corriendo en el navegador Web es impresionante y atrae a jóvenes que les gustan las aplicaciones interactivas y multimedia, como videojuegos, simuladores, etc., (los estimula, le quita lo aburrido aprender a programar).
Y bueno, conforme avancen en su experiencia, se pueden adaptar a otros paradigmas como el Orientado a Objetos y migrar a otros lenguajes diferentes.
Jesús 7 años ago
Gracias por tu respuesta, Jesús.
Es cierto que JavaScript es un grandísimo lenguaje, prácticamente imprescindible para infinidad de campos y en una notable expansión, pero resulta llamativo que la prestigiosa universidad de Stanford lo utilice como base de la programación.
Es un hecho que tiene muchas lecturas distintas, pero viene a suponer un soplo de aire fresco hacia los lenguajes de programación cada vez de más alto nivel, dando por hecho que los lenguajes de bajo y medio nivel, incluso muchos de nivel alto, tienen una cercanía a la máquina que hoy en día está prácticamente obsoleta, o lo estará muy pronto.
Saludos.
Jose Luis Gomez 7 años ago
[…] Gomez, J. L. (27 de Julio de 2017). Standford Cambia de Java a JavaScript, Saranet. Recuperado el 05 de Mayo de 2018, de Saranet: https://blog.sarenet.es/diferencias-java-javascript/ […]
INTEGRACIÓN Y REDACCIÓN DEL INFORME FINAL – FILAZ BLOG ! 6 años ago
Enviar una respuesta
No hay comentarios