Primero que nada quiero aclarar que no pretendo convencer a todo el mundo de que JavaScript es el mejor lenguaje del mundo, ni que no posee desventajas y mucho menos generar polémicas, simplemente te comento mi experiencia y algunas de las razones por las cuales me parece que es una excelente oportunidad la que ofrece este gran lenguaje.
Cuando comencé a programar luego de unas pruebas encontré un camino que me gustó y me decanté por Python, me fascinó este lenguaje, es muy fácil de aprender, práctico, sintaxis sencilla, etc.
Después de esto paseé por otros lenguajes como C++, Java, PHP, etc.
Desde hace un tiempo me centré en la web y me introduje en el gran ecosistema de JavaScript, usando más específicamente el estándar ECMAScript6.
JavaScript es un lenguaje de programación interpretado, dialecto del estándar ECMAScript.
Sencillo, muy parecida la definición a la de muchos otros lenguajes.
ECMAScript define un lenguaje de tipos dinámicos ligeramente inspirado en Java y otros lenguajes del estilo de C. Soporta algunas características de la programación orientada a objetos mediante objetos basados en prototipos y pseudoclases.
El nuevo estándar ES6 nos trajo muchas nuevas funcionalidades que antes con JS Vanilla (JS común sin nada más que el lenguaje puro) no teníamos.
Sin JS no tenemos web, o sea, no habría una página que permitiera interacciones con el usuario como las que vemos actualmente, o SPA(s).
Si bien muchos de nosotros (y me incluyo primero en la lista) siempre lo vimos como un lenguaje de 'juguete' y le restamos importancia, esto es un gran error, luego de más de 20 años desde su aparición en 1995 ha madurado notablemente, tanto agregando nuevas características, como volviéndose cada vez más fuerte en su presencia.
Hoy en día tenemos JS everywhere como se dice por ahí, desde aplicaciones móviles, su fuerte en la web, hasta programas de escritorio como ser Atom y Visual Studio Code que usamos muchos programadores, gracias a Electron, el framework que GitHub creó para usar tecnologías web en plataforma desk. Paralelo a Electron tenemos Ionic creado por Drifty Co que permite hacer aplicaciones móviles híbridas con la filosofía de Angular, o mi favorito React Native por parte de Facebook, que permite aplicaciones nativas usando la filosofía de React.
Y en la web hay tantas opciones que es difícil decidirse, en estos días quien va a la cabeza en la nueva moda es Vue.js, una librería para hacer webs basadas en componentes, este toma partes de React y de Angular combinadas en una sola herramienta. También tenemos en la parte front-end Polymer, Ember, Backbone, como los más conocidos pero la lista parece interminable. Personalmente y en cuanto a front-end recomiendo React siempre, me parece que su forma de estructurarse es más práctica que la de los demás. Angular generalmente se usa en proyectos de gran tamaño debido a que aún para una simple prueba requiere una estructura completa, y React por otra parte hasta inclusive puede ser usado desde su CDN, otra ventaja es que se programa directo en ES6 y Angular aunque se puede no se recomienda y cuesta más, ya que está pensado para programarse en TypeScript, un superset de JS.
Dejando la parte front tenemos el famoso NodeJS en el back-end, este no es ni más ni menos que una plataforma que permite ejecutar JS en un servidor como normalmente usaríamos Python, PHP, Ruby, Java, etc. Tiene la particularidad que no es multi hilo si no que maneja todo con asincronía, esto significa que es malo para aplicaciones pesadas en cuanto a CPU, pero muy bueno para SPA(s) o aplicaciones en tiempo real como streaming. E internamente utiliza el motor V8 que creó Google para Chrome con el cual ejecuta JS. El framework back-end más usado generalmente es Express. Como ventajas de Node con Express tenemos que al no poseer una estructura completa para empezar, es mucho más flexible y es más sencillo comprender el funcionamiento interno de todo como las rutas, middlewares, almacenamiento, etc. que en otros frameworks ya viene completo 'de fábrica' y al inicio puede costar más entenderlo. Con pocas líneas de código podemos tener un servidor web NodeJS montado a la perfección.
También hoy se ha dejado de lado usar XML para el transporte de datos en HTTP y se usa JSON, según la Wikipedia es:
"[...] acrónimo de JavaScript Object Notation, es un formato de texto ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript aunque hoy, debido a su amplia adopción como alternativa a XML, se considera un formato de lenguaje independiente."
Tiene incontables ventajas, pero podemos destacar su practicidad a la hora de manipularlo, como vemos es nativo de JS, generalmente las API(s) que usamos nos proveen los datos en JSON. También tenemos los JWT (JSON Web Tokens) que nos permiten añadir seguridad extra en nuestra web y están basados en este formato.
Node está preparado para trabajarlo de una manera muy práctica y cómoda.
En este gran entorno no podemos prescindir de las bases de datos NoSQL o no-relacionales, como MongoDB, Firebase, Apache Cassandra y muchas otras.
Tienen la particularidad que no tienen tablas si no que usa el concepto de documentos, Mongo a través de Mongoose (un módulo de NPM) es 100% acoplable a Node, es la más usada generalmente.
Firebase aparte del storage, hosting y otras funciones, brinda una realtime-database que está basada en un formato JSON, también tiene otros servicios como las cloud functions, todo esto combinado nos provee un BAAS (Backend As A Service) casi para la mayoría de proyectos, por lo cual sólo necesitaríamos hacer un front que lo consuma, todo esto completamente nativo y adaptado a JavaScript, en este punto bastaría hacer una vista con cualquiera de los frameworks nombrados antes y voilá una app o una web completamente funcional en cuestión de muy poco tiempo.
Muchas empresas grandes y conocidas apuestan por Node, ya mencionamos a Facebook, que hizo React y React Native, Google con Angular y Drifty Co con Ionic, pero la lista es larga.
Algunas de ellas son:
-PayPal
-Netflix
-Uber
-Ebay
-Medium
-Mozilla
Podemos seguir mencionando pero creo que sobran los ejemplos. En esta página se puede ver cómo lo implementa cada una y una lista más larga:
http://inubo.es/noticia/los-10-mejores-ejemplos-de-aplicaciones-node-js-para-empresas
Para cerrar, a modo de conclusión, quiero repetir como dije que no todo es color de rosa en el mundo de JavaScript, pero veo que las ventajas son demasiadas, para empezar solo se necesita un navegador sin instalar nada en la PC, por ejemplo hay una web que es muy buena para practicar ejercicios: codepen.io.
Es un lenguaje relativamente sencillo de aprender, de muy alto nivel.
El abanico de posibilidades es demasiado amplio, día a día salen nuevas herramientas, frameworks, librerías, es abrumador para quienes comienzan.
En el repositorio de NPM (Node Package Manager) tenemos herramientas para casi cualquier cosa, desde bases de datos, autenticación, hasta seguridad y mucho más.
Muchas grandes empresas lo usan y han apostado por esta tecnología, personalmente he visto sitios o instructores en YouTube y en sus webs que hace uno o dos años decidieros apuntar sus cursos a JS y cada día crecen.
Si estás empezando te recomiendo que no te preocupes por tanto, hay tiempo y mucho de él hay que dedicarlo a ver qué camino tomar. Te recomiendo React si querés una librería sencilla para front, Angular es más difícil, u otra buena alternativa es Vue.js si querés algo de moda.
Espero que este artículo te haya servido de guía, cualquier duda, experiencia, o contra que tengas en mente te invito a dejarlo en los comentarios. Te felicito si llegaste hasta el final!.
Referencias:
-JavaScript: https://es.wikipedia.org/wiki/JavaScript
-ECMAScript: https://es.wikipedia.org/wiki/ECMAScript
-JSON: https://es.wikipedia.org/wiki/JSON
Tobías G. Schwarz