¿Cómo le va a PHP5 con versiones anteriores del lenguaje?

8

Me gustaría aprender PHP para el desarrollo web, pero he retrocedido debido a comentarios como los siguientes * :

  • PHP es bueno pero genera código de espagueti
  • PHP es bueno pero Python es material de matrimonio
  • PHP carece de cosas que obtienes en otros lenguajes como C # o Java

Pero para PHP5 he visto algunos comentarios prometedores. Entonces, mi pregunta es: ¿Cómo le va a PHP5 con las versiones anteriores del lenguaje y es lo suficientemente bueno ahora para aprender para el desarrollo web?

* Los comentarios son solo de referencia para no incitar una guerra de llamas. No se solicita ninguna comparación de PHP con otros lenguajes aquí. Comente solo sobre PHP5 y cómo se compara con versiones anteriores.

Pankaj Upadhyay
fuente
8
PHP no genera código de espagueti - los programadores de PHP malos generan código de espagueti
HorusKol
¿Por qué incluyen comentarios sobre PHP y otros lenguajes y cómo incitaron a la duda, pero no quieren que se discuta esto en las respuestas?
phant0m

Respuestas:

17

Cuando se habla de idiomas, estas dos citas de Stroustrup siempre aparecen en mente:

Cualquiera que se acerque a usted y le diga que tiene un lenguaje perfecto es ingenuo o vendedor.

y

Solo hay dos tipos de idiomas: los que la gente se queja y los que nadie usa.

Ahora a la pregunta en cuestión. La mayor parte del odio se dirige principalmente a PHP4. PHP5 se lanzó por primera vez en julio de 2004 (beta un año antes) y la última versión de PHP4 es 4.4.9 lanzada en agosto de 2008 . Ya no hay una razón válida para usar PHP4, a menos que, por supuesto, mantenga alguna aplicación heredada. PHP4 ya no es compatible con el grupo PHP, y todos esperamos que desaparezca pronto.

La brecha entre las dos versiones es mayor de lo que suele ser entre dos versiones principales, ya que el motor detrás del intérprete se reescribió desde cero e incluyó un nuevo modelo de objetos. El lanzamiento de PHP5 coincidió aproximadamente con el lanzamiento de MySQL5, una revisión importante de MySQL. PHP generalmente se combina con MySQL y la quinta versión de ambos abordó varios problemas y los puso al día con la competencia. MySQL también está sujeto a comentarios de FUD , pero, bueno, es la base de datos detrás de AdWords de Google .

PHP 5.3 fue una versión importante en todo menos en el nombre. Muchas de las características que estaban destinadas a PHP6 se ​​abrieron paso en 5.3 y para cada desarrollador 5.2 por ahí recomendaría migrar a 5.3+ más pronto que tarde. La versión actual, 5.4, incluye algunas características increíbles (entre otras):

Ahora para sus comentarios específicos:

PHP es bueno pero genera código de espagueti

Eso no es del todo cierto. Ningún lenguaje genera ningún tipo de código, siempre depende del desarrollador arruinarlo, el código de espagueti es posible en todos los idiomas. Sin embargo, lo que es cierto es que PHP tiene una barrera de entrada muy baja en comparación con otros lenguajes populares, por lo tanto, es mucho más fácil para los desarrolladores inexpertos escribir código malo (pero que funcione). Pero ese es un efecto secundario de cada lenguaje fácil de aprender.

Además, PHP no aplica ningún estilo o paradigma en particular, y siempre depende de usted decidir qué hacer. Siempre he pensado en esto como algo bueno, mientras que otros lo ven como un punto válido de crítica. Tendrás que decidir por ti mismo.

PHP es bueno pero Python es material de matrimonio

PHP carece de cosas que obtienes en otros lenguajes como C # o JAVA

