跳至主要内容

PHP cumplirá 30 años en 2025, ¿ha pasado ya su mejor momento?


Introducción: El último índice TIOBE muestra que la popularidad de PHP ha caído a un mínimo histórico, ocupando el puesto 17. La encuesta anual Stack Overflow Developer Survey también revela un descenso en el favor de los desarrolladores, reduciéndose de alrededor del 30% al 18%. "PHP es el mejor lenguaje del mundo" se ha convertido en un meme de humor negro entre los programadores. En este clima de declive, ¿está PHP realmente sin perspectivas? ¿Vale la pena siquiera aprenderlo todavía?



1. ¿De la Gloria al Declive?

PHP, nacido en 1995, comenzó como una simple herramienta de scripting para procesar formularios HTTP. Las versiones posteriores añadieron soporte para bases de datos MySQL, transformándolo en un lenguaje de desarrollo web independiente. Impulsado por el rápido crecimiento de Internet, la facilidad de uso y la sólida comunidad de PHP lo propulsaron a convertirse en un lenguaje dominante para el desarrollo de aplicaciones web. Combinado con Linux, MySQL y Apache, el stack LAMP se convirtió en la piedra angular de los sitios web y aplicaciones dinámicas. Según las estadísticas del W3C, casi el 78% de los sitios web del mundo están construidos con PHP.

PHP, con su bajo coste, facilidad de uso, flexibilidad, escalabilidad y un próspero ecosistema web, una vez ocupó una posición prominente en el mundo del desarrollo, rivalizando con Java.

Sin embargo, con el auge de la Internet móvil, la computación en la nube y la inteligencia artificial, los sistemas de software de Internet se han vuelto cada vez más complejos. Los sitios web a gran escala exigen una alta concurrencia y disponibilidad. Java ofrece ventajas sobre PHP en seguridad de tipos, rendimiento, agrupación de conexiones multihilo, estándares de codificación más estrictos y soluciones y ecosistemas más maduros para la gobernanza de servicios. Muchos equipos técnicos ahora prefieren Java a PHP para construir sistemas web.

Además, la aparición de nuevos lenguajes de programación como Node.js y Golang, con ventajas como la compilación estática, un rendimiento superior y la programación asíncrona, ha intensificado la competencia. Estos lenguajes están floreciendo y atrayendo a un número creciente de desarrolladores.

Si bien la comunidad de PHP continúa mejorando el lenguaje, la posición de PHP en ciertas áreas se ha erosionado. A medida que la tecnología evoluciona, algunos sitios web y aplicaciones importantes están migrando a otros lenguajes y frameworks, lo que lleva a cuestionar el futuro de PHP. Muchos desarrolladores creen que PHP está en declive, un sentimiento reflejado en el reciente índice TIOBE. Los desarrolladores están perdiendo la confianza en PHP y cambiando a otros lenguajes.

2. Razones del Declive de PHP

Los factores externos incluyen los tiempos cambiantes. El auge de Internet ha disminuido y la era de la inteligencia artificial está sobre nosotros, con Python a la cabeza. Otros lenguajes están experimentando caídas similares en la atención. Los factores internos incluyen:

  • Un ecosistema limitado: PHP no se ha expandido más allá del desarrollo web.

  • Actualizaciones insuficientes: La evolución de PHP en sistemas de tipos, compiladores y programación concurrente se ha quedado atrás de lenguajes como Java, Golang y JavaScript (V8).

  • Lastre del pasado: PHP todavía arrastra lastre de hace 20 años, como las superglobales (por ejemplo, $_GET, $_POST) y la nomenclatura inconsistente de las funciones.

A pesar de estos desafíos, PHP sigue siendo un lenguaje valioso, que impulsa numerosos sitios web y aplicaciones web. La comunidad de PHP continúa sus esfuerzos para adaptar el lenguaje a las nuevas tendencias y demandas del mercado. Si bien PHP puede estar experimentando un declive, su robusto ecosistema sugiere que continuará desempeñando un papel importante en el panorama del desarrollo.

3. El Ecosistema PHP

