PHP, ¿por qué tanto hate?

PHP, ¿por qué tanto hate?

PHP, un juego recursivo de Preprocesador de Hipertexto, es un lenguaje de scripting de propósito general orientado al desarrollo web. Aunque algunos lo consideran anticuado, PHP se sigue utilizando en Internet, por ejemplo, en grandes empresas como Facebook, Wikipedia, Slack y Etsy.

Con el auge de JavaScript y la proliferación de frameworks y librerías como React, Angular y Vue, muchos nuevos desarrolladores están recurriendo a ellos en lugar de a PHP por varias razones. Inspirándonos en este hilo de Twitter, hablaremos de PHP y JavaScript en términos de características, capacidades, rendimiento y colaboración. ¡Empecemos!

PHP, ¿por qué tanto hate?

La historia de PHP

Desarrollado originalmente por Rasmus Lerdorf en 1994, PHP se ha ido haciendo más robusto con el tiempo, siguiendo un ciclo regular de lanzamientos que comenzó en 2011 e introduciendo características como la compatibilidad con tipos, JSON, una utilidad de línea de comandos y la compilación justo a tiempo. Como tecnología flexible del lado del servidor, PHP es aplicable a una gran variedad de casos de uso.

Teniendo en cuenta el estado de JavaScript a principios de la década de 2000, está claro por qué PHP fue tan ampliamente adoptado. A medida que JavaScript maduró como lenguaje y se introdujeron otras bibliotecas y marcos de trabajo, los desarrolladores empezaron a buscar JavaScript en lugar de PHP para sus necesidades de desarrollo web.

PHP ofrece muchas características que JavaScript incluye directamente, como el manejo de condicionales, bucles, tipos, modularidad y objetos. Un obstáculo importante para PHP es que JavaScript tiende a tener una barrera de entrada más baja. Por ejemplo, puedes escribir y ejecutar JavaScript con sólo un navegador y tu editor de texto favorito. Sin embargo, para usar PHP, un lenguaje de scripts, tendrías que usar un intérprete y un tiempo de ejecución.

Implementación de PHP

Hay varias formas de implementar PHP, pero una de las más populares es el motor Zend. Para utilizar el motor Zend, necesitarás una máquina que ejecute un compilador de PHP, y luego puedes servir el motor Zend desde una ubicación alojada.

Con JavaScript, puedes manejar tanto tu desarrollo de frontend como de backend con el tiempo de ejecución Node.js. Los proyectos de frontend ejecutan JavaScript directamente en el navegador del cliente, lo que significa que el código JavaScript puede servirse desde una CDN o una ubicación de archivos estáticos, por lo que no necesitas un servidor completo para alojar tu contenido.

Del mismo modo, con npm, tus proyectos de backend también dejan una huella mínima; puedes ejecutarlos en un servidor o utilizar funciones sin servidor con diferentes proveedores de la nube.

PHP, ¿por qué tanto hate?

JavaScript vs. PHP: Rendimiento

JavaScript y PHP pueden realizar funciones similares, pero bajo el capó, verás en qué se diferencian realmente.

JavaScript se rige por eventos con un bucle de eventos que permite realizar actividades asíncronas. En lugar de una ejecución sincrónica del código JavaScript en la que cada línea se ejecuta de una en una, JavaScript puede ejecutar varias secciones de su código a la vez, evitando que el hilo principal de tus programas JavaScript se bloquee. Además, características como las funciones de devolución de llamada y el bucle de eventos te permiten manejar múltiples actividades al mismo tiempo.

Por otro lado, PHP es síncrono pero permite los multihilos. PHP requiere que cada línea de código se ejecute en secuencia, lo que teóricamente ralentiza tus programas. Sin embargo, algunos pueden argumentar que la naturaleza sincrónica de PHP hace que sea más fácil trabajar con él.

Si tienes en cuenta las ventajas de la implementación no bloqueante de JavaScript, yo diría que JavaScript supera a PHP en este aspecto.

JavaScript vs. PHP: Integraciones

JavaScript puede combinarse con muchas tecnologías web diferentes, como HTML, XML, Ajax e incluso JSX con componentes React. Con npm y el tiempo de ejecución de Node.js, los desarrolladores de JavaScript tienen una amplia gama de paquetes a su alcance. Los principales frameworks y librerías frontales, como Angular, React y Vue, tienen cada uno sus propias características, que se basan aún más en estas integraciones.

Por otro lado, puedes integrar PHP con HTML, lo que se ha popularizado con plataformas CMS como WordPress y Drupal. Además, PHP funciona bien con la pila LAMP tradicional. La integración con SQL se consigue mediante la extensión MySQLi.

En general, tanto JavaScript como PHP pueden ejecutarse en cualquier dispositivo con un navegador web. Además, JavaScript tiene una capacidad de backend con el tiempo de ejecución Node.js. Hay varios paquetes npm y marcos que te permiten construir APIs de JavaScript que pueden ejecutarse en el lado del servidor.

Tanto JavaScript como PHP pueden adaptarse a diferentes necesidades, pero en particular, JavaScript funciona bien con una amplia gama de plataformas sin requerir demasiado trabajo adicional.

PHP, ¿por qué tanto hate?

