Breve comparación entre Node.js y PHP


Como todos saben, tanto PHP como Node.JS funcionan del lado servidor y son opciones viables para el desarrollo de sitios y aplicaciones web; aun así, conviene analizar profundamente cada proyecto en particular y optar por el más conveniente para ese proyecto, ya que, si bien ambos son realmente buenos, tienen diferencias muy importantes que los hacen mejores para determinados casos.

Para aquellos de ustedes que no están familiarizados con Node.js, o que solo han oído hablar de él, les invito a leer mi artículo anterior NodeJS, Instalación y primeros pasos.

Debido a que Node.js es una tecnología de nivel inferior, no es comparable con frameworks complejos tales como Struts, Rails o Django directamente, por lo tanto, muchas personas a menudo se enfrentan a la decisión de “¿Qué tecnología utilizar?”, sin saber bien cómo darle respuesta. En este artículo me gustaría compartir con ustedes una breve comparación entre Node.js y PHP, no con el objetivo de menospreciar o probar la superioridad de un lenguaje sobre otro, sino para tener una idea de las fortalezas y debilidades de cada uno. La comparación se centrará en las siguientes pautas:

  • Sintaxis
  • Cambios de contexto
  • Aplicaciones y contribuciones
  • Frameworks
  • Servidores Web
  • Rendimiento

Sintaxis

Ambas plataformas tienen acceso a la interfaz de línea de comandos a través de php -i y node, para PHP y Node.js respectivamente. Vamos a revisar algunos fragmentos de código para ver las similitudes y diferencias:

Imprimir Hola Mundo

PHP

echo 'Hello World';

NodeJS

console.log('Hello World');

Bucle for

PHP

for ($i = 1; $i <= 10; $i++) {  echo $i;  }<

NodeJS

for (var i = 0; i <= 10; i++) {  console.log(i);  }

Crear un arreglo

PHP

$users = array( 
            array('name' => 'John', 'id' => 3940), 
            array('name' => 'Peter', 'id' => 8904)
         );

Node.js:

var users = [  
             { name: 'John', id: 3940 },  
             { name: 'Peter', id: 8904 } 
    ];

Si nos percatamos, las diferencias en cuanto a sintaxis, de forma general, no son muy marcadas, es por eso que si ya conoces PHP, no te debe ser difícil comenzar con Node.js.

Cambios de contexto

El cambio entre diferentes entornos y lenguajes potencia la caída de la eficiencia al escribir código y afecta negativamente el rendimiento de los programadores. Con menos idiomas para aprender y recordar, el flujo es suave y el código es mejor y más limpio.

PHP

Con la pila LAMP, es decir, Linux, Apache, MySQL y PHP, los desarrolladores deben dominar al menos dos lenguajes (PHP y SQL), además deben conocer HTML, CSS y JavaScript.

Node.js

Node.js destaca en este sentido al tener menos cambios de contexto, ya que junto con MongoDB conforma la pila MEAN, es decir, MongoDB, Express, AngularJS y Node.js, y con esta se desarrolla en un solo lenguaje: JavaScript.

Aplicaciones y contribuciones

PHP

Esta es probablemente una de las áreas más importantes donde PHP aún sobresale por encima de Node.js. Hay sorprendentes aplicaciones de código abierto, por ejemplo, WordPress, toneladas de scripts libres, herramientas y libros.

Node.js

Node.js está creciendo más rápido que cualquier otra plataforma o lenguaje. Esto se debe principalmente a la filosofía de mantener un mínimo de módulos y realizar sólo un pequeño conjunto de tareas. Es muy posible que dentro de poco esta tecnología sobresalga por la cantidad de contribuciones.

Frameworks

PHP

CakePHP, Zend, Symfony y Yii vienen a la mente, pero existe una muy extensa lista.

Node.js

Es obligatorio mencionar a Express.js, ya que es la opción más popular cuando se requiere un framework MVC en Node.js. La lista es también numerosa, algunos ejemplos son Meteor y Derby. Se puede asegurar que estos frameworks minimalistas muestran el camino hacia el futuro.

Servidores Web

PHP

Para entornos de producción, PHP no se puede ejecutar por su cuenta. Una de las tecnologías más populares usadas con PHP son Apache y Nginx donde PHP es sólo un módulo del servidor web.

Node.JS

Node.js fue creado desde cero para aplicaciones de red y hay una serie de módulos básicos para escribir servidores web. Por ejemplo, para crear un servidor web en Node.js, solo necesitamos el siguiente código:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

Para entornos de producción, Node.js se puede ejecutar en Linux como un servicio o demonio.

Rendimiento

PHP

PHP es relativamente rápido, pero debido a su cuello de botella en el sistema de archivos, las bases de datos y solicitudes de terceros, fracasa miserablemente en comparación con Node.js y su motor de Google Chrome V8.

Ejecución de tareas en PHP y NodeJS

Fig1: Ejecución de tareas en PHP y NodeJS

Node.js

Node.js es extremadamente rápido debido a su mecanismo de E/S no bloqueante y la tecnología del motor Google Chrome V8.

Conclusiones

PHP fue una tecnología excepcional en sus días. Su éxito y popularidad vinieron de su facilidad de aprendizaje y uso, la facilidad de alojamiento y la abundancia de scripts, aplicaciones y bibliotecas. Al mismo tiempo, estas mismas cosas ahora llevaron a su oscuridad. Las contribuciones al núcleo por parte de programadores principiantes crearon una API inconsistente, mientras que la falta de programación orientada a objetos, de clases y sistemas de gestión de módulos inhibió el crecimiento de la comunidad de código abierto. Por otro lado, hay un montón de buenos productos y de infraestructura para PHP que llegaron para quedarse.

Node.js es relativamente joven, pero ya es la plataforma de más rápido crecimiento por el ritmo de las contribuciones (el número absoluto superará otros lenguajes en pocos años. El lenguaje JavaScript es el lenguaje más popular en el mundo sin lugar a dudas. Muchas herramientas son portadas a Node.js con pequeñas o ninguna modificación del entorno del navegador. Node.js es muy eficiente e ideal para la construcción de aplicaciones en tiempo real y sistemas de red escalables.

Espero les halla parecido interesante y útil el artículo de hoy. Happy Coding!!!

  • Pepone DLG

    Muy bueno. El primer artículo sobre el tema que tiene una explicación clara y objetiva.

  • Ruben De Campana

    LAMP invencible. PHP es formidable no lo cambio por nada. Olvídate.

  • Alex Ica

    el articulo no es objetivo. Lo que intenta es opacar una tecnología que al año 2017 esta mas que viva con PHP7 y frameworks como Laravel. Hace falta algo mas potente y amigable(comprender el stack MEAN es MUY DIFICIL, mientras que Laravel y Vue.js brillan por su potencia y sencillez ).Se dice que el fuerte de Nodejs está en las app’s asincronas. Eso ya existía con PHP y AJAX mucho antes de la llegada de Node.js y Express. Sería mas valido y transparente decir que vale la pena aprender las dos, porque al fusionar estas dos tecnologías, ASP- JSP -ROR y las demás, quedarían en un segundo plano