PHP es el Visual Basic 4 de nuestros días. Sucio, desordenado, caótico, infumable. No tiene gracia, elegancia, estructura, es basura absolutamente hedionda e inmantenible, el epítome paradigmático de lo que el concepto de "código Spaghetti" significa. Noticia original: www.codinghorror.com/blog/archives/001119.html [inglés]
> Siempre me ha parecido la "versión amateur" del ASP.
El ASP no es ningún lenguaje, sino la "tecnología", como "CGI". Si se refiere al Visual Basic (VB) Script, éste es posterior al PHP.
Además el VBScript (al menos hasta hace pocos años) no era un lenguaje orientado a objetos, sino "basado en objetos", no soporta(ba) el concepto de herencia o polimorfismo.
> Sin orientación a objetos hasta hace poco,
Si hace poco es desde la versión 4 (mayo de 2000) ...: www.php.net/manual/en/language.oop.php
VBScript no tuvo el concepto de clase hasta la versión 2.0 (luego llamada 5.0), eso recién ocurrió en 1998 ó 1999: en.wikipedia.org/wiki/VBScript
> Testeo unitario,
Sí que existe:
phpunit.sourceforge.net/
simpletest.sourceforge.net/
> manejo de excepciones
Claro que tiene Excepciones, www.php.net/manual/en/language.exceptions.php
Es lo que tiene hablar por hablar, o repetir las frases hechas. El PHP sí que es malo como lenguaje, por las razones que explican en el enlace de "coding horror", que no tienen ninguna relación con las que pone el blog enlazado (o sea, no debería ponerse "noticia original", no tienen nada que ver).
Este tipo es de los que sueñan en esas épocas donde los informáticos vivían en un laboratorio frio, con batas blancas y que se sentían dueños de una verdad absoluta y restringida, mientras se sentaba con los colegas a hablar de máquinas de Turing, algoritmos recursivos, expresiones regulares, programación por restricciones y lenguajes de programación raros. Sueña con formar una turba y quemar todo lo referente a Basic, PHP y libros "Aprenda xxxx en 21 días", o "Tecnología xxxxx para dummies" en una especie de Inquisición Informática.
A mí, que programo en PHP, me han llegado a decir: "PHP es una mierda porque no tiene objetos ni sesiones". Mucha gente tiene esa idea.
A lo que ha comentado #4 añadir que para PHP existen muchos framewoks que permiten hacer aplicaciones webs con un código bastante bien estructurado. Por ejemplo, CakePHP (www.cakephp.org/ , tipo RoR).
Creo que el problema con PHP es más de tener demasiados programadores novatos que por el propio lenguaje.
Dicho lo cual, cada vez me llama más la atención Python
#7 Zend_Framework power :lol:
cosas hechas con php: meneame, wordpress, todos los nuke's, phpbb, smf, vbulletin, Digg, 37Signals, Basecamp, Ruby on Rails
El codigo PHP puede ser muy bueno. Solo depende del programador.
El grandisimo problema de PHP es el rendimiento. La estructura del codigo no es problema de PHP, sino del programador. PHP no tiene la culpa de que existan malos programadores.
"Spaghetti SQL wrapped in spaghetti PHP wrapped in spaghetti HTML, replicated in slightly-varying form in dozens of places."
Cutrerías de ese estilo se pueden hacer en PHP, en Java, en ASP y en cualquier lenguaje de programación. Si el programador no separa el acceso a datos, de la lógica de la aplicación, de las vistas, es problema suyo y no del lenguaje. Y si no modulariza, no usa objetos y funciones y se dedica a copypastear código de un lado a otro no es culpa del lenguaje, sino del programador.
Anda que no he visto cutrewebs donde la conexión a la base de datos (usuario y contraseña incluida) se repetía en cada archivo *.php, *.asp o lo que fuera. Eso es culpa del programador.
Es más, el uso de despotricar contra uno en concreto, me parece un uso pésimo.
No demonicemos a los lenguajes de programación por sus orígenes si no queremos que demonicen internet y apoyemos las buenas prácticas a la vez que damos caña a las malas :)
oh wait!!!
xD
You've probably heard that sufficiently incompetent coders can write FORTRAN in any language. It's true. But the converse is also true: sufficiently talented coders can write great applications in terrible languages, too. It's a painful lesson, but an important one.
Y no solo PHP, Perl también es un lenguaje terriblemente mal diseñado y ahí tienes webs como Slashdot o Barrapunto tirando.
Ah por cierto, los frameworks de php están muy bien si no sabes organizarte y distribuír bien tus proyectos, pero a gran escala no dejan de ser una chapuza lenta, todos y cada uno de ellos.
A mi me gusta PHP, es verdad que permite hacer guarradas pero todos los lenguajes lo permiten de una forma u otra, al final quien decide es le programador.
Leo los posts de Jeff y son bastante buenos en general. A él no le gusta PHP pero nota un paralelismo entre PHP y Visual Basic donde influye ademas el programador mucho mas que el programa. Y si algo coincido es la falta de estandares en los nombres de las funciones (strstr, str_replace o peor aún htmlentities y html_entity_decode siendo dos funciones opuestas con nombres distintos :|).
PHP te da libertad para programar, lo que en algunos casos se paga muy caro y en otros te da un monton de beneficios.
por otra parte python es brutal en todos elos sentidos menos en optimizacion, la sistaxis es algo de lo que te enamoras hasta el dia de tu muerte, el dia que hagan un webPython o argo asi ya veras...
en cualquier caso de que va este tio comparando php con asp, es como comparar la wikipedia con la encarta xD
Aparte de todo lo dicho en los comentarios sobre que lo malo de php son los programadores novatos en vez del lenguaje en si mismo, lo que no se ha dicho es la facilidad de integracion de PHP con otras "cosillas" como javascript (ajax incluido), css, html etc.
Por ejemplo, integrar 4 tonterias tipo scriptaculous con ASPx es una pesadilla, y que sería de Ruby sin RoR? Nada! PERL? si, bastante potente pero al mismo tiempo bastante lento y peligroso en cuanto a seguridad. Phyton? pocos hosting lo soportan.
Lamentablemente PHP esta lleno de novatos, pero eso tambien se debe a que existe muchisima documentacion de php (cosa que es bueno) y ademas php es un lenguaje sencillo de aprender, lo cual no lo hace menos potente, C por ejemplo es muy pero que muy sencillo de aprender un puñado de palabras claves y otro de operadores, pero... ¿Puede un novato hacer algo relativamente complejo en C?
El tio se queja de la cantidad de palabras claves en php pero ¿Se imaginan programar en C sin ninguna libreria? php simplemente esta integrando las librerias mas comunes de una vez con la instalacion, por lo que no es necesario hacer miles de includes que de todas formas se instalan de inicio como hace aspx o java.
Los lenguajes deben evolucionar como todo. Mysql 3 era una mierda que no soportaba subconsultas ni triggers ni procedimientos almacenados ni nada, el 4 ni schemas soportaba pero aun asi lo usaban sin quejarse pese a tener postgres que tambien es opensource (y un elefante de lento) y poco a poco ha ido avanzando al igual que lo viene haciendo php.
Pero peor aun, aceptaria esta opinion si el blog del Jeff Atwood corriera en RoR o Phyton, pero esta bajo in IIS 6.0 de Microsoft lo cual me lleva a pensar que simplemente es un stupid fan de Microsoft o le estan "pagando" el post...
Es cierto que PHP es un gran avance para la programación web, pero está claro, que en cuanto a organización y estructura se refiere es bastante caótico.
Iluminame. ¿En qué estabas pensando?
Son LOS JODIDOS PROGRAMADORES los que tienen que ser elegantes!
Son ellos los que producen el codigo. Yo mismo desarrollo en php, siguiendo el modelo MVC, reutilizando componentes y documentando todo como un cabron, y mis proyectos no tiene mucho que envidiar a uno hecho en rubi on rails. No es la maquina quien tiene que demostrar creatividad y control. Joder.
Si nos ponemos tontos tambien puedo sacar por aqui los scripts en python y rubi que hacen mis becarios, y podria decir con los mismos argumentos que "python carece de elegancia y a rubi no lo entiende ni la madre que lo pario". Una cosa es que haya mil webs hechas en php de antes del 2000, sin comprobar parametros, todo envarullao, y otra muy distinta que sea una mierda.
No sé si es caótico, para mí es caótico porque los lenguajes de programación son caóticos, lo entiendo algo normal. Pero criticar al PHP en favor del ASP es muy disgusting.
Con python, por ejemplo, no es tan sencillo, (al menos eso creo, por lo que miré).
los nombres de las funciones de php son un poco carentes de logica y coherencia, da sensación de que han sido improvisados a lo largo del tiempo.
El tema de orientacion a objetos, en la version 5, es bastante patetico. Dicen que en la 6 ya lo estan arreglando, a ver si es verdad. Pero eso de tener que hacer apaños con __call() para sobrecargar metodos no me gusta, y realmente es una desventaja a la hora de programar, por que te quita tiempo de pensar como hacer tus funciones para pensar como se utilizan o se deben hacer las herramientas necesarias para realizar tu funcion.
Personalmente,me he encontrado con alguna falta de documentacion que me ha llevado a tener que hacer alguna chapuzilla para salir del paso (por ejemplo, con PDO::fetchObject, no explica que coño pasa cuando llama al constructor, de hecho, ni siquiera explican que despues de rellenar las propiedades a saco (ni que estas deben ser publicas para que funcione) lo llama).
En lo que si es un jodido asco, es a la hora de crear el html de la vista. Ir arrastrando el <?php por todo el archivo, es un jodido coñazo.
Una solucion como el lenguaje de template de Django (que es el mismo que el de Google AppEngine) es bastante mas comoda.
Y aspnet no es patrimonio de M$. Yo tengo un sitio web corriendo en ubuntu con mono y apache. Mientras no se quiera usar cosas de la ultimisima version, todo funciona como se espera.
Ahora bien, donde es más facil que un programador del montón haga código spaguetti en ¿en asp.net, java o en php?
Flexibilidad! Eso es lo que ofrece PHP si quieres aprender y hacer cosas serias lo haces, si quieres quedarte donde estás (como ese blogger* supongo) también lo puedes hacer.
* #31 que sea un fenómeno blogger no quiere decir para nada que sea un fenómeno (véase Edans)
Es un poco caótico, pero por eso los frameworks buscan unificar y limpiarlo un poquito... no sé si se consiuge esto sacrificando rendimiento o qué, pero la crítica está bien.
Lo que pasa es que los fanboys de Java se aferran a este tipo de críticas y au. Ale.
"elegante" como en Python. PHP es una herramienta mas, y es tan bueno como la persona que hay detras usandolo.
Por cierto, trabajo con PHP, no me gustan ciertas cosas, como su inconsistencias, o que no haya espacios de nombres, pero si la vida te da peras, no vas a hacer limonada no? Cada cosa es para la que es.
No se yo si Cake se parece mucho a RoR pero bueno... personalmente empecé programando en PHP para webs, pero ni me gusta PHP ni tampoco me convence el Cake PHP.
Antes que PHP prefiero usar Python o Java con JSP/Servlets y custom tags.
Supongo que todos hablamos especialmente de cara a programar en MVC.
Python vale pero Java... :_( noooooooooooooooooooooo
Unos intentamos aprender para hacer las cosa bien desde el principio y otros... a por el intrusismo laboral.
Por lo demás, decir que hay magníficos programadores PHP (no hay más que ver muchos de los frameworks hay y que se van haciendo) y otro grandísimo porcentaje que codea "linea a linea" y no enfoca la aplicación de una manera global. Es un problema de base de programación: te enseñan a "trasladar" información pero no a organizar una aplicación. Si se insistiera en el MVC de manera ESTRICTISIMA sería mejor para todos, para aprender y a la hora de su uso real y PHP (u otros lenguajes similares) no recibirían tantas críticas como las del blog.
try {
throw new Exception("Es verdad, PHP no maneja exceptiones.. Oh Wait!");
} catch(Exception $exception) {
echo $e->getMessage();
}
?>
No es lo mismo tener que aprender a hacer un makefile para poder compilar tu código fuente que simplemente subir el archivo a una carpeta del servidor. Así es normal que sea tan popular, y la popularidad en este caso no le beneficia mucho, la verdad.
El problema que le veo al PHP es que SE LO TRAGA TODO. Y te obliga a esforzarte mucho (horror, esfuerzo) con el código para evitar errores y a preparar un buen plan de pruebas (horror, esfuerzo), para que no se te olvide probar ninguna casuística. Por lo demás, aviso que estoy contento con PHP5.
Por cierto, creo recordar que para C existía algo así como LINT para realizar un análisis del código fuente buscando errores comunes ¿no existe algo similar para PHP?
======================
Dios no juega a los dados, juega al billar
Pero con PHP5 la cosa ha cambiado mucho, y el manejo de excepciones y objetos está a la altura de cualquier lenguaje más 'profesional'.
El hecho que haya frameworks (cakePHP, symfony...) o no, no tiene que ver con que el lenguaje sea bueno o malo. Los frameworks ayudan a un programador a hacer bien las cosas, pero no son necesarios. Si uno es buen programador, es capaz de hacer programas con arquitectura MVC, herencia de objetos y clases abstractas y totalmente estructurado.
Desgraciadamente, el programador de PHP en general está mal valorado, porque muchísima gente va con la idea de que PHP es un lenguaje de segunda y que no se pueden hacer cosas serias con él, por culpa de todos eso pseudo-programadores que comentaba en el primer párrafo.
Me parece bien que no le guste el php, la gente es libre de opinar, pero lees el artículo y, sin ánimo de ofender, es un poco ignorante.
Yo trabajo con Java desarrollando aplicaciones webs y Symfony (para el que no sabe es un framework en Php) es realmente muy bueno, por usar "un lenguaje que apeste"
PHP apesta? Quizás sí, quizás no. No tengo la experiencia de haber trabajado con PHP en proyectos grandes, pero tiene una gran popularidad, en parte, por la facilidad de programar y la facilidad para desplegar. Es sencillamente, otra herramienta que cumple con su trabajo y si sitios como Digg, Yahoo! y otros lo utilizan, debe ser por algo.
Por cierto #73 no tienes ni idea. J2EE no es para hacer "Hola Mundo" y cuando tienes un proyecto grande y complicado, esos 4 XML's empiezan a tener gran valor.