El trastero de José Juan Valid XHTML 1.1 Valid CSS! Estilo de página alternativo
Artículo creado en 2008.

Porqué no programar en PHP (o Perl)

Introducción

No era mi intención utilizar PHP para programar mi sitio web, pero tampoco quería invertir más dinero del estrictamente necesario para disponer de un hosting (un servidor dedicado en Internet para hospedar mis páginas web). Mi intención primera era utilizar Perl, sí, lo se, no es frecuente que las páginas web estén programadas en Perl pero me había picado la curiosidad y ya había realizado algunos experimentos con él. Desafortunadamente la posibilidad de usar Perl mediante CGI (ya no digamos Active-Perl) es bastante limitada en mi actual hosting. Así pues, di por bueno usar un lenguaje de programación de páginas web tan popular como PHP.

Mi opinión general sobre PHP

Lo siento, no me gusta PHP. Es cierto que este sitio está programado en PHP, lo he programado yo, no he usado ningún framework, lo que quiere decir que no he querido usar el camino más fácil, sino aquel con el que se aprende más, y he disfrutado con ello (y espero seguir haciéndolo); sin embargo, hubiera preferido sin duda otras plataformas para hacerlo. Como muestra diré que aun usando la misma versión de PHP en mi entorno local bajo Windows y la misma versión de PHP en el entorno de hosting bajo Linux, el funcionamiento ¡del mismo código! difiere en uno y otro entorno y me obliga a detectar y corregir (modificando sentencias aparentemente equivalentes) mi aplicación. Aun admitiendo que el error sea mío por no conocer en profundidad la semántica de PHP, esta ambigüedad en la definición no es (desde mi punto de vista) admisible.

Espero no ofender a los PHP-maniacos, pero desde mi punto de vista, PHP posee pocas de las cualidades que en teoría lo hacen atrayente, a saber, esa flexibilidad natural adoptada por Perl (el uso de $_ es fantástico en Perl y aporta una plasticidad muy atractiva. Y peligrosa...) que en PHP se presenta de una forma mucho más rígida. PHP posee además muchas de las desventajas de estos lenguajes (como la falta de tipos estrictos o declaración explícita de variables). Es cierto sin embargo que lo deja en un término medio, en el sentido de que es más flexible que el casi patético ASP (y yo llevo MUCHO programado en ASP) y el tan excesivamente voluble Perl (tanto que a veces se escapa de entre los dedos) que quizás lo haga idóneo para estos menesteres que son programar páginas Web y sea ésta la razón de su popularidad.

Mi opinión sobre los lenguajes script/interpretados

Los lenguajes como Java Script, Visual Basic Script, PHP, Perl y muchos otros, nacen de la necesidad de disponer de un lenguaje sencillo que no requiera de compilación previa, no sean complejos de utilizar (pues pretenden dar un soporte adhoc y no de desarrollo de aplicaciones) y en los que las tareas más comunes se realicen de forma sencilla. No por nada muchos de ellos nacieron como lenguajes de procesamiento de textos (en mi opinión, AWK ha inspirado a muchos de estos lenguajes).

La programación típica de shell como bash, sh, batch, vbscript, etc... son sin duda los precursores de este tipo de lenguajes y no debe olvidarse que el propósito de éstos es suministrar un conjunto reducido de comandos para que el administrador de sistemas pueda automatizar muchas de las tareas frecuentes en un ordenador o red.

Por tanto, este tipo de lenguajes adolecen en muchos de los casos de importantes (para mí, claro) características que un lenguaje de programación debería tener para el desarrollo de completas aplicaciones sean web o no. Es decir, para sencillas páginas o script están bien, pero como plataforma para un framework sobre el que desarrollar completas soluciones (típicamente de negocio), rotundamente, no.

Y efectivamente, tal y como estás pensando, tampoco Perl es el adecuado, los motivos por los que Perl me a parecido gracioso es por motivos puramente "antropológicos" dentro del mundo de los lenguajes de programación y no desde un punto de vista productivo.

Entonces, ¿qué lenguaje es el adecuado?

Responder completamente a la pregunta es cuando menos complejo, y depende de factores que sólo se conocen en el contexto concreto en el que se precise (un lenguaje), sin embargo, si nos centramos en aplicaciones con cierta complejidad (no sea una simple página html), evolucionen en mayor o menor medida en el tiempo (deban adaptarse a ciertos cambios) y deba ser compartida (aunque esto no es preciso), yo exigiría a un lenguaje las siguientes características:

¡OJO! algún lector atento puede quejarse que características como "cantidad de código libre disponible" deberían haberse tenido en cuenta. Lógicamente a la hora de optar por un lenguaje u otro, siempre habría que considerar factores como la cantidad de información o librerías útiles de las que vamos a poder disponer, sin embargo, esto no es una característica del lenguaje es puramente coyuntural y el hecho de que todo el mundo utilice un lenguaje "poco adecuado" no lo hará más adecuado; sin duda sería mucho mejor que todo ese código, información, librerías o soporte disponible lo estuviera en un lenguaje "más capacitado".

...sigo sin saber qué lenguaje es el más adecuado...