Un ecosistema saludable es crucial para la programación, abarcando herramientas, bibliotecas, frameworks, comunidad, documentación, tutoriales, servicios de terceros y soporte. Un ecosistema vibrante impacta directamente en la productividad del desarrollador, el éxito del proyecto y el avance tecnológico.

PHP sobresale en el dominio del desarrollo web. Java cuenta con ecosistemas maduros en software de escritorio, Android, big data, finanzas y comercio electrónico. Python prospera en la ciencia de datos, IA, aprendizaje automático, computación científica y educación, volviéndose particularmente popular con el advenimiento de la IA. Golang está haciendo incursiones en el software nativo de la nube y del lado del servidor, reemplazando a C/C++. Node.js domina el desarrollo front-end, las aplicaciones de una sola página (SPA) y el desarrollo full-stack.

En contraste, el ecosistema de PHP es relativamente estrecho, destacando sus limitaciones. El equipo oficial de PHP parece menos interesado en apoyar ecosistemas fuera del desarrollo web, centrando las actualizaciones principalmente en PHP-FPM y Apache.

Afortunadamente, la comunidad tiene Swoole, una solución de corrutinas asíncronas similar a la de Golang, que aborda las deficiencias de PHP en la programación concurrente asíncrona y la comunicación de red. Swoole proporciona a los desarrolladores más opciones y flexibilidad para manejar aplicaciones complejas y alta concurrencia. Además, los estándares de ingeniería sólidos son esenciales para garantizar la calidad del proyecto y la eficiencia del desarrollo.

4. Los Estándares de Ingeniería Importan

La experiencia ha demostrado que las prácticas de ingeniería robustas son más importantes que la velocidad de desarrollo. Los buenos estándares garantizan la mantenibilidad, la escalabilidad y la estabilidad a largo plazo. Si bien el desarrollo rápido ofrece ganancias a corto plazo, los proyectos que carecen de estándares pueden enfrentar numerosos problemas:

  • Disminución de la calidad del código: El código no estandarizado se vuelve desordenado, difícil de entender y mantener, consumiendo más tiempo y esfuerzo durante el desarrollo, la depuración y la modificación.

  • Colaboración en equipo difícil: La falta de estándares conduce a estilos y hábitos de codificación inconsistentes, lo que dificulta la comunicación y la colaboración del equipo.

  • Mala legibilidad del código: El código estandarizado es más fácil de leer y entender, lo que ayuda a la identificación de problemas, la comprensión del código y las revisiones de código.

  • Mayores costes de mantenimiento: El código no estandarizado aumenta los costes de mantenimiento, ya que los desarrolladores dedican más tiempo a descifrar y modificar el código, acumulando deuda técnica.

  • Difícil evolución del proyecto: A medida que los proyectos crecen y los requisitos cambian, el código mal estandarizado se vuelve más difícil de mantener y extender, lo que a menudo requiere refactorización o reescritura.

Ignorar los estándares de ingeniería puede tener graves consecuencias, pudiendo detener el desarrollo del proyecto. PHP ofrece varias herramientas para mejorar los estándares de ingeniería:

  • PHPUnit: Un framework de pruebas unitarias.

  • ServBay: Una herramienta de gestión del entorno de desarrollo integral. Los desarrolladores pueden instalar, actualizar y cambiar rápidamente entre diferentes versiones de los servicios. Con combinaciones modulares, los desarrolladores pueden apilar y reemplazar servicios como bloques de Lego, simulando varios entornos de desarrollo. ServBay también ayuda a alinear los entornos del equipo, garantizando la coherencia y permitiendo el intercambio y la colaboración en tiempo real.

  • Laravel: Un framework de desarrollo web PHP limpio y elegante que ayuda a los desarrolladores a escapar del código desordenado, construir aplicaciones web y escribir código conciso y expresivo.

  • PSR: Una serie de estándares de codificación PHP impulsados por la comunidad que cubren la carga automática, el estilo de codificación, las convenciones de nomenclatura y el diseño de interfaces.

  • PhpStorm: Un IDE de PHP diseñado para mejorar la productividad, que ofrece completado de código inteligente, navegación rápida y comprobación de errores sobre la marcha.

