PHP es un lenguaje de programación con
una gran base de código, algunos lo llaman el nuevo COBOL, debido a
su popularidad, y sus fallos de diseño.
Los desarrolladores del lenguaje,
conscientes de que se tomaron decisiones erróneas en el pasado,
están introduciendo una serie de cambios para que el lenguaje se
adapte a los más modernos paradigmas de programación y lo más
difícil, no rompa la compatibilidad con las miles de millones de
líneas de código escritas en este lenguaje. Por si esto fuera poco,
otras plataformas están sustituyendo a la máquina virtual
desarrollada por el PHP Group, buscando mayor eficiencia o
funcionalidad extra. Pero, ¿son suficientes estos cambios frente a
la “nueva ola de lenguajes y plataformas” que hay en la
actualidad? Vamos a verlo.
Hacia dónde va PHP
PHP es un lenguaje plagado de
características propias del lenguaje humano: ambigüedades,
comportamientos no definidos o no esperables, funcionalidades
marginales, etc. Desde la sintaxis de llamada de métodos, el
carácter de separación de módulo (\), como muchos otros problemas
de eficiencia y de nomenclatura de funciones. Para ver un buen
resumen de los problemas de PHP, puedes verlo en esta web:
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/.
Ahora bien, un lenguaje puede
“arreglarse”, ¿están haciendo algo los desarrolladores del PHP
Group? Vamos a verlo.
En la versión 5.4 de PHP, se
introdujeron funcionalidades como los Traits (que ya comenté en una
entrada anterior), la ansiada nueva sintaxis para los arrays,
desreferenciación de arrays desde llamadas a función y un servidor
web para desarrollo de pruebas en local y otras características
menores que no hacen sino dotar de más facilidades al desarrollador.
Esta funcionalidad de herencia horizontal permite ahorrar multitud de
código y simular herencia múltiple.
La próxima versión de PHP (la versión
5.5) ya está siendo “cocinada” por los desarrolladores y voy a
comentar las características que están siendo discutidas en la
lista de distribución de este lenguaje como “futuribles” de este
lenguaje. Las he extraído de
http://nikic.github.com/2012/07/10/What-PHP-5-5-might-look-like.html
y de la lista de correo:
- Desreferenciación de constantes: útil para llamar a funciones de arrays sobre cadenas o arrays.
- La construcción del lenguaje PHP, empty, funcionará sobre expresiones.
- Omisión de parámetros por defecto en llamadas a funciones.
- Consultores y establecedores, quizás (se está comentando) estilo C#.
- Funciones generadoras, pudiendo crear arrays a partir de una expresión.
Si se implementa esta funcionalidad,
¿qué queda para que PHP sea similar a un lenguaje “bien”
diseñado? Desde mi punto de vista, los siguientes:
- Llamada a métodos desde constantes.
- Hebras
- Librerías extra con clases de colección y de cadena.
Seguramente, los desarrolladores de
Python discrepen sobre esto, pero yo también discrepo sobre la
función len sobre listas, el tener que hacer las conversiones de
tipos de forma explícita, la sintaxis de declaración de métodos, o
los problemas que causa la indentación obligatoria.
Por otro lado, está habiendo un
surgimiento de plataformas de ejecución de PHP distintas a la
desarrollada por el PHP Group:
- HipHop: traductor de código PHP a código C++, de manera que se puede compilar a código máquina, reduciendo la carga de servidor al 50%. Nótese que este compilador no implementa toda la sintaxis de PHP. Url: https://github.com/facebook/hiphop-php/wiki/ Desde Facebook también estuvieron haciendo experimentos con un nuevo intérprete de PHP llamado HPHPI.
- Quercus: intérprete desarrollado en Java, con una versión de pago que incluye un compilador de PHP a bytecode Java. Url: http://quercus.caucho.com/
- Phalanger: compilador de PHP a código .Net. Url: http://www.php-compiler.net/
- PHC: compilador de código PHP (http://www.phpcompiler.org/).
Por último, queremos reseñar los últimos experimentos de los que hemos tenido noticia: un intérprete de PHP desarrollado sobre Python (http://morepypy.blogspot.com.es/2012/07/hello-everyone.html). Obviamente es un experimento y no ha de usarse para propósitos serios, más aún si se tiene en cuenta que sólo implementan la versión 1.0 de PHP.
Estas plataformas nos hacen ver que hay
interés en que PHP siga siendo la plataforma más usada a día de
hoy en la web.
Conclusiones
PHP vino para quedarse, ha pasado de
ser un lenguaje desarrollado casi como hobbie, a ser una plataforma
de las más usadas del mundo. Puede que su sintaxis no sea
completamente del agrado de los desarrolladores, pero gracias al
trabajo de los desarrolladores de frameworks que ocultan partes
complejas del lenguaje y de otros ingenieros, poco a poco se van
superando estos errores.
Para finalizar, cabe preguntarnos ¿es PHP
el mejor lenguaje? No, porque ninguno lo es, pero al menos los
desarrolladores están tratando de corregir muchos de sus errores.
¿Está PHP muerto? No, sigue vivo y coleando, adaptando nuevas
características para no perder su sitio como el lenguaje de
programación de la web.
Diego J. Romero
me gusta mucho PHP por que es sencillo y rapido, pero siento que apenas se esta poniendo a la par de otros lenguajes y se estan tardando mucho, ya es tiempo de que este orientado a objectos completamente pero para eso todavia falta
ResponderEliminar¿Qué le falta para ser orientado a objetos completamente?
ResponderEliminardesde la version php 5.0 es horientado a objetos, ya tenia funcionalidades incluso antes.
ResponderEliminarSi, pero nada impide que escribas scripts con métodos estructurados.
EliminarCreo que necesita madurar mas para poder competir con lengujes ya consolidados.
ResponderEliminarPhp tiene una imitación de orientación a objetos, no me convence su oop, por ejemplo porque no ponen todas las funciones magicas que esta volando por ahi en una clase, es decir, String.toLower() o algo asi, en vez de strtolower y hay muchusimos casos iguales
ResponderEliminarphp es secillo facil y es muy adaptable por eso me gusta
ResponderEliminarYo digo siempre lo mismo, cuando en php sea posible algo como $string = "Hello world"->toLower(); y $string = ["Hello", "world"]->join(" "); seré feliz
ResponderEliminarhe?
EliminarTotalmente de acuerdo, las cadenas y arrays deberían ser objetos y poder llamar a métodos. Para colmo, la nomenclatura de llamadas a las funciones array_* y str_* es distinta, lo que es un engorro.
ResponderEliminar¿Entonces el problema de PHP es simplemente la sintaxis?
ResponderEliminar¿Si usamos envolturas sobre las strings y arrays nativos de PHP, está todo solucionado?
Como comentas en el post, al pasar a c++ se consigue una eficiencia del 50%, el caso es que a lo que esta tendiendo los lenguajes es a ser interpretados. Al fin y al cabo a la sintaxis uno se acaba acostumbrando y las funciones que hechas de menos puedes crearlas tu mismo y reutilizarlas. En facebook estan traspasando todas las lineas de codigo de php a otros lenguajes.
ResponderEliminarhechas sin h, el periodo examenes me estan pasando factura
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminar@Anónimo: ¿De que sitio web sacaste esa información acerca de la migración de código en Facebook...?
ResponderEliminarEl USS Enterprise usa PHP: https://www.youtube.com/watch?v=_TVdYzlNBO8
ResponderEliminar