Bueno, PHP no es estricto (ni JavaScript, ni Visual Basic Script), Perl tampoco y además no está bien definido (eh! que no lo digo yo, que lo reconocen en el propio manual de Perl) y dada las diferentes versiones que hay de PHP no está bien definido (no, no lo está, incluso hay debates abiertos de cómo deberían comportarse sentencias ¡que están en uso!).

Lenguajes como ADA, Pascal, Java, C++ y últimamente C# y Visual Basic .NET son lenguajes que básicamente ofrecen las mismas características básicas, todos ellos son similarmente estrictos (determinadas licencias del lenguajes no son debidas al propio lenguaje, sino a las clases básicas disponibles en el framework) y poseen características similares, sin embargo, como lenguaje yo me quedaría con C++, herencia múltiple, sobrecarga total de operadores y tipos, su sencilla y flexible gramática y su cercanía con la máquina lo hacen para mí el mejor lenguaje de programación.

Pero. Hay un pero con C++. Popularmente es considerado un lenguaje "difícil" y quizás sea así comparándolo con otros lenguajes, y debe ser por eso que el soporte en los entornos de programación para el desarrollo de aplicaciones empresariales es menor que en otros lenguajes. Programar una aplicación puramente empresarial en C++ resulta sensiblemente más engorroso que en C# (o VB.NET) en el que resulta suave y natural. Y realmente, no se exactamente cual es el motivo. Por poner un claro ejemplo, crear un Web Service en C++ es similar a C#, uno puede crear sus propios métodos de forma fácil y cómoda sin embargo, al exponer un DataTable personalizado a un tipo de dato específico de una base de datos: primero en C++ sólo deja generar sentencias (select, insert, update y delete), mientras que en C# deja generar procedimientos almacenados ¿porqué? y segundo y más importante, en C++ el tipo adaptador generado es mucho más engorroso que en C# ¿porqué?. Pienso que tendrá que ver con que les resulta más complicado conciliar el modo administrado de C++ y las funciones están limitadas desde el entorno (Visual Studio) y no porque el lenguaje lo impida ¿que puede hacer C# que no admita C++?, nada. Sinceramente este aspecto (puramente práctico) no lo entiendo en absoluto.

Sí, experimentos como el anterior te dejan mal sabor de boca, uno no puede usar un lenguaje potente como C++ porque el soporte ¡ajeno al lenguaje! es limitado. Y eso que C++ es (según Microsoft) el lenguaje por excelencia de su plataforma de desarrollo...

No es que C# esté mal, de hecho está muy bien y también Visual Basic .NET (nada que ver con ASP) pequeñas diferencias harán decantar a los programadores por uno u otro. No se dejen engañar por la "mala fama" de Visual Basic .NET es "casi" tan bueno como C#, tiene algunas ventajas desde el punto de vista productivo y del entorno relacionadas sobre todo con intellisense que no posee C# (otra vez me pregunto por qué...) pero C# posee algunas características del lenguaje que no posee Visual Basic .NET y éstas son las que me han hecho optar por C#.

Entonces... ¿tu piensas que el mejor es C#?

En absoluto. Sí es cierto que motivos coyunturales hacen que para mí, C# sea a fecha de hoy el lenguaje preferido para desarrollar aplicaciones empresariales. No dudo en cualquier caso que otros lenguajes similares como Java (en su entorno quizás más popular Eclipse) suministran capacidades similares. Debe tenerse en cuenta que la fuerza que las grandes empresas como Microsoft o IBM hacen, así como los entornos de desarrollo y aplicaciones relacionadas (como el sistema operativo o los motores de base de datos) influyen enormemente a la hora de tomar una decisión u otra.

Pero sin duda Java, Pascal (bueno últimamente llamado Object Pascal), C++, C# o Visual Basic .NET son lenguajes que desde mi punto de vista pueden aportar una productividad que otros no pueden aportar, como PHP o Perl (por citar los más populares).

¿Y dónde queda PHP?, ¿y tu afición a Perl?

Como ya comenté, a las pocas líneas escritas de PHP mi interés por dicho lenguaje decayó enormemente, y el poco que me queda es a fuerza de que mi hosting sólo admite éste (principalmente). En cuanto a Perl es otra cosa, como lenguaje es muy interesante y posee estructuras realmente divertidas, como ejercicio me hacen abrir las posibilidades de programación y buscar estrategias para diseñar algoritmos que con otros lenguajes simplemente, no existen. Lisp, Prolog, Lingo, una calculadora HP, usar Java con CLDC y MIDP, un viejo vídeo VHS o Perl, son ejercicios interesantes de programación que pueden hacerse, pero por muy atrayente que éstos sean, no recomendaría a nadie realizar una aplicación empresarial con ellos.

Conclusión

Mucha gente usa muchos lenguajes, mucha gente usa PHP ¡y les gusta!. Está bien que la gente use diferentes lenguajes y que se animen a crear otros nuevos. Este artículo son sólo comentarios y opiniones, pensamientos dichos en voz alta de un programador más y del que quizás, paradójicamente, encontrarás más artículos sobre PHP que sobre cualquier otro lenguaje.


¿Te ha gustado? ¡aporta tu opinión!
Valoración:
 0    1    2    3    4    5    6    7    8    9    10

Comentario:
NOTA: si es una petición... ¡pon el e-mail al que responderte o no sabré a dónde escribir!

Código de verificación captcha