¿Cuál es el atractivo de JavaScript del lado del servidor? ¿Cuáles son las ventajas sobre Python o Ruby?

Hay varias razones por las cuales JavaScript del lado del servidor está ganando impulso rápidamente:

  • Le permite usar el mismo idioma en el servidor y el cliente . Esto aumenta la cantidad de código que se puede compartir y disminuye el costo y el esfuerzo necesarios para contratar desarrolladores, ya que no es necesario contratar a diferentes personas para escribir código en diferentes lugares. Un experto en JavaScript del lado del cliente puede convertirse rápidamente en un experto en JavaScript del lado del servidor. Además, JavaScript es el lenguaje de programación más popular del mundo, por lo que hay bastantes personas que ya lo hacen bien.
  • Es una locura rápida . Node.js (que es donde está la mayor parte del ruido de JS del lado del servidor en estos días) es un marco IO increíblemente rápido creado que hace que sea muy fácil escribir programas de red altamente escalables.
  • JavaScript es asombroso . Aunque tiene muchas “partes malas” notorias, JavaScript es bastante impresionante en general. Está orientado a objetos, de tipo dinámico, prototipo, y admite lambdas y cierres. Esto permite un desarrollo rápido y hace que el lenguaje sea lo suficientemente flexible y expresivo como para satisfacer una amplia gama de necesidades.
  • El reciente renacimiento de la guerra de los navegadores significa que hay varios motores JavaScript excelentes que compiten entre sí para ser más rápidos y mejores . Dado que muchos de estos motores también se pueden usar para ejecutar JS del lado del servidor, esto significa que hay una buena selección de excelentes motores JavaScript para elegir (aunque Node.js actualmente solo se ejecuta en V8).
  • Node.js apareció en el momento adecuado . PHP, actualmente el lenguaje del lado del servidor más popular, se ha visto envuelto en disputas comunitarias en medio de un gran esfuerzo para refactorizar su soporte de codificación de caracteres, al tiempo que pierde la mentalidad del desarrollador a los excelentes marcos web de Ruby que han aparecido en los últimos años. Pero los marcos web de Ruby, y el lenguaje en sí, se han vuelto notorios por tener problemas de rendimiento y, a veces, ser difíciles de escalar (aunque parte de esta percepción se basa en información errónea), por lo que la aparición de un nuevo marco IO altamente escalable y altamente productivo construido además del lenguaje de programación más popular del mundo, no podría haber sido mejor cronometrado.

El atractivo de JS como lenguaje del lado del servidor surge del problema de la escalabilidad eficiente. Es posible que se requieran aplicaciones web contemporáneas para manejar miles de solicitudes por segundo. Por lo tanto, la eficiencia del manejo y la programación de solicitudes se convierte en primordial no solo en términos de optimización sino también de viabilidad. La enorme cantidad de concurrencia presente en aplicaciones como Twitter y Facebook es asombrosa en comparación con la de las aplicaciones de escritorio tradicionales.

JavaScript es muy adecuado para manejar la concurrencia mediante el uso de un esquema de devolución de llamada controlado por eventos. A diferencia de un sistema roscado ingenuo que genera procesos inactivos para cada solicitud, posiblemente computacionalmente intensa, a un servidor web, un marco JS como NodeJS permite al desarrollador registrar una función que reaccionará y ejecutará un conjunto de comandos una vez que la solicitud pueda finalizar tratamiento. Esta noción se presenta más naturalmente en el caso de una consulta de base de datos.

En sistemas de producción grandes, las consultas pueden tomar una cantidad de tiempo inmensa para completarse (desde la perspectiva computacional). Durante el tiempo en que se procesa una consulta, un modelo de servidor tradicional estará inactivo, desperdiciando preciosos ciclos y, en última instancia, dinero en forma de servidor y costos de energía. Si bien JS no aborda inherentemente estos problemas, el paradigma del lenguaje impulsado por eventos se adapta bien a las arquitecturas de bucle de eventos debido al hecho de que puede utilizar de manera más eficiente el tiempo de procesamiento (especialmente teniendo en cuenta la cantidad de trabajo requerido para cambiar de contexto entre miles de hilos).

Reflexiones sobre el atractivo de JavaScript del lado del servidor (Ryan Dahl + otros)

Javascript está diseñado específicamente para usarse con un bucle de eventos: funciones anónimas, cierres; solo una devolución de llamada a la vez; E / S a través de devoluciones de llamadas de eventos DOM. La cultura de JavaScript ya está orientada a la programación de eventos.

Node.js usa JavaScript, pero eso no significa que ningún desarrollador front-end pueda comenzar a escribir fácilmente back-end usando JavaScript. Y no significa que cualquier desarrollador front-end pueda usar los mismos fragmentos de código tanto en el front-end como en el back-end.

PHP 7 vs Node.js? ¡Pueden ser socios, no competidores para un desarrollador!

Declaimer: escribo sobre los servicios de desarrollo de PHP

More Interesting

¿Puede Python emular perfectamente un navegador?

¿Cuáles son las mejores empresas de diseño web de outsourcing?

¿Por qué alguien compraría plantillas de sitios web HTML en lugar de simplemente descargarlas guardándolas con fines educativos?

Cómo construir una cartera como desarrollador de sitios web

¿Hay algún servicio para crear un programa de afiliación / referencia para mi empresa basada en la web?

Cómo estructurar una aplicación compleja Nodejs, express, mongodb (con mangosta)

¿Aprender HTML, CSS y JavaScript es suficiente para ser desarrollador web?

¿Cuáles son las mejores prácticas para nombrar clases HTML?

¿Cómo entiende Java y hace que suceda un evento? Por ejemplo, ¿qué sucede exactamente cuando hacemos clic en un botón? ¿Qué significa básicamente hacer clic en un componente? ¿Utiliza un bucle para verificar?

Cómo usar el complemento yoast para el sitio web de WordPress

¿Cómo puedo comenzar a diseñar una aplicación React Redux?

¿Qué te frustra sobre el futuro del desarrollo front-end?

Escuché que Angular tiene 3 marcos de trabajo diferentes pero no conectados, con todas las versiones extendiéndose a marcos completos dentro de su plataforma. ¿Es esto como el elemento de tener diferentes versiones principales para diferentes diseños?

¿Cómo utiliza un framework como Node.js una tecnología del lado del cliente (JavaScript) para realizar cambios en el lado del servidor?

¿Cómo se almacenan las páginas web en un dominio?