¿Por qué PHP y no Python?

Hoy me he asomado otra vez al maravilloso mundo de WordPress por motivos que no vienen al caso. Y me he puesto a reflexionar en algo que llevo dando vueltas más de un lustro: ¿por qué es PHP, y no Python, el lenguaje más usado de la web?

He buscado “shared hosting” en Ecosia y he entrado al primero que he visto: https://www.dreamhost.com/es/hosting/shared/ : muchísimas menciones a WordPress, se dice específicamente " Soporte para PHP 7.1, 7.2 y 7.3", y a Python lo mete en esta frase: " Soporte para Rails, Python, y Perl".

O sea: “Rails, Python, y Perl”. Ahí, todo junto.

Luego he entrado a mi proveedor de referencia: https://dinahosting.com/hosting De nuevo: menciones claras a WordPress y PrestaShop (PHP también). Python de nuevo entra en el cajón de sastre “Múltiples lenguajes: Node.js, Ruby, Python…”, y más abajo en el cuadro detallado, escondido en una sección colapsada, ojo a las versiones:

" v. 2.5.2 / 2.6.5 / 2.7.3 / 3.4.0 "

O sea… lo más moderno, Python 3.4. Y ofrecen Python 2.5.2, que es del año… 2006!!!

Y yo me pregunto: ¿por qué? Me interesan mucho vuestras opiniones

3 Me gusta

Imagino que se debe a que la mayoria de gente que tiene una web, incluidas empresas, no son programadores o no tiene porqué saber programarla. Según he leído por ahí, el 39% de las webs estan hechas con Wordpress. Solo con eso quizás ya es suficiente motivo de peso.

También imagino que tiene que ver con donde buscas el proveedor. No creo que en Heroku, AWS, Azure, etc, hablan de CMS-PHP por un lado, y den servicios desactualizados por otro. Los que dan esos servicios que hablas, imagino que se aprovechan de un usuario que no sabe apenas, y con dos videos de youtube se monta su blog o su ecommerce rapido. A costa de tener un hosting gratuito/barato muy penco.

Pero no solo eso. Imagina que eres freelance, diseñador y puedes ganarte la vida haciendo UI para clientes de tu barrio. Pues usar un CMS en estos servicios de hosting te permite al menos una forma de crear negocio y portfolio. Si apenas sabes de desarrollo, meterte en Firebase te va a echar para atrás.

Lo resumiría en que somos una gotita de agua en un mar inmenso. Y el entorno de CMS es enorme, y está dominado por PHP. Los CMS bajan muchísimo las barreras de entrada a un usuario que no tiene mucha idea. Así que si quieres ganarte la vida como desarrollador web, PHP te puede dar mucho de comer. Otra cosa es si quieres comer de ese plato o no.

Coincido con todo lo que dices @crisconru, pero no terminamos de dar con los porqués, en mi opinión.

Reformulo la pregunta:

Los CMS bajan muchísimo las barreras de entrada a un usuario que no tiene mucha idea.

¿Por qué no han triunfado los CMS en Python?

Imagino que por la misma razón que en los demás lenguajes, porque han llegado tarde a ese nicho, y probablemente no se les de el mismo cariño.

La nueva ola del “No code” está entrando también eh. Ahora tienes mucha gente haciendose webs con WIX por ejemplo. Así que igual incluso esto cambia más.

Creo que tiene que ver con nichos, y cuando empezaron. El típico LAMP (luego XAMP) con su phpMyAdmin es que es del principio de la web, y ha sobrevivido al Adobe Dreamweaver, Flash, etc. Hay mucho “legacy” ahi que se ha podido reinventar. Mucho mercado de templates que permiten sacar proyectos a un freelance en tiempo record.

A todo esto sumale que PHP7 creo que ha sido un salto cualitativo, y ya el PHP8 hablan maravillas de él a nivel de performance y demas.

PD: Aunque los “gurus dev” siempre han soltado el mantra de “php = malware”. Pero bueno, ningun “guru dev” es conocido por crear empleo :sweat_smile:

2 Me gusta

Estoy con @crisconru

Antes de los 2000 se popularizó el crear webs dinámicas. PHP se pensó como un lenguaje para web donde puedes mezclarlo todo (HTML, JS, PHP,…, sí, lo sé) en un único fichero y ya tienes una web lista. Surgieron herramientas como PHPMyAdmin, vBulletin, SMF, phpBB, Wordpress,…

