Durante los 26 años de historia de PHP, el lenguaje ha sido desarrollado activamente por una gran cantidad de personas, tales como Ramsus Lerdorf, Zeev Suraski, Andi Gutmans, Nikita Popov y mucho muchos otros. En 2021, PHP está preparado para otra vuelta en su evolución.
|
etiquetas: php , fundación , nikita popov
Justo ese es el problema. Cada cosa es para lo que es.
Entiendo que lo suyo es tener siempre la aplicación en un contenedor distinto al del servidor (que puede estar soportando muchas otras aplicaciones web).
La única razón para escoger python es pq tu lo vales. Jijijiji. Luego organiza una aplicación un poquito grande. Jijijiji
Algún microservicio aislado y muy aislado, te lo puedo comprar... Como le metas algun dominio algo complejo lo veo ridículo.
He probado extensamente maven, npm, cargo... Y pip/PyPI no tiene mucho que envidiar, más bien al contrario.
Increible como arremeten los PHPeros contra otros lenguajes usando prejuicios también, se nota que escuece el éxito de otros.
En cuanto al rendimiento de CPython, es un SW de 30 anos que nadie se ha preocupado en optimizar el rendimiento de forma profunda. En un par de versiones, con todo el dinero que está metiendo MS, Google y Facebook en esto, veremos a ver qué pasa.
Conforme se adquieren conocimientos, se van viendo las similitudes entre unos y otros lenguajes, que al final no existe ninguna solución "perfecta", que los programadores no son artistas, que en programación ser un "rockstar" no es algo deseable, que apuntarse a lo último solo porque es lo último y es divertido casi nunca vale la pena, que no existe una "bala mágica" (framework, librería, lenguaje, editor) que sea todo lo necesario para cualquier proyecto, que emperrarse en usar la solución "perfecta" en vez de la que funciona es pegarse un tiro en el pie, que a veces es mejor copiar y pegar que meter una abstracción con calzador, etc.
Vamos, que al principio hubiera dicho en serio "PHP es una basura, Rust/Go/Kotlin es la puta caña" pero ahora, habiendo visto proyectos en PHP que estaban muy bien estructurados y escritos, como proyectos escritos en "lo último y mejor" por "expertos acreditados" que luego eran una basura rota, ilegible, inmantenible y en gran parte copia/pega de manuales y tutoriales, con chapuzas de todo tipo... ahora diría, el mejor lenguaje es aquél con el que puedas hacer lo que necesitas con más facilidad y eso depende únicamente de ti y de lo que quieras hacer. Lo mejor es definir bien lo que necesitas y luego investigar.
¿Ecosistema? Que carencias le encuentras a Python que no sirva para backend.
En Python tienes más bibliotecas que en PHP,.. El soporte de programación asíncrona ya está bastante establecido...
Aún hoy en día sigo en versiones 5.x
Donde puedo encontrar un refresh decente para saltar a 8.x? Tened en cuenta que que,.por ejemplo, nunca he usado frameworks, o composer. Todo a chaleco, librerías con includes, y más codigo spaghetti de lo que incluso yo desearía.
Usemos la herramienta adecuada para el problema concreto que tenemos enfrente.
Felicidades y gracias por compartirlo!
La gracia de Docker es hacer contenedores stateless que contienen todo lo necesario para funcionar por si mismos de manera que si el estado pasa a ser desconocido o el docker se para lo puedes borrar tan tranquilo y lanzar uno nuevo, es por ejemplo como funciona en Kubernetes o ECS.
Si tanto el servidor como la aplicación se encuentran en el mismo contenedor a mi me huele que no se está cumpliendo con la filosofía de los contenedores, los cuales se supone que deben correr un único proceso ¿cierto? ¿El motor de bbdd al que previsiblemente esté conectada la aplicación también corre en el mismo contenedor? Sería el horror.
Además, en el caso de que el servidor web soportara más de una aplicación ¿qué hacemos? No entiendo muy bien que tiene que ver lo que comentas respecto al stateless por cierto.
Pero puedes usar lo q quieras. Nosotros el python para cosas muy concretas y muy simples. Si hay q crear mucho paquete o un dominio complejo, barajamos otras opciones, preferiblemente go. Que es lo q esta copando todo nuestro backend salvo para la api central que se encarga de procesar la request, consumir servicios de dominio y envolver la response(esto en php porque tiene 5 años, pero actualizado a 7.4) ... Por detrás todo go y algún servicio puente con elementos externos desarrollado en node.
- un load balancer que seria a donde apuntaría el dominio
- un a imagen de docker con node instalado y los ficheros dentro, por ejemplo en /app, que al iniciar hace node /app/server.js
- un mysql metido en un server tradicional o en un RDS de AWS.
Al visitar irias al LB, el cual llamaria a uno de los dockers que hay detrás y que pasan las pruebas de healthcheck y estos se conectan al mysql para consultar los datos con estado.
Con este setup consigues poder escalar hasta millones de users sin ningún problema y si un docker falla simplemente se mata y se lanza uno nuevo.
Pero chico, si realmente te crees eso de "todo lo contrario"... vives en el mundo de la piruleta. Que la forma oficial de instalar paquetes siga siendo PIP con su cutrisimo requirements.txt es de puta pena, que ni tansiquiera permite distinguir entre dependencias de desarrollo y dependencias de producción. Y si se quiere algo más potente, hay que irse a soluciones no estandar como el infame pipenv (al que su autor le atribuyó falsamente la medalla de solución "oficial"), o "nuevas" alternativas como poetry (que, para variar, introducen nuevos formatos de configuración incompatibles con los anteriores...).
Y aquí me estoy refiriendo SOLO a distribución, y más concretamente, sólo a distribución de bibliotecas. Porque si hablamos de software "standalone", y si entramos en el barrizal de los formatos de paquete, y las bibliotecas asociadas... madre mía, de verdad, que tengas los huevos de decir que Python está mejor que Node+NPM, o que PHP+Composer.
Y en cuanto a los virtualenv, que son prácticamente imposibles de mover (se tienen que volver a recrear de cero), porque se rompen cientos o miles de referencias "hardcodeadas" en el momento de crear el entorno... otro asunto que deja a Python muy, pero que muy mal.
Y respecto a lo de que nadie se ha ocupado de optimizar CPython... si el panorama es un puto barrizal. Tenemos: Cython (ya sé que Cython es para darle de comer aparte), PyPy, Pyston, Cmypy, Numba, Pyjion, Cinder... Y por lo que sea nadie consigue (o quiere) integrar ninguna de las mejoras en CPython.
Espero no tener que ver muchos ficheros de más de 1000, son el infierno en la tierra (Y he sido el responsable de alguno, pero nunca más).
Yo tenía antaño como buena práctica (cuando me dejaban y no tenía que estar todo "para ayer") ponerme a refactorizar cualquier función/método/clase que no me entrase en la pantalla sin hacer scroll, y no usaba un monitor de 70 pulgadas precisamente...
Digo que lo intentaba, no que me saliera siempre (o que me dejasen)
Lo que no me has dicho (era lo único que te pedí) es qué app standalone en PHP se distribuye como un ejecutable al público general no experto en informática (como es, o era, el cliente de Dropbox). Y, ojo, no estoy diciendo que python no sea un desastre en este apartado y que casi cualquier lenguaje de propósito general de los importantes lo supera: Java, C/C++, C#, JavaScript, Rust, Go...
Esta claro que los core developers de CPython prefirieron durante mucho tiempo la simplicidad de implementación del intérprete y extensibilidad al rendimiento. Entiendo que, para el caso de uso para el que se pretendía Python, tenía sentido y la estrategia de delegar las partes más críticas a c-extensions no les ha ido tan mal (a tenor de las cifras de usuarios). Sin embargo, me consta que se están poniendo las pilas con esta vergüenza y que hay varios equipos (incluido Guido), para mejorar la historia de concurrencia y mejorar el rendimiento N veces mediante una rearquitectura del intérprete (incluyendo un compilador jit).