Articles

Postes recientes

Salgamos de dudas antes de tiempo: PHP es un lenguaje extraño y feo. No es excepcionalmente rápido. No es hermoso sintácticamente. No está formulado en torno a una opinión clara sobre las buenas prácticas de desarrollo de software. Y sigue siendo en el que escribo mucho software. La pregunta obvia es: ¿por qué? ¿Por qué usar PHP hoy en día?

Hay muchas buenas razones para ello, por encima de las preferencias idiosincrásicas personales. Aquí está el espacio para cubrir exactamente eso. ¿Por qué es PHP mi lenguaje de elección para el desarrollo web?

¿Qué es PHP?

«¿Qué es un PHP?» O, más comúnmente, «¿qué es PHP?». En resumen, PHP es un lenguaje de programación hecho para la web, construido a partir del lenguaje de programación C, y que utiliza etiquetas idiosincrásicas similares a las de HTML (o sigilos) para contener su código. El lenguaje de programación PHP se utiliza principalmente del lado del servidor, lo que significa que se ejecuta en su software de servidor web, que habitualmente va a servir HTML a sus visitantes.

PHP inicialmente significaba «Personal Home Page». Debido a que eso limitaba bastante el significado y la conveniencia de utilizar el lenguaje para uso general, el lenguaje ahora significa «PHP: Hypertext Preprocessor». Esto es lo que se llama un acrónimo recursivo (un nombre que contiene el nombre). Los nerds los adoran.

¿Qué puede hacer PHP?

¿Para qué se usa PHP? Básicamente, todo lo que quieras hacer en un servidor web, lo puedes hacer con PHP. ¿Hacer un blog? Sí. ¿Crear una aplicación completa de software como servicio? Por supuesto. ¿Escribir un pequeño script para procesar algunos datos en pocos segundos? PHP es genial para eso. ¿Escribir un complicado conjunto de scripts que accidentalmente se convierte en un exitoso negocio de software? PHP se usa mucho así.

Si no te fías de mí, el sitio web de PHP enumera los siguientes usos:

  • Servidor de scripts
  • Línea de comandos
  • Escribir aplicaciones de escritorio

No estoy tan seguro de animar el último punto, pero es posible. Pero los dos primeros son comunes y buenas razones para usar PHP en 2019.

Esto nos lleva a un hecho importante e inevitable…

PHP está en TODOS lados

Hay un montón de razones para conocer y amar PHP, probablemente la más potente y válida es esta: se usa y se ejecuta en TODOS lados donde lo hace la web. Tu pequeña y barata cuenta de alojamiento de 3 dólares al mes puede permitirte ejecutar una aplicación web en Python o Ruby si compras con cuidado. Pero definitivamente ejecutará PHP. Esto significa que puedes contar con él dondequiera que estés.

Symony is one of the reasons that people choose PHP

Y porque se ejecuta en todas partes, y es fácil de empezar, una gran cantidad de software muy popular está escrito en PHP. WordPress es el ejemplo más grande y más familiar para mí, pero herramientas como Joomla, Drupal, Magento, ExpressionEngine, vBulletin (sí, que todavía está por ahí), MediaWiki, y más están ejecutando PHP en el servidor.

Y hay más frameworks de aplicaciones PHP que usted puede agitar un palo también: Symfony, Zend, Laravel, Aura, CakePHP, Yii, e incluso el venerable CodeIgnitor. Seguramente se puede hacer una lista de frameworks web de cierta longitud para casi cualquier otro lenguaje. Y para los lenguajes web comúnmente utilizados como Python, Ruby, o Node/JavaScript puedes incluso ser capaz de amasar una lista numéricamente competitiva. Pero el volumen de sitios que ejecutan PHP es inmenso.

WordPress se enorgullece de que impulsa más del 30% de Internet. Usted no necesita ni siquiera confiar en ese hecho para darse cuenta de que una gran parte de Internet debe estar usando PHP si ese hecho es incluso concebiblemente cierto.

PHP tiene algunas cualidades muy buenas

El dinamismo fácil se hornea en PHP

PHP logo

PHP hace la representación de HTML y la programación más fácil que casi cualquier otro lenguaje. Así que es bastante sencillo cambiar HTML a PHP. Sólo tienes que cambiar tu file.html por file.php, añadir un poco de dinamismo dentro de algunas etiquetas <?php y ?>. La mayoría de los servidores web ya habrán sido configurados para encargarse del resto. Es tan sencillo que casi cualquiera puede empezar sin necesidad de tener muchos más conocimientos de programación que estos. Debido a que PHP es tan amigable para cortar tus dientes, mucho código malo es escrito en él.

Una vez que te das cuenta de que la mayor parte del PHP malo es escrito por programadores novatos, la mayor parte del miedo y el odio a PHP que encuentras en el mundo viene de otro problema esencial: PHP nunca ha tenido un gran diseño con una idea visionaria sobre por qué era el lenguaje perfecto para tu servidor web. En su lugar, es el resultado de una amplia colaboración a través de un proceso abierto que sirve como un crisol a través del cual cualquier buena idea – y unas pocas malas – deben pasar.