En aquel momento todo eso cogió mucha tracción y evolucionó bastante y era todo PHP. Hoy en día se siguen viendo muchas de esas aplicaciones corriendo por todos lares. Son capaces de gestionar cientos/miles de usuarios sin apenas dolores de cabeza y sin necesidad de saber programar, saber configurar un apache, saber hacer una query SQL,… Eso generó mucha inercia en el pasado que hoy sobrevive. Que sea tan simple no tiene precio (a pesar de la seguridad que para mi blog/foro/… no es algo tan importante).

Dime un solo blog hecho en python que se instale con unos pocos clicks. Dime un solo forum en python que se instale con unos pocos clicks. Dime alguna de estas aplicaciones que no sea un dolor de mantener. Dime alguna de esas aplicaciones en las que personalizar la apariencia se pueda hacer internamente con unos pocos clicks y sin escribir nada de código. Dime alguna de esas aplicaciones en que instalando un plugin tenga determinada funcionalidad sin tener que tocar código,… Wagtail no es un CMS. Para mi un CMS es algo para gestionar contenido. Wagtail me requiere programar. DjangoCMS, lo poco que lo he probado, me resulta lento, mucho menos pulido que WP y si necesito cualquier cosa que se salga un mínimo del tiesto me requiere programar (en Django, con 2000 páginas de documentación y necesidad de saber Python). Todo lo anterior dicho desde el punto de vista de un mero mortal, por ejemplo, mi padre que quiere compartir sus fotos de muebles restaurados o los peces que ha pescado ahora que está jubilado.

Y con lo anterior llego a que el 99% de las webs del mundo son sitios simples (fotos de gatos, recetas de cocina, críticas de libros,…). El 99% de la gente no necesita un equipo de ingenieros como Instagram para publicar sus fotos de gatitos y las empresas de hosting tienen como clientes, principalmente, a ese 99% de gente. Y la web va sobre publicar. Lo que menos fricción me dé entre mi idea en la cabeza, compartir mi [loquesea] con el resto del planeta, y el resto del planeta es lo que va a triunfar (a pesar de algún inconveniente).

Instagram, FB, Twitter o demás no necesitan un hosting barato. La gente necesita un hosting barato y soluciones simples y, hoy por hoy, PHP y cosas como WP dan la respuesta (y la versión 7 de PHP mejora mucho el rendimiento, por encima de Python).

Así que creo que es una mezcla de cosas como haber llegado en el momento justo al lugar apropiado, el ser un lenguaje de nicho pensado precisamente para la web, el haber mantenido inercia, el haber hecho extremadamente fácil para la gente compartir sus ideas,… Cosas que Python (u otros) no han conseguido.

P.D.1: Curiosidad: las versiones de Wordpress se nombran con nombres de músicos/cantantes de jazz/soul y la versión 3.1 se llamó Django Reinhardt…
P.D.2: Todo lo anterior lo escribe alguien frustrado que sabe un poco de Python y se ha comprado libros de Django y Flask, ha mirado sus documentaciones muchas veces, ha iniciado muchos proyectos en local para intentar aprenderlo y tener un blog hecho con Python y ha sido incapaz porque no es algo que se pueda hacer en dos tardes (la doc de django 3.1 son 2041 páginas sin entrar en apps de terceros).

3 Me gusta

Leyendo un poco más sobre el tema: parece que Django CMS es el único proyecto con suficiente ambición y visión. Han creado una asociación recientemente (para que no esté principalmente apoyado por Divio, supongo) y según su hoja de ruta en 2024 quieren estar en el Top 5 de CMSs empresariales a nivel mundial.

Se va a hacer un poco larga la espera pero ojalá que triunfen.

1 me gusta

A ver como evoluciona la cosa, pero con los nuevos lenguajes y demás, Python se puede quedar de nicho para según que. Me explico:

  • Si necesitas hacer un mastodonte web, monolítico, desde cero -> Lo más probable es que uses Django o Ruby on Rails (también está el ecosistema Java).
  • Si vas a hacer cosas de Data Science, Machine Learning, etc, te tiras para Python o R.

