Sobre PHP y su relevancia

Los últimos días, mi timeline de twitter ha tenido una cantidad de mensajes mayor de lo normal sobre PHP y su valía. Que si los desarrolladores de PHP ganan poco, que si hay o no certificaciones de PHP, que si PHP como lenguaje es feo, etc.

No me he metido a investigar las razones de esta afluencia inusual de tweets sobre PHP, supongo que algo tiene que ver con que fue el @phpconmx el pasado fin de semana. Aun así, comparto aquí algunas opiniones/reflexiones sobre PHP y su relevancia desde mi punto de vista.

Aclaración: no existe EL lenguaje

Antes que nada, es necesario que estemos bajo el entendido de que los lenguajes de programación no son intrínsecamente buenos o malos. De la misma manera, un lenguaje de programación per se, no es mejor o peor que otro. Todo depende del contexto, tarea y criterios de evaluación. Algunos lenguajes fomentan la rapidez de desarrollo, otros la rapidez en desempeño del software construido, otros la estabilidad, otros la legibilidad del código, otros simplemente son buenos para enseñar a programar. Hay un sinfin de criterios distintos bajo los que podríamos calificar a un lenguaje. Pero a fin de cuentas, lo más importante es que te ayude a resolver satisfactoriamente el problema específico que quieres resolver en ese momento.

El caso de PHP

Independientemente de la opinión que podamos tener sobre PHP como lenguaje de programación, creo que el caso de su historia y adopción es muy interesante. Personalmente, me llaman la atención varios aspectos sobre el caso de PHP:

Nació de un proyecto personal (casi de hobby).
A diferencia de la mayoría de los lenguajes de programación populares hoy en día, PHP no fue creado en el contexto de una empresa, ni un grupo de trabajo. Simplemente sucedió que una persona (Rasmus Lerdorf) quería administrar facilmente el contenido de su sitio web personal, y para ello creo unos scripts que hizo públicos en Internet.

Revivó la importancia del scripting.
Cuando PHP se creó, la tendencia eran los lenguajes compilados. Vivíamos en un mundo dominado por C/C++ y no se veía que eso fuera a cambiar. En 1996 se lanzó Java, marcando el inicio de la era del código compilado multiplataforma por medio de máquina virtual. Teniendo código compilado multiplataforma, ¿para qué te "rebajarías" a usar un lenguaje de scripting? La respuesta fue simplicidad, y resultó que aunque no era algo que le interesaba a los programadores de abolengo, sí le interesaba a la nueva generación de programadores web. Esta nueva generación no requería construir middleware super estable, ni programas de alto desempeño, lo único que querían era que cuando alguien llenara una forma en su sitio se guardara la info en el servidor y/o se mandara un mail. Y un lenguaje de scripting era ideal para eso. En retrospectiva, creo que hoy los lenguajes de scripting tienen un lugar más importante y no son denigrados como antes. De hecho, muchos lenguajes compilados han incorporado una capa o sub-lenguaje de scripting que es la que utilizan los programadores.

Nos recordó sobre el código fuente.
Use the source, Luke. Un efecto secundario de que un programa en PHP sean scripts en texto plano, a diferencia de un binario, es que tienes ahí el código fuente. Eso significa que puedes leerlo, entenderlo e incluso reutilizarlo si su licencia te lo permite. La posibilidad de ver el código fuente de los proyectos existentes dio nacimiento a una generación de programadores autodidactas, que copiando/pegando código lograban que sus programas hicieran lo que querían (con efectos secundarios, pero eso es harina de otro costal).

Gratis es importante pero no lo es todo.
¿Como fue que PHP, un lenguaje surgido de un proyecto personal se hizo tan popular en pocos años, eclipsando la adopción de los lenguajes de grandes empresas como Microsoft (ASP) y Sun (Servlets, JSPs)? La respuesta tiene mucho que ver con que era gratis, pero si lo gratis ganara por si solo entonces Linux sería el sistema operativo más usado en el escritorio, y dista mucho de eso. No solo es que PHP era gratis, sino que era el estandar de facto en los servidores de hosting baratos. Hoy en día tenemos Virtual Private Servers y Platform as a Service que nos permiten facilmente y por bajo costo ejecutar aplicaciones en distintos lenguajes/plataformas como Ruby, Node, Java, .NET. Pero esto tiene poco tiempo. Durante más de 15 años, la opción al alcance de las PyMEs y profesionistas independientes era usar shared hosting, y el estandar de facto en el shared hosting era el stack LAMP (Linux, Apache, MySQL, PHP). Así que si querías programar algo en el web y no podías pagar tu propio servidor, debías usar PHP. Si a esto le agregas que PHP era sencillo y podías leer/utilizar código de otros, podemos entender su popularidad.

Consecuencias negativas

PHP == código spaguetti.
(Antes de que me reclamen, vean que no estoy haciendo una asignación de valor, estoy checando igualdad). Uno de los grandes reclamos que se le tiene a PHP es que una buena parte del código existente en PHP es código spaguetti que está hecho un caos y es dificil de mantener. Yo he leído codigo muy bien hecho en PHP, y otro muy malo. Pero esto tiene que ver más con los programadores que hacen el código, que con el lenguaje per se. Es cierto que al ser un lenguaje de scripting y carecer de ciertas estructuras/capacidades de lenguajes más robustos, PHP se presta a hacer "feas" las cosas, pero sigue siendo un tema del programador, no del lenguaje.

La subvaluación del programador PHP.
Los programadores de PHP se quejan de que los salarios que reciben son menores que los de programadores en tecnologías como Java o .Net. Aquí es simplemente una cuestión de "seguir el dinero" (follow the money). El cliente típico de un desarrollo en Java o .Net es un corporativo. Por otro lado, el cliente típico de un desarrollo en PHP es una PyME, ONG o profesionista independiente. ¿Quien crees que tenga más presupuesto? Por otro lado, me he encontrado con algunas startups que utilizan php, pero no son el común denominador. La mayoría de ellas usan tecnologías más nuevas y "hipsters" como Ruby/Rails, Node y JQuery. Es un fenomeno curioso, siento que parte de lo que los inversionistas de un startup (especialmente en Silicon Valley) quieren oir es que estés utilizando las tecnologías más nuevas, independientemente de si son las adecuadas o no para resolver el problema en cuestión; tal vez eso lo discuta en otro post luego.

Conclusión

Puramente como lenguaje de programación, es dificil encontrarle méritos a PHP. Sin embargo, su conjunto de características (simple, de scripting, software libre, sin estar atado a los intereses de una empresa) provocaron que se haya convertido en un lenguaje muy popular. El problema es que este mismo conjunto de características también provocan que los salarios de programadores php estén por debajo de los de otras tecnologías más especializadas y/o empresariales.

¿Que si debes o no aprender o utilizar PHP? La respuesta, como siempre, es: usa lo que te funcione y resuelva tu problema.

¿Y tú que opinas?