Sin embargo, desde la perspectiva del lenguaje, PHP tiene deficiencias inherentes en comparación con Java. Las primeras versiones carecían de espacios de nombres y soporte completo para características orientadas a objetos. Si bien PHP 7 introdujo mejoras, los problemas persisten:

(1) Falta de Tipado Estricto

El tipado estricto promueve el código estandarizado. El tipado débil a menudo conduce a dificultades durante la refactorización. PHP ahora admite sugerencias de tipos en la mayor parte de la sintaxis:

1. Argumentos de Función y Valores de Retorno:

      function fun(int $a, float $b, FunClass $c, string $d, callable $e): bool {
    // código ...
}
    

2. Propiedades del Objeto:

      class FunClass {
    public int $age;
    public string $name;
    public stdClass $attrs;
}
    

Se recomienda usar el modo estricto:

      <?php
declare(strict_types=1);
    

Desafortunadamente, los arrays de PHP siguen sin tipo:

      $a1 = new FunClass;
$array = [$a1];
$a2 = $array[0]; // Se pierde la información de tipo
    

Esta falta de tipado de arrays es la razón por la que HHVM de Facebook finalmente se separó de PHP, convirtiéndose en el lenguaje Hack con tipado estricto.

(2) Falta de Soporte para la Construcción Binaria

El ciclo de vida del desarrollo de software incluye desarrollo, pruebas, construcción y despliegue. Los lenguajes estáticos como Java y Golang se compilan en binarios, eliminando la necesidad de desplegar el código fuente. PHP normalmente despliega el código fuente directamente, lo que lleva a:

  • Inyección de WebShell: Inyección de código malicioso mediante cargas o escritura de archivos.

  • Modificaciones directas del código en línea: Discrepancias entre el código del servidor y los repositorios Git.

  • Desafíos de despliegue: Actualizaciones fragmentadas que causan errores lógicos.

  • Fugas de código fuente.

Si bien Docker mitiga algunos de estos problemas, los desarrolladores centrales de PHP todavía se aferran a la recarga en caliente, una característica principalmente beneficiosa en el desarrollo y las pruebas.

(3) Nomenclatura de Funciones Inconsistente

Las funciones integradas de PHP residen en el espacio de nombres raíz, y algunas tienen nombres inconsistentes:

  • htmlspecialchars debería ser html_encode_special_chars.

  • Las funciones de cadena como strstr, substr y str_replace carecen de consistencia, a diferencia de las funciones array_* bien organizadas.

(4) Orden de Parámetros Inconsistente

Los parámetros de las funciones integradas están ordenados de forma inconsistente. Considere array_search y array_filter:

      array_filter($array, $callback);
array_search($value, $array);
    

El array no siempre es el primer parámetro, lo que requiere que los desarrolladores consulten la documentación.

5. ¿Sigue Valiendo la Pena Aprender PHP?

A pesar de sus defectos, PHP sigue valiendo la pena aprenderlo. En comparación con lenguajes convencionales como Java, Python, C++ y lenguajes más nuevos como Node.js, Rust y Golang, PHP ofrece ventajas únicas y un conjunto de herramientas conveniente que ahorra tiempo a los desarrolladores.

(1) Simplicidad

PHP tiene una sintaxis relativamente simple, a diferencia de lenguajes complejos como C++ con su semántica de movimiento y las complejidades del "abogado del lenguaje". PHP evita los problemas de desbordamiento de enteros, a diferencia de C++ o Golang con sus diversos tipos de enteros (int8, int16, etc.). No tiene punteros, eliminando las excepciones de puntero nulo comunes en Java y Golang. También evita la sintaxis a veces confusa de Python y las peculiaridades de JavaScript como la equivalencia de 0, [], '\t' y '0'. PHP es sencillo y fácil de usar para principiantes, con una curva de aprendizaje baja.

(2) Amplia Biblioteca de Funciones