Si lo hace Y el lenguaje X de uso general carece de muchas cosas que obtienes en PHP. Como ser portátil en todos los sistemas operativos Y en servidores http, y soporte para todas las bibliotecas de terceros imaginables que serían útiles en un entorno de desarrollo web. Tienes que entender que PHP no carece de nada importante , si lo hubiera hecho, habría muerto hace mucho tiempo. La comparación entre el lenguaje X de propósito general y otros lenguajes multipropósito con PHP es una falacia, manzanas y naranjas. Aunque PHP ofrece algunas facilidades para respaldar la idea de que es de uso general, no lo es, es un lenguaje web.

Debe tener en cuenta que la ruta evolutiva de PHP es bastante diferente del lenguaje X de uso general : PHP creció y evolucionó, no fue diseñado. Cada vez que se agrega una característica al idioma es por necesidad real, no de acuerdo con algún ideal imaginario de lo que debería ser un idioma. Los lenguajes son, ante todo, herramientas, y PHP es perfecto como tal.

No tengo nada en contra del lenguaje X de uso general , estoy dispuesto a elegir la herramienta adecuada para el trabajo. Siempre he mezclado y emparejado, y también estoy codificando en Java y Python, a veces en paralelo con PHP. Pero PHP es el único con el que consideraría casarme. :)

Si está considerando comenzar con PHP, debería comenzar con la última versión estable, como lo haría en cualquier otro idioma.

Yannis
fuente
Agregaría algunas incompatibilidades entre PHP4 y 5. Olvidó la recolección de basura para PHP 5.3.
deadalnix
1
@deadalnix No agregué las incompatibilidades entre PHP4 y PHP5, porque creo que dicha lista solo es útil si está considerando usar PHP4. Mi punto es no usar PHP4 por ninguna razón, solo porque es muy antiguo (PHP5 ha existido por más de 3 años). Además, no olvidé la recolección de basura, no era mi intención crear una lista definitiva de las novedades de PHP5.3 (dicha lista se puede encontrar en el manual), solo para resaltar algunas de esas características en el contexto de la pregunta.
Yannis
6

PHP ha sido "lo suficientemente bueno" para el desarrollo web durante mucho tiempo . Al igual que con cualquier lenguaje de programación, la calidad del código depende de las habilidades del desarrollador que lo escribe.

Una crítica común de PHP es que su flexibilidad hace que sea fácil para los desarrolladores inexpertos escribir código incorrecto o "spaghetti". Esto se debe en gran medida a que trata de abarcar simultáneamente una serie de paradigmas que ocasionalmente entran en conflicto, están mal implementados o no encajan bien.

  • Las secuencias de comandos del lado del servidor (PHP) yuxtapuestas con el código del lado del cliente (HTML + Javascript) sin modularidad son comunes, casi alentadas, en detrimento de la claridad y la legibilidad.

  • Se escribe comúnmente en un estilo imperativo, pero proporciona mecanismos para la orientación a objetos. Esto resulta fácilmente en estilos mixtos y a menudo puede conducir a un mal diseño.

  • El diseño orientado a objetos fue (en mi opinión) mal soportado en PHP4. Esta es un área en la que PHP5 ha mejorado significativamente (por ejemplo, con modificadores de acceso, clases abstractas, resolución de alcance mejorada ).

  • La tipificación dinámica de PHP permite errores en tiempo de ejecución que podrían eliminarse con la verificación de tipos estática. Esto es inherente al diseño de todas las versiones de PHP y no cambiará en el corto plazo; la carga de validar los tipos de objetos se deja al programador.

Los cambios en el modelo OOP de PHP5 hacen mucho para alentar el buen diseño en el futuro, pero no agregan ningún desincentivo para desalentar las malas prácticas mencionadas anteriormente.

Robar
fuente
2

PHP tiene algunos problemas importantes dentro de sí mismo, pero estos son principalmente de la variedad molesta: su biblioteca es inconsistente y algo esquizofrénica, carece de cadenas como objetos de primera clase, cosas así. No te obliga a escribir código deficiente, y funciona bastante bien para lo que hace: escribir páginas web. Su PHP será tan bueno como se esfuerce para que sea; es bastante posible escribir PHP que es terriblemente de procedimiento y se parece a un código C, y es bastante posible escribir PHP que es demasiado orientado a objetos y se parece a Java. Como alguien que se desarrolla en PHP a diario, me gustan algunas cosas al respecto y odio algunas cosas al respecto y no puedo esperar a que algunas funciones 5.4 (como Rasgos y funciones sanas devuelvan la referencia), pero animo de todo corazón a alguien que esté pensando en elegir para hacerlo.

