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.
Diego J. Romero
http://blog.intelligenia.com/2012/07/esta-agonizando-php.html