A blog about data, information and IT, by Mario Alberich

Jun 26
2014

PHP es lo suficientemente rápido

Desde hace aproximadamente unos dos años he estado flirteando con alternativas a PHP, en especial NodeJS.  El motivo principal ha sido conocer otras soluciones con una aproximación diferente a los problemas que plantea el entorno web en general, y la potencial mejora que supone compartir el mismo lenguaje de programación en el entorno cliente y el servidor. Python también está en la lista de flirteos, aunque debo decir que a cierta distancia.

El atractivo por NodeJS es (y en parte seguirá siendo) un enfoque diferente para la operativa en los cuellos de botella de las aplicaciones web. Al poder tratar las operaciones I/O de una forma asíncrona (eventos y callbacks), es un valor añadido en ciertos casos.  El enfoque asíncrono de NodeJS permite una ejecución más fluida, que a su vez permite combinar consultas exigentes con el trabajo paralelo mientras se espera a la finalización de estas tareas.  Además, una orientación a eventos, soluciones PubSub y otras características derivadas hacen pensar en NodeJS como una opción más que interesante para ciertas soluciones del entorno cloud.

Velocidad del código, velocidad del desarrollo


Pero quizá el enfoque que más aporta NodeJS, y por el cual también llegué a introducirme en el mundo del PHP fue la velocidad a la hora de desarrollar, y la agilidad para realizar cambios.  Hace unos meses leí el artículo PHP Performance: "fast enough" and improving, que pone énfasis en ese punto.

PHP tiene y tendrá infinidad de defectos, pero por alguna razón es el lenguaje más utilizado para aplicaciones web.  La razón es sencilla: es fácil empezar el desarrollo con PHP, no requiere una curva de aprendizaje como Java. En una palabra, funciona.

Pero la propia evolución de PHP no ha sido nada sencilla. El paso de la versión 4 a la 5 supuso un salto bastante difícil de seguir, y la introducción gradual de los Frameworks primero (empujado probablemente por actores como Ruby on Rails),  y en especial de los PSR, parece haber dividido una comunidad que debate entre la necesidad de estructurar y madurar el lenguaje, o mantenerlo en ese nivel de libertad que ha tenido desde sus inicios. Probablemente la aparición de lenguajes como Ruby (y RoR) como Python ha dado más empuje a la primera alternativa. Sinceramente lo desconozco.

Por último, la aparición de HipHop primero, y de HHVM después, han dado un empuje a la velocidad de carga de las aplicaciones PHP, con una integración completa (o casi) en muchas aplicaciones del ecosistema PHP,entre las cuales destacaría algunos casos clave, como Drupal, MediaWiki y Magento 2.

Es posible que las próximas versiones de PHP incorporen más mejoras en el rendimiento. ¿El mismo que Java? Probablemente no, pero seguro que a la par con NodeJS y mejor que otros lenguajes interpretados. Dependerá del uso que se le dé. En realidad, se puede descartar a PHP por varios motivos, pero en pocos casos ése será el de su rendimiento.

Los nuevos entornos


Es innegable que PHP no está pensado para ciertos otros entornos, como son las aplicaciones móviles (aunque sí parece teóricamente posible). Ahí es donde en parte entra un lenguaje como Javascript (vía AngularJS, Ionic Framework y/o similares).

No pienso en Javascript como algo que deba convertirse en un lenguaje de programación para todos los usos, pero sí para cualquiera. Si un lenguaje permite moverme en varios entornos a la vez (navegador, servidor, aplicación móvil o de escritorio con node-webkit), eso es algo de valorar si por un lado se quiere prototipar y producir un resultado sin detenerse en los detalles del tipado de datos, o en un requerimiento de un extremo rendimiento o de extrema fiabilidad en algunos procesos.

Cada proyecto es diferente, pero PHP, como afirma el artículo comentado más arriba, es lo suficientemente rápido y maduro para ser un gran candidato.

Tags

gestión documental 10     Recuperación información 11     Linux 7     Usabilidad 5     open source 3     Tagging 12     lógica borrosa 2     fuentes de información 12     Google 6     off-topic 6     spam 2     grafos 6     Web social 11     modelización 12     Productividad 11     buscadores 2     utilidades 17     Profesionales 9     SEO 5     estándares 3     veracidad 3     relevancia 2     lingüística 2     PLN 2     lenguajes documentales 2     apis-mashups 3     reseñas 7     Flash 7     Gráficos estadísticos 13     Publicidad 3     Innovación 5     muestreo estadístico 9     PHP 14     internet 2     testeo 12     desarrollo 3     visualizacion 36     javascript 16     datos abiertos 9     elecciones 2     simulación 5     html5 7     phing 9     ssh 2     seguridad 3     indicadores 2     demografía 3     media 2     algoritmos 7     shell 4     mysql 2     backup 2     big data 6     twitter 2     d3js 11     revealjs 2     metodología 6     data-journalism 6     smartcities 2     NYT 2     privacidad 3     benchmarking 4     recopilaciones 21     magento 5     formacion 2     github 2     HHVM 3     psicología 2     angularjs 3     grep 2     nodejs 5     promises 2     mapreduce 3     crossfilter 2     exploración de datos 2     machine learning 2    

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.