Fuera de ahí, la cosa está cambiando creo:

  • Para hacer microservicios o backends que no sean tan grandes, te puedes plantear usar Node o Go. El primero te da las ventajas que el Front también puede tocar el Back. El segundo te da una performance de la hostia, y facilidad para concurrencia. -> Conclusión, podrias descartar Flask o FastApi.
  • Para hacer herramientas del sistema, cada vez veo más hechas con Rust o Go. El primero te da mucha más rapidez, seguridad y compatibilidad 100% con librerias C de tu sistema. El segundo, va como un rayo también y no es complicado de aprender. -> Conclusión, es probable que empecemos a ver Ansible’s y similares en otros lenguajes.
  • Para sistemas operativos, ni idea si le están comiendo la tostada a Python, pero Rust parece ser que ha llegado para quedarse, precisamente ahí, en sistemas (como Go). Y aunque su curva de aprendizaje es jodida, tener compatibilidad 100% con cualquier código hecho en C + una velocidad similar, tiene pinta de que muchas cosas de Sistemas Operativos se puedan ir pasando ahí, en detrimento de Python (que ya sabemos el handicap de la performance).

Así que si te paras a pensarlo, lo que es el lenguaje como tal, yo creo que se está acotando o definiendo más para que lo está usando la peña.

1 me gusta

¡Super interesante la discusión! Dentro de mi ignorancia, muy de acuerdo con todo:

  • PHP llegó en el momento adecuado y hay mil herramientas y aplicaciones super potentes, avanzadas y facilísimas de instalar.
  • Las apps web genéricas de Python no han conseguido rivalizar con las de PHP. Como dice @kikocorreoso, no hay CMSs en Python que se instalen tan fácil. Si le añades la cantidad de plugins y comunidad que tienen WP, Drupal, etc. la distancia es abismal. Y entiendo que quien se pone a programar CMSs en Python sabe que es muy difícil llegar ahí. Y pensándolo bien… ¿para qué? ¿Por qué tendríamos que invertir esfuerzos en crear un blog en Python que sustituya a WP, si WP ya soluciona nuestros problemas? Solucionemos problemas reales, no hagamos sustitutos porque sí.
  • Desde un punto de vista de hosting y de nuevo admitiendo mi ignorancia, probablemente PHP es más ligero y fácil de administrar por un host. Tienes Apache con el mod_php o lo que se use hoy en día e instalar cosas es tan sencillo como poner archivos .php en la carpeta asignada al usuario, a la que puede acceder por SFTP. Con Python tienes que jugar con entornos virtuales para cada usuario y darle una forma de instalar cosas ahí a la vez que limitas a dónde puede acceder, etc.

Por otra parte, @astrojuanlu mencionas un par de hostings, dramhost y dinahosting, que su mercado principal es precisamente el que comenta @crisconru: gente que no tiene muchos conocimientos técnicos y quiere webs sencillas para su negocio, proyecto, etc. Si por el contrario miras hostings para proyectos técnicos, puedes encontrar:

Es decir, gente con no muchos conocimientos técnicos y necesidades genéricas → PHP. Desarrolladores/as que quieren crear aplicaciones nuevas especializadas → otros lenguajes. :slight_smile:

2 Me gusta

Opino igual. El ecosistema WP es muy rico. Es quizás un triunfo del sw libre, y ademas Auttomatic ha sido un foco, no se si disruptivo, pero una guía al menos. Producto Open Source desde el principio, toda la peña currando en remoto también desde el principio. Hablamos del año 2003, hace 18 años… Y hoy en día tienen una buena salud.

1 me gusta

Buenas, encontre este articulo suoer interesante! Y concuerdo con muchas cosas de las que hablaron.

Una de las cosas por las que por lo menos yo veo que Python no termina de entrar muy de lleno en la parte web. Es la “terrible” configuracion que hay que hacer en NGINX para un simple print en python. Cosa que en php es facil de integrar con NGINX o APACHE simplemente instalando el paquete necesario u dejando un simple echo en php ya tienes tu primer hola mundo.

Para mi ha sido un poco fustrante querer hacer algo en python en la parte web, sin usar un framework, la terribles configuraciones del lado del servidor son tediosas.
Python es bonitor para aprender y hacer cosas buenas pero esas configuraciones adicionales con un simple print se acaba lo bonito =)

Saludos

2 Me gusta