La Orientación a Objetos con (Gran) Gestión de Paquetes es ahora la Norma en PHP

Composer PHP language
Composer es una gran razón para usar PHP

Y las malas ideas pueden pasar por ese crisol. El ejemplo más popular es que PHP 5.3 – por separado ampliamente considerado como la primera versión moderna de PHP – introdujo la sentencia goto, que generalmente es objeto de burla o se piensa que es una fuente fácil de errores.

Cosas igualmente malas en PHP que han resultado del proceso a través del cual el lenguaje ha crecido: la orientación a objetos fue implementada por primera vez como un concepto defectuoso y limitado, la biblioteca estándar está llena de nombres y ordenamiento de parámetros inconsistentes, y (en un ejemplo que recientemente obtuvo bastante atención) el token :: es llamado por el intérprete por lo inescrutable-para los angloparlantes: T_PAAMAYIM_NEKDOTAYIM.

Pero hoy en día, la POO está totalmente realizada en PHP. Pocos lenguajes tienen tanta práctica de POO como Java que PHP. Es más, a diferencia de Java, PHP tiene un único y muy querido gestor de paquetes, llamado Composer. Es muy bueno, y por lo tanto la facilidad de tirar de otras librerías bien escritas y bien mantenidas en PHP no es nada para ser jugado.

PHP se ha vuelto mucho más rápido

Pero dichas cosas, PHP está evolucionando en formas interesantes. Está creciendo hacia ser un lenguaje orientado a objetos bastante completo como Java (para bien o para mal). Y al igual que Java, está ganando abstracciones fáciles para la programación funcional – posiblemente la moda actual. También está creciendo un conjunto bastante impresionante de herramientas – PHP ama Composer, y por una buena razón – y un esfuerzo encomiable para hacer que todos estos grandes proyectos de código abierto en PHP trabajen un poco mejor juntos.

Oh, y no debemos olvidar la actualidad: las ganancias de velocidad que PHP ha hecho en la serie de versiones de PHP 7. Esto es ampliamente considerado como haber sido iniciado por el HHVM que sale de Facebook. Por un corto tiempo, existió el riesgo de que la velocidad del HHVM fracturara a la comunidad PHP. Pero no lo hizo. En lugar de eso, PHP se hizo mucho más rápido y la gente se olvidó de que el HHVM existe.

PHP tiene una enorme comunidad; es fácil de aprender

Si estás decidiendo qué nueva tecnología usar, una cosa que creo que a menudo recibe poca atención es cómo es llegar a un acuerdo con el lenguaje. ¿Cómo es aprender PHP? Los tutoriales de PHP son comunes y a menudo bastante buenos.

Una desventaja de la popularidad de PHP es que puedes encontrar algunos entrenamientos no tan buenos de gente que no sabe lo suficiente sobre cómo es realmente el uso de la herramienta. O que por última vez estaban siguiendo las «mejores prácticas» que eran actuales hace una década. Pero, en general, esto es lo suficientemente raro como para no desanimarte. Descubrir que una práctica que has usado durante unos meses no es genial es raro, y no es un gran problema.

Comparaciones comunes con PHP

Mucha gente nueva en la programación está buscando enfrentamientos muy generales de lenguajes. Así que aquí vienen. Todos los lenguajes que voy a escribir aquí tienen los siguientes rasgos en común con PHP:

  • Son de código abierto. Lo que esto significa es que usted puede utilizar el lenguaje subyacente de forma gratuita (sin costo), y usted es capaz de ver y entender el programa subyacente si lo desea.
  • Son a menudo utilizados para el desarrollo web. Bastante sencillo, son lenguajes muy utilizados para el desarrollo web. Algunos también son ampliamente utilizados fuera de ese ámbito, pero no todos.
  • Son de alto nivel, de tipado suelto y dinámico. Esto significa que una variable puede cambiar de tipo, y que no tienes que definir cuando defines una variable qué tipo de cosas (números vs cadenas vs objetos, etc) va a almacenar. Esto es generalmente favorecido para la programación web, pero no universalmente.
  • Sus comunidades son de buen tamaño o mejores. Hay un montón de lenguajes interesantes que tienen las cualidades mencionadas anteriormente, pero que no tienen una gran comunidad de práctica. Los dejo de lado aquí.

¿Por qué usar PHP? ¿Por qué no JavaScript?

Quizás el lenguaje más importante con el que comparar PHP es JavaScript. El desarrollo moderno requiere que cada proyecto utilice al menos un poco de JavaScript para el desarrollo del lado del cliente y la interactividad. Con Node, se ha vuelto relativamente fácil utilizar JS en el servidor también. La idea de utilizar el mismo lenguaje «isomórficamente» en el cliente y el servidor es muy atractiva.

