Categorías: Actualidad

Stanford cambia de Java a JavaScript para enseñar a programar

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.
 

Contacta ahora con Sarenet

 

Jose Luis Gomez

Ing. Telemática | CEO B2CODE | CTO Hialucic |

Compartir
Publicado por
Jose Luis Gomez

Entradas recientes

Plataforma Dédalo: despliega aplicaciones Kubernetes de forma intuitiva y visual

En un entorno en el que la tecnología evoluciona a pasos agigantados, los Proveedores Independientes…

Hace 3 semanas

Fortalece tu ciberseguridad con las soluciones avanzadas Sophos XDR y Sophos MDR

En un entorno digital en constante evolución, las ciberamenazas se vuelven más sofisticadas día a…

Hace 2 meses

Así estamos transformando con el SOC la ciberseguridad de las empresas

En el entorno corporativo, dinámico y marcado por una profunda digitalización y una interconectividad global,…

Hace 2 meses

La revolución del Deep Learning en la Ciberseguridad: Un avance imprescindible

En la era de la transformación digital, donde la información es el activo más valioso,…

Hace 3 meses

Las 5 grandes predicciones de Conectividad y Ciberseguridad en 2024

En el cambiante paisaje de la tecnología, el 2024 marca un punto crucial en la…

Hace 5 meses

Inteligencia Artificial: La nueva frontera de la Ciberseguridad y Conectividad

En la era digital actual, la inteligencia artificial (IA) se ha convertido en una fuerza…

Hace 5 meses