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:
- Debe ser muy estricto. Un lenguaje estricto es un lenguaje productivo, evita errores y aquellos que ocurren son mostrados con claridad. De forma generalizada, yo trato las advertencias de los lenguajes como si fueran un error.
- Debe ser determinista y estar bien definido. Nunca, en ningún momento ni circunstancia, debería haber siquiera posibilidad de duda de cuales son las implicaciones de cada instrucción y sentencia programada. No, no es obvio, este tipo de dudas se producen constantemente en cualquiera de los lenguajes mencionados anteriormente.
- Debe acercar al programador a la máquina y no alejarlo. Muchos de los problemas que muchos programadores tienen están relacionados con su poco (o nulo) conocimiento de lo que realmente hace el ordenador cuando utilizan determinadas sentencias o estrategias de programación. Aunque muy cómodo en principio, incluso el uso (prácticamente generalizado) de recolectores de basura (garbage collector) poseen efectos colaterales difíciles de controlar que obligan a introducir (y aquí es el programador el que debe reconocer cuando introducirlo o no) elementos como el using de C#. Un alto nivel de abstracción (en teoría deseado) de un lenguaje de programación dificulta en muchos casos su puesta en práctica (como por ejemplo en Perl) degradando a la larga la calidad del código escrito.
- Debe ser ágil y flexible. Casi contradiciendo las anteriores características, ésta requiere del lenguaje la capacidad de ofrecer al programador sencillas sentencias para la mayoría de las tareas. Sin embargo, ocurre en muchos casos que los árboles no nos dejan ver el bosque y realmente es bien poco lo que el lenguaje está obligado a ofrecer en éste sentido. Herramientas como la conversión automática de tipos, la iteración sobre conjuntos de datos y la sencillez y rapidez en la escritura del código se resuelven trivialmente con una planificada y cuidadosa programación de los tipos básicos, un buen entorno de trabajo que suministre macros e intellisense (escritura automática) y las archiconocidas características típicas de los lenguajes orientados a objetos (herencia, polimorfismo) y otras que las acompañan (sobrecarga de funciones, sobrecarga de operadores).
¡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.
Opinado el 16/09/10 05:49, valoración Al inicio yo tenia la misma forma de pensar con respecto a PHP, pero he aprendido la certeza de la frase "Cada herramienta usala para la tarea Adecuada".
C,C++ Estan excelentes para aplicaciones nativas de alto rendimiento ( por algo se usan para crear lenguajes y sistemas operativos, asi como cosas de opengl).
Para scripting del lado del servidor en aplicaciones web, PHP seria el equivalente a lenguaje C, en el sentido que te deja controlar detalles a bajo nivel como FLUSH, HEADERS,etc.
Otros lenguaje
Opinado el 22/02/11 22:08, valoración Respeto tu opinion yo trabajo con visual basic pero php me parece uno de los mejores lenguajes de programacion para lo que es web pero me parece que el lenguaje de programacion es mas bien una eleccion del programador que esta trabajando igual te felicito si bienn es una cosa sencilla la que realizaste esta muy bien felicitaciones. Saludos y suerte damian cualquier consulta que tengas me podes escribir a damelcuervo@hotmail.com
Opinado el 02/04/11 20:28, valoración exelente pagina el programa de guerras tribales anda exelente en el mundo 6 conecta pero no crea y no hace nada solo puedo ver los pueblos no puedo distribuir los recursos ni hacer crecer los pueblos y mucho menos crear tropas me interesaria una version completa sobre todo para sentarme a tomar una cerveza adrian@medanos.net.ar
Opinado el 03/04/11 07:23, valoración Podr?haberme gustado m? como tambi?podr?haberme gustado menos. El programador escoge, el programador de Visual Basic es torpe.
Opinado el 23/08/11 00:03, valoración Fue decepcionante no encontrar una razón bien fundada sobre porqué no usar PHP o Perl, hubiera sido mas honesto de tu parte empezar tu artículo con la conclusión.
Opinado el 23/08/11 08:23, valoración A "Fue decepcionante...", como mínimo, he concretado 3 puntos (el 4º es discutible) que, objetivamente, NO cumple PHP. Pero en general, describo porqué no lo usaría YO. Quizás es tu afán por criticarme lo que no te ha dejado verlo...
Opinado el 30/08/11 21:19, valoración Para el que experimenta con variados programas
sabe que no se le dá el 100 a uno débido a que
a veces encuentra algún pegón en este pero que
el otro lo tiene y viceversa. Yo perfectamente
entendà de que a pesar de todo José Juan se va
hacia PHP debido a ciertas reglas impuestas. No
es solo criticar sino ver las cosas como si
fuera yo.
Opinado el 20/09/11 21:37, valoración parse,, use Perl puede hacer lo mismo que hace PHP
Opinado el 05/04/12 13:42, valoración seria bueno que opines sobre los frameworks
salu2
Opinado el 20/04/12 05:41, valoración Excelente articulo
Opinado el 22/06/12 16:07, valoración Interesante
Opinado el 03/07/12 21:14, valoración Pregúntaselo a Mark Zuckerberg y Jack Dorsey
Opinado el 15/08/12 18:30, valoración muy bueno, me encantaria aprender mass. :D
Opinado el 04/09/12 17:38, valoración ah cuentale a facebook y twitter lo mal que es php
Opinado el 25/09/12 00:16, valoración Eeres rependejo jajajajajaj idiota ignorante!!!
Opinado el 01/11/12 16:54, valoración su enunciado fomenta el desanimo a la programacion
Opinado el 15/11/12 21:46, valoración Interesante artículo
Opinado el 04/02/13 16:28, valoración eres muy ignorante!!Facebook esta en php/python
Opinado el 14/02/13 21:23, valoración veo tu página y deduzco que no sabes programar
Opinado el 01/04/13 18:51, valoración Yo deduzco lo mismo
Opinado el 03/05/13 02:26, valoración No mames brother calla boca si no sabes que hablas
Opinado el 03/05/13 15:55, valoración Perfecto articulo, a mi tampoco me gusta nada PHP
Opinado el 17/05/13 15:32, valoración Jamás podrás comparar 2 sis. operativos Win/Linux
Opinado el 19/05/13 22:43, valoración php rules
Opinado el 31/05/13 12:35, valoración No tienes ni puta idea...
Opinado el 12/06/13 18:02, valoración Este tipo escribe en genbeta-dev, vaya tela...
Opinado el 09/09/13 07:38, valoración En Perl esta hecho Amazon, y Google, estas mal
Opinado el 12/11/13 03:51, valoración
Opinado el 03/01/14 22:28, valoración jajaja.. juajaja.. debes aprender a argumentar.
Opinado el 06/03/14 11:13, valoración No propones verdaderas alternativas.
Opinado el 24/03/14 04:18, valoración Que tiene que ver PHP para web, con lo que dices
Opinado el 26/06/14 12:42, valoración Bajos conocimientos y culpa a PHP...
Opinado el 12/07/14 20:58, valoración Tu página es un desastre, la hiciste el ASP .net?
Opinado el 12/07/14 21:32, valoración "la hiciste el ASP .net?" no ¡en PHP!
Opinado el 07/08/14 00:43, valoración Tema viejo, articulo escrito por novato. idiota
Opinado el 09/09/14 19:05, valoración la verdad se ve no sabes progamar
Opinado el 22/09/14 23:05, valoración Como comentario emisario del pasado está creÃble.
Opinado el 14/07/15 16:19, valoración
Opinado el 10/08/15 04:52, valoración Amigo....tu punto de vista es muy cerrado...suerte
Opinado el 16/09/15 08:14, valoración Gracias por tu aporte, tu opinion amplia panorama
Opinado el 17/12/15 05:12, valoración Facebook está en PHP
Opinado el 20/12/15 06:07, valoración si no te gusta php entonces crea tu propio lenguaj
Opinado el 21/01/16 22:42, valoración <script>alert("test")</script>
Opinado el 16/03/16 16:56, valoración Pon el "modo estricto" y luego me lo cuentas. Te a
Opinado el 18/03/16 14:11, valoración <?php
for($i=0; $i<100000; $i++) {echo($i)}
?>
Opinado el 30/03/16 15:39, valoración viendo tu página web, pierdes toda la credibilidad
Opinado el 30/03/16 15:53, valoración "pierdes toda la credibilidad" ¿por?
Opinado el 18/04/16 05:34, valoración php python.. opciones libres!! .net para que?
Opinado el 29/09/16 18:40, valoración Aprende a programar luego criticas
Opinado el 04/11/16 19:38, valoración Ya quite este sitio, XD parece de los 90s malÃsimo
Opinado el 21/11/16 00:21, valoración Buen artÃculo. La plataforma .NET es fantastica
Opinado el 07/01/17 13:08, valoración Totalmente de acuerdo con este articulo
Opinado el 17/02/17 03:31, valoración <h5>IDN</h5>
Opinado el 28/07/17 19:15, valoración Un articulo d 2008. desactualizado.
Opinado el 15/06/18 00:26, valoración entonces por que tu pagina web es una mierda?
Opinado el 08/03/19 22:15, valoración Muy cierto.Conoces bastantes lenguajes.
Opinado el 22/06/19 15:40, valoración Yo en 2019 sigo usando Perl en mi trabajo. Genial.
Opinado el 24/06/19 23:48, valoración Me gusto muy completo. yo uso VB.NET en el trabajo
Opinado el 29/07/19 00:23, valoración PHP es un lenguaje muy limitado
Opinado el 13/08/19 00:21, valoración Tú, como autor, 11 años después, ¿qué piensas?
Opinado el 21/08/19 10:29, valoración Lo primero, cada lenguaje es adecuado para cada uso. He leÃdo comentarios del tipo "Tal está hecho en PHP o Perl", pero es que "Tal" tiene diferentes necesidades en cada situación.
En primer lugar, cada lenguaje tiene un cierto rendimiento, y uso potencial, además de un entorno en el que será mejor y peor.
Por ejemplo, el caso de C#, ¿crees que a una empresa del tipo Amazon le sale rentable comprar 2000 licencias de Windows Server para sus servidores y utilizar C# como back-end? Es más... ¿Con
Opinado el 14/08/20 20:29, valoración soy ups923@gmail.com.
y solo Eres un Doble Moral;
Opinado el 09/05/23 22:37, valoración 2023 y PHP llego a la version 8.2 y es de los mas rapidos que existen, ademas que sigue siendo el mas usado, critica antigua sin pies ni cabeza.
¿Te ha gustado? ¡aporta tu opinión!