EricBoersma
fuente
0

php5 es una versión mucho mejor de php4.

La mayoría pero no todo el código php4 funciona en php5.

Lo que realmente cambió fue el modelo de objetos muy mejorado, que solucionó muchas limitaciones y peculiaridades inherentes a la implementación anterior de OO, pero que es en gran medida incompatible con las versiones anteriores.

Documentos aquí

Los otros comentarios tienen cierta validez pero no son un "no ir"

"PHP es bueno pero genera código de espagueti": puede generar todo tipo de pastas en cualquier idioma, pero php no hace nada para desalentar al codificador inexperto que escribe un nido de ratas de código no estructurado. Por el contrario, puede escribir código agradable en cualquier idioma, los programadores expertos no tienen problemas para escribir php limpio y bien estructurado.

"PHP es bueno, pero Python es material de matrimonio": es un lenguaje agradable, pero hay varios marcos web diversos, todos los cuales tienen puntos extremadamente buenos, pero ninguno de los cuales realmente ha despegado, todo está bien, pero cualquier Python / La combinación de marco de su elección siempre será una habilidad de nicho.

"PHP retrasa las cosas que obtienes en otros lenguajes como C # o JAVA" - php tiene el soporte de biblioteca más diverso y bien implementado de cualquier lenguaje, excepto perl. Hay algunos puntos en blanco como el análisis estadístico y el procesamiento de vectores. Pero, en general, si desea hacer algo, una búsqueda rápida de PEAR localizará una biblioteca que lo haga. El lenguaje en sí es más simple que C # o Java, pero la simplicidad de la sintaxis básica más "Duck Typing" significa que puedes hacer cualquier cosa en php que puedas hacer en Java de una manera más legible y elegante.

James Anderson
fuente
La afirmación "PHP tiene la biblioteca más diversa y mejor implementada ..." es discutible. Yo diría que está demasiado hinchado y mal organizado.
Rob
@robjb: no consigas el bit "hinchado", no utilices lo que no necesitas y seguramente cuantas más bibliotecas estén disponibles, mejor, ya que para PEAR y PECL mal organizados son bastante ingeniosos, no hay equivalentes reales en los mundos C # y Java. Las bibliotecas no son "ortogonales", pero esto es inevitable con muchos proyectos que contribuyen durante varios años.
James Anderson el
1
No estoy negando que PHP tenga algunas extensiones / bibliotecas muy útiles, pero no sé nada más para llamar a varios miles de funciones de alcance global pero "hinchado". Además, una serie de funciones tienen propósitos similares. Nomenclatura inconsistente ofusca aún más las bibliotecas del núcleo, por ejemplo strip_tagsvs stripslashes. Yo diría que C no exhibe estos problemas, sin embargo, ha existido por bastante tiempo. ;)
Rob
Todo el "bloatware", es decir, una instalación lista para usar, php, utilizable para construir un sitio web útil, tiene un tamaño aproximado de 70 MB. Esto es más pequeño que algunos de los archivos JAR que vienen con JE. La mayoría de los desarrolladores considerarían que el alcance global de las funciones integradas es bastante útil, en comparación con la verbosidad de Java, donde debe "importar" un archivo jar antes de que pueda hacer cosas tan esotéricas como escribir una línea en sysout. PHP está lejos de ser perfecto, pero para aplicaciones web pequeñas a medianas es mejor que cualquier otra cosa.
James Anderson el
@robjb - No recibo el comentario "C", C exhibe las API inconsistentes, funcionalidad duplicada en espadas. ¿Solo porque las bibliotecas son difíciles de encontrar y solo usas unas cuantas bibliotecas de "cadenas inteligentes"?
James Anderson el