La vasta biblioteca integrada de PHP cubre una amplia gama de funcionalidades, que incluyen manipulación de cadenas, arrays, fechas, matemáticas, expresiones regulares, JSON, XML, operaciones con archivos, correo electrónico, comunicación de red, operaciones con bases de datos, criptografía, procesamiento de imágenes, gestión de terminales y procesos, e internacionalización. Esta funcionalidad fácilmente disponible reduce la necesidad de código personalizado o la dependencia de bibliotecas de terceros, lo que agiliza el desarrollo.

6. Tendencias Futuras para PHP

Desde el establecimiento de la Fundación PHP, el lenguaje ha recibido financiación y desarrollo estables. Es probable que muchos de los problemas existentes se aborden en versiones futuras.

Los frameworks PHP como Laravel y Symfony están madurando, cerrando la brecha con el framework Spring de Java. Herramientas como ServBay mejoran la productividad del desarrollador y reducen la barrera de entrada. La extensión de corrutinas Swoole, con su lanzamiento de la versión 6.0 planificado, introduce multihilo y corrutinas, mejorando las capacidades de concurrencia de PHP.

Conclusión

En mi opinión, PHP está progresando constantemente y tiene el potencial de recuperar popularidad. Para los desarrolladores de PHP, es esencial adoptar herramientas de IA como ChatGPT y Github Copilot, comprender los modelos de lenguaje grandes como Transformers, utilizar Docker y la orquestación de contenedores, dominar las tecnologías front-end como Vue, React y ElementUI para el desarrollo full-stack y ampliar las habilidades aprendiendo otros lenguajes como C++, Golang o Java.

评论

此博客中的热门博文

Software for MacOS Developers that cannot Miss, Again

  Here’s a summary of essential software for macOS development. All of these tools are free, and most are open-source. I hope they enhance your development experience. Basics Git Git needs no introduction. Simply run  git  in the terminal, and a dialog will pop up. Click install. This typically installs the basic Xcode runtime environment as well. Alternatively, you can install it by running  xcode-select --install  in the terminal. ServBay ServBay is probably the best development environment for Mac. It allows easy one-click installation of various development environments and simplifies subsequent upgrades. For teams, it ensures consistency in dependencies and configurations. Terminal Tools iTerm2  +  Oh-My-Zsh iTerm2 is the premier terminal on Mac, and Oh-My-Zsh provides powerful theming and plugin capabilities. Terminus A minimalist, cross-platform shell tool that I often use to connect to cloud servers. Debugging Tools Bruno Since Postman became p...

Beware the Mid-Career Crisis for Programmers: The Four Major Causes

In the rapidly evolving internet industry of today, questions and discussions like “Is 35 a turning point for programmers?”, “Do programmers really face unemployment at 35?”, and “What’s next for programmers after 35?” are rampant. The debate and concern over a so-called “crisis at 35” for programmers have become hot topics. This may stem from an uncertainty about the future and a fear of the pace at which AI technology is developing. As they age, programmers might face the risk of becoming “obsolete” and struggle to adapt to industry changes. “However, the solution lies with the one who tied the bell,” so to speak. We should face and address these issues, explore the reasons behind them, and understand how to avoid such situations. Therefore, this article delves into the root causes of these issues and offers practical advice to help programmers avoid these pitfalls, enhance their professional level and achievements, and stay ahead of the times. Not Proficient with Tools As programmer...

Modern PHP Development in 2024

In 2024, PHP remains a strong contender in modern web development. Despite a decline in its ranking on the TIOBE index, PHP is still one of the most widely used programming languages for websites. Its practicality, efficiency, and performance improvements make it a solid choice. For instance, the latest versions of PHP (like PHP 8.1 and above) have shown significant speed enhancements, making it competitive with Python or Node.js, and even faster in some scenarios. PHP’s development speed is also quite rapid, similar to Python, and it boasts a rich set of built-in functions and libraries that facilitate quick development. Additionally, PHP is relatively easy to deploy, especially for large-scale applications. Applications handling millions of requests can efficiently achieve load balancing with proper endpoint caching in PHP. The advantages and development trends of PHP are evident in several areas. Firstly, PHP is favored for its simple and readable syntax, making it particularly suit...