JavaScript–Un juguete para adultos

JavaScript suele ser uno de los lenguajes de programación menos valorados desde el punto de vista “académico”, o de papeles a colgar en la pared, por decirlo de alguna forma. Para muchos, JavaScript es un juguete, es un lenguaje menor. Esto podemos verlo desde los memes informáticos hasta en entrevistas laborales, pasando por eventos o capacitaciones en las que este lenguaje se ve involucrado.

 

Generalmente cuando a alguien se le pregunta si sabe algo de JavaScript, la respuesta es un rotundo: – Por supuesto! – Seguido de un: – Psssffft!!! – Como si la pregunta hubiera estado de más, carente de sentido, si después de todo, que más puede llegar a ofrecer JavaScript que un par de selectores, cambiar los estilos del HTML y darle paso a jQuery.

Debo reconocer que allá por el 98 o 99, pensaba de la misma forma. Creía que JavaScript era eso, un juguete para adornar las páginas Web, donde, en aquel momento, se limitaba a mostrar la hora en tiempo real. Por supuesto, con el tiempo me di cuenta de que esa era la fachada de JavaScript, y que en realidad lo que había por debajo era un lenguaje de programación al que muchos lenguajes deberían (Y lo han hecho) aspirar.

Sí, por supuesto, no es rápido como C y su capacidad de trabajar lo más cerca posible al hardware. Pero incluso C tiene contrincantes, si de ejecución veloz se trata.

De cualquier manera, no solo pasa por una cuestión de velocidad, si no de la forma en cómo podemos plantear nuestra aplicación, nuestro desarrollo. Pongamos en contraste este lenguaje con lenguajes fuertemente tipados, como C#, Java u otro donde es necesario plantear todas las reglas previamente para poder devolver un simple objeto. Y no solo esto, también es necesario plantear toda la infraestructura antes de poder usarla. Como si fuera necesario describir el futuro antes de poder llegar a usarlo, incluso si nunca lo usamos.

C#

public class UsersService
{
     public List<User> GetUsersName()
     {
          //Obtener los usuarios pero solo los nombres
    };

     public List<User> GetFullUsers()
     {
          //Obtener los usuarios con todas sus propiedades
     };
}

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    …
    …
}

Si analizamos lo anterior más a fondo nos damos cuenta que para poder retornar una colección de valores fue necesario declarar y especificar cada uno de los elementos involucrados en el proceso, desde la clase User hasta List<T>. Y en dos funciones, retornando objetos parcialmente completos, o “innecesariamente declarados”. Claro, esto puede ser llevado a un extremo mayor, o podríamos argumentar que aplicando determinados patrones de diseño es posible separar o desacoplar toda esta funcionalidad, pero la realidad es que solo agregaremos más niveles al código y nunca existirá un verdadedor desacople entre los diferentes participantes del código.

Por supuesto, JavaScript no viene a ser la bala de plata que opaque todo lo anterior y nos salve. Pero definitivamente, su capacidad dinámica y adaptable nos permite acelerar la construcción del código.

JavaScript

function UsersService() {
    this.GetUsersName = function() {
        return [{ Name: “…” }, …];
    };

    this.GetFullUsers = function() {
        return [{ ID: 1, Name: “…” }, …];
    };
}

El código tiene la misma funcionalidad, pero al no estar atado a un tipo específico no es necesario crear toda la estructura circundante para poder retornar un puñado de datos. Esto definitivamente acelera el desarrollo.

Por supuesto, no es la idea comparar estos dos lenguajes, si no, las posibilidades del segundo basadas en su estructura, en su forma de manejar los datos y el código, el que reduce significativamente esa adicción por la verborragia en la escritura del código. Para entenderlo mejor, sería como comparar la cantidad de líneas necesarias para decir algo en Visual Basic en comparación con C#.

Claro está que además, contamos con el valor de no estar atado a tipos de forma dura y rigurosa. Por supuesto, JavaScript puede ir mucho más lejos de forma más simple y es ahí donde entra en juego la maduración de lenguajes de este estilo.

En la próxima entrega tocaré Inyección de Dependencias, tema más que actual hoy en día, y cómo, incluso con este patrón, nos complicamos de formas que ni nos imaginamos, pero que, lamentablemente, ya nos hemos acostumbrado.



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s