Al igual que PHP, JavaScript es un lenguaje ecléctico y a veces feo con un montón de verrugas y «gotchas». Pero JavaScript se ha vuelto enormemente rápido en la última década, por lo que el caso es real. ¿Por qué elegir PHP en lugar de JavaScript? Si tienes experiencia o necesitas usar bibliotecas en PHP. De lo contrario, creo que JavaScript puede ser una mejor opción.

PHP vs Active Server Pages ((.Net) Core)

Active Server Pages comenzó su vida como un lenguaje de código cerrado de Microsoft para la programación web. Era bastante comparable a PHP, pero se ejecutaba en entornos de Windows Server. Fue reemplazado por ASP.net. Que ahora ha sido sustituido por ASP.NET Core. Los dos últimos son ahora lenguajes de código abierto, como lo es PHP. Y personalmente nunca he escrito una pizca de ASP, en cualquier variación.

Estaría a favor de ASP si usara y amara los servidores de Microsoft. Si no, dame PHP por favor. El tamaño y la escala de las comunidades no son realmente comparables.

¿Debo usar Ruby o PHP?

Ruby, específicamente Ruby on Rails, fue muy popular hace una década. Ruby sigue siendo un lenguaje muy querido, que es mucho más elegante que PHP a mis ojos. Eso sí, su comunidad es más pequeña. Y tengo la sensación de que Ruby ha dejado de ser el «lenguaje de moda» (siendo desbancado en ese papel por JavaScript). Ruby es bonito, y hay suficiente gente buena en él que no lo evitaría por esa razón. Pero contratar a gente ya familiarizada seguirá siendo más difícil que hacerlo en PHP. (Aunque creo que la habilidad de un desarrollador promedio de Ruby es probablemente mayor que la misma para PHP.)

Python vs PHP: ¿Cuál es mejor?

El último lenguaje que tiene sentido en una comparación uno a uno con PHP es Python. Python se utiliza en muchos más contextos que el desarrollo web (también es muy popular para la estadística y el análisis de datos). También es uno de los lenguajes más estables y bien diseñados que existen, en consenso popular.

Python (como Ruby, y JavaScript) es un poco más difícil de ejecutar en un servidor web que PHP. Pero es un lenguaje más bonito, y más diversamente utilizado que PHP. Es uno de los lenguajes que yo pensaría mucho en favorecer a PHP, todas las otras cosas (acceso a la biblioteca externa, el acceso a la contratación de expertos, etc) siendo iguales.

PHP vs Go? ¿Scala? ¿Java? etc…

Mencioné al principio que había muchas similitudes con todas las comparaciones directas de lenguajes anteriores que hice. Pero si dejamos de lado esas limitaciones, hay toneladas de otros lenguajes que podríamos comparar. Así que para tocar brevemente en algunos:

  • Java es enormemente popular, y muy rápido. Se utiliza para construir aplicaciones Android, aplicaciones de escritorio y aplicaciones web. Sin embargo, no está tipado dinámicamente, lo que garantiza un mejor rendimiento, pero una peor facilidad de programación web.
  • Go es un lenguaje más reciente y en crecimiento respaldado por Google. Está enfocado a servidores web, pero con un nivel ligeramente inferior (más parecido a C) que PHP. Es rápido, pero la comunidad de práctica es más pequeña.
  • Scala es un popular lenguaje que funciona con JVM (compatible con Java) y que parece seguir creciendo en popularidad. Está más elegantemente diseñado que PHP, pero no puedo decir mucho más sobre él con confianza.

De nuevo, eso es todo lo que siento que tengo suficiente contexto para tocar. Pero hay aún más opciones que puedes considerar. Pero ese es el final de las alternativas específicas que consideraré a PHP.

La elección del lenguaje de programación es sobre el contexto

Dadas esas comparaciones, ¿por qué usar PHP? He enumerado algunas de las cosas que son malas sobre PHP, y siento algunas de ellas regularmente. La inconsistencia de la aguja y el pajar en las funciones de búsqueda me muerde al menos una vez al mes cuando estoy haciendo algo rápidamente sin autocompletar.

Para un verdadero y completo proyecto de campo verde, sin necesidad de interoperar con ningún otro sistema, o necesidad de correr en cualquier ambiente arbitrario, sin experiencia existente en el equipo, yo pensaría muy profundamente antes de recomendar PHP. Python realmente me atrae en ese escenario. Pero esas son muchas advertencias. Hay grandes razones para que incluso un proyecto nuevo sea escrito en PHP.

Cualquier lenguaje web moderno puede ayudarte a hacer buenos sitios web y aplicaciones. Y cada uno de ellos tiene características que no son ideales. PHP, como cualquiera de ellos, requiere que entiendas realmente sus compensaciones para ti en tu proyecto para determinar si tiene o no sentido para ti. Pero para mí, personalmente, sigo encontrando que es posible ser – como Keith Adams dijo en una gran charla – «sorprendentemente productivo en PHP»

Si tienes un equipo de programadores de Python, escribe tu aplicación en Python. Si tienes un cofundador que sabe Java, escribe tu SaaS en eso. Las consideraciones de personal del software siempre deberían superar a las de los idiomas.