Pocos meses después de que PHP cumpliera 25 años, acaba de lanzarse su versión 8.0. PHP sigue siendo el lenguaje de programación más usado en Internet a la hora de generar páginas web dinámicas (está detrás del 79% de las mismas). Sin ninguna duda, la principal novedad de PHP 8 es la introducción del compilador JIT (Just in Time), que permitirá compilar ciertas partes del código sobre la marcha, en tiempo de ejecución. Esta funcionalidad, que estuvo a punto de ser incluida en la versión 7.4, lleva años siendo desarrollada (...)
|
etiquetas: php , jit
Recuerdo en una PyCon que explicaban como habían implementado las tablas hash o diccionarios en PHP y era para llorar. Y parece que no era un caso aislado: eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
Hablas de ese lenguaje que un error ocupa 5 pantallas?
Yo llevo 20 años en esto y te digo que la mitad de los haceros no saben Java , como mucho Spring y con eclipse , que con otros ide's sudarian.
La base sigue siendo la misma.
Y de errores de diseño, al principio hubo uno que me quedó grabado. Se guardaban las contraseñas en la BBDD en plano, o algo así. Se informó varias veces y después se corrigió.
Es tan ligero que permite montar un servidor web en una sencilla Raspberry Pi y es software libre, a mi personalmente me gusta y tengo desde hace años una aplicación en producción que funciona muy bien y es fácil de mantener.
Solo quería compartir mi humilde opinión
Obviamente, uno programa en lo que le toque, según el entorno, pero si la decisión es mía, no toco PHP no con un palo.
Hace 10 años era la opción segura en la web. Hoy día tienes node, Python o Ruby en lenguajes no tipados, golang para APIs ultra rápidas, los javas y .Net para los conservadores y los kotlin o Scala para los javeros resabiados.
Es un lenguaje que ha perdido toda si esencia y razón de ser: Hipertext preprocessor.
Jamás he comprendido eclipse.
Diría que pasó de estar en un servidor dedicado a AWS y ahora Bigdaddy.
github.com/gallir/Meneame
Hay frameworks muy elaborados en PHP. No es el sin dios de antes.
Sé que existe conceptos raros como los frameworks isomórficos de JavaScript, pero estoy seguro de que no es a eso a lo que te referías.
Que luego la peña dirá noo phyton, o perl o go o no se que... Pues puede ser, no puedo opinar porque por desgracia de momento no llego a más.
El artículo del 2012 no lo he puesto para criticar a las características nuevas del lenguaje, si no porque parece (he dejado claro en todo momento que no tengo mucha experiencia con PHP) que históricamente tomaron muchas decisiones de diseño aparentemente dudosas (como todos) y que, en mi opinión, es bueno enmendarlas si no lo han hecho en estos años.
Vamos, que era más una alabanza a romper cosas para poder evolucionar y adaptarse que una crítica a un lenguaje libre, al que le deseo lo mejor y que innoven para que nos beneficiemos todos.
Los clientes que piden el uso de herramientas concretas, normalmente son personas que no tienen ni idea pero tienen un sobrino o cuñado experto que les ha aconsejado por el lenguaje de moda, lo que se llama escuchar campanas pero no saber de donde. Hace unos años lo leían de revistas
Claro que otros tantos lo piden porque es lo que usan actualmente.
Recuerdo trabajarlo en la versión 4 y comienzos de la 5 y tenía bastantes problemas. Entre los que recuerdo estaba que los elementos de los array se obtenían por copia y no por referencia (como es en otros lenguajes), las comparaciones entre tipos diferentes eran bastante problemáticas y caóticas ('' es una cadena vacía, no es NULL, pero para PHP es igual a NULL), entre muchos otros problemas que no recuerdo.
Quizás todavía arrastre esa mala fama de versiones anteriores.
Nunca has tenido que migrar una aplicación de PHP 5 a 7 ¿verdad?
Para proyectos nuevos vale lo que dices, pero cuando tienes un montón de aplicaciones hechas en PHP 5 por diferentes empresas y desarrolladores, con múltiples estilos de programación y frameworks, ni te atrevas a migrarlo a PHP 7 si es que quieres conservar tu salud mental.
* Propagación de propiedades automática » esto es algo que realmente ahorra muchas líneas de código. Bravo
* Nuevo operador nullsafe » otra maravilla que ahorra líneas de código y dolores de cabeza
Lo del compilador y esas cosas, seguro que hace que todo vaya un 1000% más rápido y tal. Como la última versión del Firefox.
Edito: Por lo visto el compilador hace que efectivamente todo vaya mucho más rápido, como en Firefox. Por ejemplo, una función tan sencilla como:
$a = 1;
for($i = 0; $i < 10000000; $i++) {
$a++;
}
* PHP 7.3 » 73 msec
* PHP 8 » 42 ms (sin compilador) y 22 ms con compilador JIT habilitado
La gente dice PHP está muerto. Y yo digo PHP no está muerto, está asesinado, lo han matado los sueldos de mierda, en la horquilla salarial de las ofertas de PHP, el máximo suele ser el mínimo de una oferta de back en Python. Y los proyectos de mierda, que parte es la pescadilla que se muerde la cola con el anterior, porque si pagan mal, exigen tiempos que sólo permiten hacer chapuzas rápido y mal.
He visto con mis ojos como jodian un git porque no sabía usar una terminal y le salió por sus santos cojones hacerlo con Pycharm y le dije que le ayudaba a hacerlo desde terminal.
Si hablas con el front developer medio puede llegar a dar la sensación que solo existen el Javascript y los motores de plantillas.
Joder, a cada uno que jodiera no un repo, sino una rama, lo ponía a hacer control de versiones con svn, o con CVS.
No se si es tanto un tema del lenguaje, pero no las he usado tanto y tan profundamente como en Perl.
Es tan ligero que permite montar un servidor web en una sencilla Raspberry Pi
Ligero si tienes pocas visitas. No sé cómo será ahora, pero en PHP5 cada petición cargaba prácticamente una copia ENTERA de la aplicación, con lo que el uso de memoria se disparaba linealmente por cada solicitud simultánea (y en los picos te podía tumbar la máquina). Los mismo con las conexiones a base de datos, al no haber pool-s que reciclasen estas. Java en cambio era (no sé si habrán arreglado esto en PHP) infinitamente más estable en cuanto a consumo de memoria. Prácticamente lo mismo con 10 solicitudes simultaneas que con 100, ya lo que hace la aplicación web es gestionar los hilos y usar los mismos objetos entre todas las solicitudes.
Por no hablar de que al tener sistemas de gestión de transacciones a base de datos (capacidad de hacer rollbacks), no te encuentras inconsistencias en los datos.
Fácil de mantener. Punto importante
El simple hecho de que Java tiene tipado fuerte (y mejores IDE-s) lo hace también infinitamente más fácil de mantener. Pero es que además, una de las grandes debilidades de PHP era (Y es improbable que lo hayan corregido, porque lo haría incompatible entre versiones) la poca consistencia en la definición de funciones/métodos. Dos funciones (y estoy hablando del mismo php "base", no de librerías externas) que reciben los mismos parámetros, podían recibirlos en un orden completamente diferente.
Por no hablar de muchos de los patrones de diseño incorporados como tipos en el propio JDK.
Lo mismo no tienes claro el concepto de residual, residual mas bien serian lenguajes como Ruby On Rails.
El día que plataformas como wordpress cambien de lenguaje lo mismo te doy razón, pero mientras queda php pa rato.
imgs.xkcd.com/comics/python_environment.png
Vamos, tampoco es que sea un experto y no digo que no tenga sus carencias, pero cuando hemos empezado a usarlo aceptando su comportamiento los problemas han sido escasos.
Eso sí, la arquitectura de la aplicación la creo yo, desacoplada, siguiendo CQRS y microservicios con gestión de eventos y colas mediante interfaces.
Laravel me da aquello que "para qué voy a crearlo si ya existe". Cosas como el MVC, autentificación y logger. No uso ni eloquent (creo mis propios repositorios).
Veces no es hacer las cosas mejor del mundo lo mejor si no hacerlas homogénea y lo más standar posible, porque además estos proyectos sufren cambios muy a menudo y muy rápido además de que la rotación del personal es más o menos alta.
Al ser un lenguaje popular y accesible, pocas veces he visto un código que siga SOLID y CQRS bien escrito, estructurado, con clases mínimas y simples.
La gente se pone a hacer cosas en PHP infumables, pero como podrías hacerlas con cualquier lenguaje orientado a Objetos.
Cada puta vez que sale php...