Configurar PHP requiere un backend, así como las etiquetas necesarias para envolver tus declaraciones si quieres utilizar datos JSON o código inyectado en tu página web.

JavaScript vs. PHP: Características

JavaScript y PHP ofrecen muchas de las mismas características incorporadas, entre ellas

  1. Condicionales
  2. Bucles
  3. Conversión, es decir, de cadena a entero, etc.
  4. Modularidad, es decir, funciones y/o métodos
  5. Objetos

La diferencia entre PHP y JavaScript surge en la forma en que cada uno implementa sus comportamientos. Con la naturaleza no bloqueante de JavaScript, tu programa puede tener una baja latencia y manejar muchas operaciones a la vez. Además, puedes utilizar cosas como promesas o incluso observables RxJS para controlar los comportamientos.

JavaScript también incluye el concepto de ámbito, que te permite controlar variables y puntos de datos.
El alcance es muy potente cuando tienes un proyecto más grande con muchos módulos o funciones.

Vamos a probarlo con un ejemplo. La función holaMundo tiene una variable de ámbito local, mensaje, que sólo está disponible en la función holaMundo. Si intentas acceder a la variable fuera de la función, obtendrás un valor indefinido, lo que te permite utilizar el mismo nombre de variable en varios lugares siempre que respetes el ámbito y el uso de esa variable, lo que supone una gran ventaja para JavaScript.

function holaMundo() {
  const mensaje = "hola esta es una variable de ámbito local";
  console.log(mensaje);
}

// esto mostrará "hola esta es una variable de ámbito local"
holaMundo();
// esto producirá un error diciendo que la variable mensaje no está definida
console.log(mensaje);

Con PHP, normalmente utilizas $ para los nombres de las variables y sigues construcciones similares a las de JavaScript. PHP también te permite utilizar cosas como echo para escribir valores como el siguiente fragmento:

function holaMensaje(string $mensajeValue): string
{
  return 'hola '.$mensajeValue;
}

echo holaMensaje('primer mensaje");

JavaScript vs. PHP: Colaboración

Tanto PHP como JavaScript tienen grandes comunidades con un fuerte apoyo. Hay innumerables blogs y vídeos en línea a los que los desarrolladores pueden recurrir cuando se inician o resuelven problemas. Todos los principales marcos y bibliotecas de JavaScript, como Angular, React y Vue, son de código abierto y tienen equipos de desarrollo que actualizan regularmente sus repositorios. PHP también es de código abierto, y muchos proyectos de GitHub incluyen PHP.

En cuanto a la experiencia de los desarrolladores, JavaScript suele requerir más conocimientos previos. Para trabajar con JavaScript, normalmente tienes que entender cosas como el bucle de eventos, así como otras tecnologías web como CSS y HTML.

Todas estas tecnologías forman parte del marco que hace funcionar Internet, por lo que aprenderlas no es necesariamente una mala inversión. Una vez que te hayas familiarizado con JavaScript, obtendrás una amplia gama de opciones para tus proyectos.

Por otro lado, PHP es mucho más sencillo. No sólo es síncrono, sino que sus modelos siguen tecnologías de backend más tradicionales, como Java y C. Sin embargo, sigues necesitando tener un servidor o algún entorno que ejecute un intérprete de PHP y normalmente el resto de la pila LAMP.

PHP, ¿por qué tanto hate?

En cuanto a la colaboración, yo diría que es más fácil trabajar con un equipo en un proyecto de JavaScript, principalmente porque las herramientas que se utilizan para hacer el trabajo son mínimas. Con la llegada de las plataformas y entornos de codificación online, esto es aún más fácil. Si quisieras colaborar en un proyecto de PHP, primero tendrías que tener un entorno de trabajo configurado antes de poder ejecutar cualquier código.

¿Cuál es mejor?

Tanto JavaScript como PHP pueden servir para una amplia gama de necesidades. El hecho de que PHP siga siendo tan utilizado demuestra que tiene un valor entrañable para muchos sitios web. La discusión no debería ser necesariamente cuál es mejor, sino cuál es mejor para tus necesidades.

Si tu equipo ya está trabajando en la pila LAMP, probablemente PHP sea lo mejor para ti. Si tu equipo no sabe mucho sobre la pila LAMP y además tiene menos experiencia en backend, JavaScript es el camino a seguir.

Personalmente, me gusta utilizar JavaScript en los proyectos. Me gusta la facilidad con la que puedo transferir los conocimientos de React a los de una API Node.js de backend. También es genial ejecutar el código directamente en el navegador, lo que facilita la puesta en marcha de JavaScript en diferentes plataformas.

A muchos desarrolladores les sigue gustando PHP y encuentran grandes casos de uso para él. En realidad, todo depende de tu equipo y de tu proyecto.

PHP, ¿por qué tanto hate?

Para terminar

En este post, hemos cubierto una discusión de alto nivel sobre PHP vs. JavaScript, revisando los puntos fuertes y débiles de cada uno. Espero que hayas disfrutado de este artículo y tengas una mejor comprensión de cada uno. Al final, la tecnología que elijas depende de lo que funcione para ti y tu proyecto. Ambas son grandes tecnologías y ofrecen un gran valor para muchos.