Es una muy buena pregunta. Permítanme darle la vuelta y preguntar: “Si PHP es un lenguaje tan pobre, ¿por qué se usa tanto en el desarrollo de software?”
Comienzo respondiendo con otra pregunta, a saber: “¿Por qué el lenguaje de programación C es tan popular?”. Y aunque C tiene muchas desventajas, hay muchas razones para su popularidad: refleja la organización de la computadora von Neumann, por lo que le da a su programador un alto grado de control sobre la máquina y le permite escribir código eficiente; es relativamente pequeño, por lo que es fácil de transportar entre diferentes arquitecturas; Es relativamente fácil de aprender. Estos son, lo que podríamos llamar, factores internos de su popularidad. Sin embargo, el hecho es que hay muchos otros lenguajes que comparten esas características pero no obtuvieron una fracción de su popularidad, y el principal vehículo que impulsó la popularidad del lenguaje de programación C fue el sistema operativo UNIX. Escribir un compilador de C para una arquitectura en particular fue una buena inversión, ya que permitió a su proveedor portar un sistema operativo ya existente con un mínimo esfuerzo.
Por lo tanto, el sistema UNIX e Internet estaban cada vez más disponibles, hasta que apareció la web. Inicialmente, el contenido servido en la web consistía principalmente en archivos estáticos, pero la necesidad de generar contenido se desarrolló dinámicamente rápidamente. Inicialmente, se usó el lenguaje de programación Perl para esta tarea. Perl es una extraña amalgama de lenguaje de programación shell y AWK de UNIX, y solía ser popular para realizar diversas tareas administrativas, y aún puede encontrar algunos servicios web importantes que se escribieron utilizando Perl.
Por otro lado, los servicios web no resultaron ser un dominio particularmente bueno para el lenguaje de programación C, porque dificultaba ciertas tareas simples: el programador tenía que ocuparse de la administración de la memoria por sí mismo, y tenía que usar mucho bibliotecas para poder hacer incluso las cosas más simples.
En ese momento, Rasmus Lerdorf ha estado experimentando con un lenguaje de secuencias de comandos que podría integrarse en las páginas web: podría escribir código HTML “normal” y mezclarlo con bucles y condicionales que podrían generar algunas partes de su contenido.
Si eras nuevo en la programación, este tipo de libertad podría haber sido seductor, aunque el lenguaje en sí no estaba particularmente bien pulido. Pero como tenía sus usuarios, aparecían personas que podían ganar dinero mejorando el idioma. No sabían mucho sobre el diseño del lenguaje, por lo que algunas de sus decisiones fueron completamente aleatorias. Algunos de ellos eran buenos, otros se arreglaron más tarde y otros fueron imposibles de arreglar sin romper demasiada compatibilidad. Finalmente, se convirtió en un lenguaje suficientemente bueno.
Hay algunas cosas para notar aquí. Primero, PHP es un ejemplo del fenómeno llamado efecto de plataforma interna: fue escrito en C e implementa la sintaxis de C, así como parte de su semántica. Esto es algo bueno, porque facilitó a los programadores de C aprenderlo y usarlo.
Segundo, PHP era un lenguaje de revolución cultural. No se enseñaba en la escuela, por lo que sus usuarios eran autodidactas. Muchos de ellos eran adolescentes que lo usaban para impresionar a otros adolescentes (lo cual creo que fue la razón por la cual los chicos de Facebook llamaron a su versión de PHP “Hack”, porque suena genial). Esta es también la razón por la cual surgió el grupo cultural de “hipsters Ruby”, como una contracultura a PHP que se convirtió en la corriente principal. Tenga en cuenta que los argumentos que esos “hipsters Ruby” dan a favor de Ruby son principalmente estéticos.
Ahora a Lisp. Paul Graham, quien escribió una aplicación web avanzada en Common Lisp, esperaba que la revolución de Internet pudiera hacer que Lisp floreciera nuevamente, ya que los desarrolladores de back-end tienen total libertad en su elección de sistemas de back-end. Sin embargo, la brecha entre HTML y PHP es mucho menor que entre HTML y Lisp, y Lisp nunca se ha anunciado como el lenguaje para la web. Este argumento no le importa a las personas que conocen bien la programación y que entienden las ventajas de Lisp, pero las personas que no están familiarizadas (es decir, la mayoría de las personas) elegirán el “lenguaje especial para el desarrollo web, porque seguramente debe ser más fácil ”(y de alguna manera se convierte en una profecía autocumplida: a medida que hay más desarrolladores, también hay más bibliotecas y tutoriales). Es un poco como vender agua: si comienzas a vender “agua especial para mujeres embarazadas”, es probable que vendas más, aunque siga siendo la misma agua (incluso puede tener una calidad inferior, pero está bien, siempre y cuando ya que es lo suficientemente bueno).
TL; DR, las decisiones humanas rara vez son impulsadas por la razón.