¿Por qué los desarrolladores web eligen lenguajes distintos de PHP a pesar de que Mark Zuckerberg ha demostrado que puede construir una plataforma altamente escalable en PHP?

Cuando los desarrolladores web eligen usar PHP, están usando PHP simple. ¿Qué está mal con eso? Porque, ya sabes, eso también fue lo que Facebook usó … en 2002.

Acabamos de entrar en 2016, ¿qué tal ahora? Realmente no. Veamos…

No estaban satisfechos con el funcionamiento del motor PHP interpretado normalmente por Zend, por lo que primero inventan HipHop para PHP, un transpilador que traduce el código PHP en C ++, lo compila como un binario y luego lo ejecuta como un ejecutable. Como ya sabrá, el lenguaje interpretado nunca puede vencer al lenguaje compilado a gran velocidad.

¿Estaba satisfecho Facebook entonces? No, lo llevaron más allá al inventar HHVM, una máquina virtual que actúa como un tiempo de ejecución para el código PHP. En lugar de traducir PHP a C ++, HHVM compila directamente el código PHP a bytecode, luego a código de máquina. Cuando hablas con la máquina, por supuesto, es más rápido usar lenguaje de máquina, ¿verdad?

Se podría pensar que se detendrían allí, pero no lo hicieron. Usted ve, PHP está diseñado terriblemente desde el principio (hay una explicación detallada aquí: PHP: un fractal de mal diseño). Ser dinámicamente tipado e inconsistente no ayuda. Entonces Facebook hizo lo que hicieron, inventaron un nuevo lenguaje: Hack. Técnicamente es un superconjunto de PHP ya que el sitio afirma que cada código PHP es un código Hack válido, pero proporciona superpoderes PHP simples, como las anotaciones de tipo, para sortear el desorden que PHP genera. Pero al final del día, Hack no es PHP.

Para lograr la escalabilidad que tienen ahora, estos inventos ayudan a lo grande. No creo que puedan sostener a los usuarios masivos si solo usan PHP simple. Y este es un hecho triste, porque un desarrollador web cotidiano probablemente no los usaría .

El escenario típico de comenzar el desarrollo web es a través del alojamiento compartido, y la mayoría de los sitios de alojamiento solo proporcionan el PHP normal, no Hack con HHVM. Debería buscar un alojamiento dedicado o considerar el uso de soluciones VPS o SaaS, pero dadas esas opciones, básicamente necesita el mismo tiempo de configuración para poner en funcionamiento Hack + HHVM como lo haría con, por ejemplo, Java, Go, Node. js u otros.

Habiendo dicho todo esto, yo realmente no odio PHP. La principal ventaja que tiene PHP sobre los demás es su ubicuidad y lo fácil que es comenzar. El punto de mi respuesta es que realmente no puedes justificar el uso de PHP en función de cómo lo usa Facebook.

Porque en la escala de Facebook, el idioma es lo que menos les preocupa.

PHP hace que sea fácil hacer cosas para un principiante

Esta afirmación es absoluta, positiva y verdadera. Empecé a programar en PHP, así que lo sé. Si bien todos los cursos de Programación 101 que comienzan con Java o C ++ pasarán mucho tiempo explicando cosas que los principiantes tienen dificultades para comprender, como los principios de OOP, etc., PHP le permite conectarse a una base de datos en muy poco tiempo. Soporte MySQL? Está archivado justo debajo de “mysql”. Una página PHP al principio se relaciona exactamente con una página HTML. Este concepto te hace sentir poderoso. Algo que la mayoría de los otros lenguajes de programación, al menos al principio, no.

PHP se sale de su camino, al principio, más que cualquier otra cosa . Es lo que les gusta a las personas que ya saben sobre OOP sobre RoR. Pero PHP también tiene algunos defectos serios.

Hay 3 versiones incompatibles de PHP.

Ha habido 2 cambios incompatibles con el reenvío en la base de código que hacen que una cierta cantidad de código sea reenviable y reenviable. Si bien la portabilidad hacia atrás no suele admitirse, ya que las nuevas versiones del tiempo de ejecución introducen nuevas características, la portabilidad hacia adelante, lo que significa compatibilidad hacia atrás para el tiempo de ejecución, es imprescindible. Especialmente para sistemas de software que necesitan grandes inversiones para desarrollarse.

PHP no es seguro para subprocesos

PHP 4 y 5 solo se pueden usar con el modelo mpm_prefork de Apache2, no con mpm_worker. Eso significa que PHP limita sus elecciones de rendimiento con el servidor HTTP Apache. Parece que se puede usar con mpm_worker no usando el complemento mod_php directamente, sino usando FastCGI. Sin embargo, actualmente (11/11/2006) hay al menos un error en el soporte fastcgi de PHP que podría golpearte en la cara cuando menos lo esperes.

Recientemente, alguien citó sobre el uso de PHP por Flickr de que PHP pierde memoria como un tamiz, que es uno de los principales problemas para hacer que PHP funcione con FastCGI, SCGI o un modelo de ejecución enhebrado.

El manejo de la sesión de PHP también es de un solo subproceso

Otro problema es el manejo de la sesión de PHP. Por defecto, PHP usará sesiones basadas en disco (es decir, archivos) y adquirirá un bloqueo en el archivo tan pronto como llame a session_start() . Esto asegura que múltiples solicitudes que usan sesiones se ejecutarán en serie , una tras otra. Si bien el manejo de sesiones en escenarios concurrentes no es una tarea trivial, es importante tener en cuenta que con la configuración predeterminada de PHP, si realiza un session_start() en la parte superior de cada página PHP, el usuario experimentará un comportamiento extraño en su sitio . Por ejemplo, si abren múltiples enlaces en pestañas o ventanas, o su sitio usa marcos, estos se cargarán secuencialmente, no en paralelo. Puede aliviar este problema cerrando sus sesiones con session_write_close() para resolver este problema.

Como se mencionó en otras respuestas, Facebook en realidad no creó una aplicación altamente escalable en PHP. Le arrojaron una tonelada de hardware, eventualmente inventaron un intérprete completamente nuevo y, cuando eso no fue suficiente, inventaron un nuevo lenguaje que solucionó muchos de los problemas de PHP.

Más allá del caso específico de Facebook, existen otras razones además de la escalabilidad para elegir un idioma. La escalabilidad es bastante baja en la lista de cosas por las que debería preocuparse al crear una nueva aplicación.

Incluso si fuera un gran lenguaje, habría muchas razones (gusto, ajuste a un propósito específico, conocimiento previo) para usar otros. El mero hecho de que uno pueda hacer algo de una manera particular no elimina otros métodos. Uno puede clavar un clavo con una roca, pero ese hecho no descarta los martillos como herramientas potenciales.

Mark Zuckerberg ha demostrado que no puedes usar php para eso. Si bien Facebook usa la sintaxis php, se ejecuta en la máquina virtual HipHop, que es cegadoramente rápida en comparación. Avanzaron aún más al desarrollar Hack, un lenguaje aún más rápido. Mantienen la compatibilidad con la sintaxis php porque sería un desperdicio de recursos reescribir lo que ya se ha hecho solo por reescribir.

Nunca podría ejecutar un sitio como Facebook en el motor php 5 sin un aumento considerablemente enorme en el hardware necesario. El motor php 7 promete ser mucho mejor que el 5, pero aún necesita trabajar para estar a la par con el código php ejecutado en HHVM.

Acabo de ir a HHVM por una CPU altamente compleja que castiga parte de uno de mis juegos. El aumento de velocidad sobre php fue increíble. php 5.5 promedió> 1.1 segundos, php 7 bajé a un promedio de 0.3 segundos. HHVM lo ejecuta en 0.17s promedio.

En cuanto a escalabilidad, php 5 comienza a mostrar una disminución en el rendimiento de alrededor de 100 conexiones. HHVM puede mantenerse por más de 300. HHVM también puede funcionar a la par con NodeJS hasta 1,000 elementos de clasificación, pero a 10,000 Node fue aproximadamente el doble de rápido. PHP no pudo mantenerse al día con más de 300.

Puedes construir grandes ciudades usando nada más que herramientas manuales y mano de obra esclava. No es deseable hacerlo en la era moderna, donde hay mejores herramientas y prácticas de seguridad disponibles (¡sin olvidar la inmoralidad de la esclavitud!).

Demuestra que el diseño del producto, la experiencia de usuario y la ejecución suelen ser más importantes que las opciones tecnológicas. Entonces, la mejor opción es a menudo la que lo hará más productivo. Lo que para muchas personas será lo que saben. Entonces, si eso es php, entonces adelante.

He programado php, asp, asp.Net, cgi, node, Mvc.Net, Java, C ++, y todos tienen ventajas y desventajas. Personalmente, diría que preferiría el nodo en este momento debido a su amplio soporte de contenedores en la infraestructura de la nube, la capacidad de escalar (aunque aún no he tenido la oportunidad de probar realmente a escala de primera mano) y el impulso de comunidad que actualmente atrae . Esto no se debe a alguna propiedad abstracta de ser el mejor. Sino más bien la combinación correcta de interés intelectual y productividad.

Los desarrolladores web eligen dónde creen que conseguirán trabajo fácilmente y ganarán más. Están menos preocupados por Facebook (PHP) o LinkedIn (JAVA, PHP) o Google (Python).

Si ve el número de trabajos disponibles en Java entre las empresas multinacionales, está en todas partes. El segundo es Testing (automatización con selenio para el que necesita Java). Los desarrolladores usan esta información superficial para asegurar su futuro.

Si lo compara con el número de vacantes para PHP en MNC, es insignificante.

En una empresa mediana, hace unos años era el boom de la red de puntos. Luego cambiaron a PHP debido a la facilidad de producción (codificación) y despliegue (servidor). Pero luego entrenar nuevamente está cambiando a dispositivos móviles, donde está Java y API para programar para Android. (Aunque php y python también se usan pero no son tan populares). Pero, PHP aún gobierna las empresas del sector medio. Nuestro deseo por las multinacionales es la verdadera razón para no optar por PHP.

Aunque es totalmente correcto que varios lenguajes de programación sean potentes y se escalen a cualquier nivel

Necesita muy poca experiencia para escribir PHP deficiente que sea lo suficientemente bueno para el 99% de los sitios con tráfico deficiente.

Se necesita mucha experiencia para escribir un excelente PHP: para la mayoría de las personas en la mayoría de las rutas, es más rápido aprender un nuevo lenguaje que no esté sujeto a las mismas limitaciones impuestas por PHP que comprender cómo usar PHP de manera efectiva; Por otro lado, mucha gente quiere construir un sitio web después de dominar otro idioma menos amigable para la web, y elegirán el idioma del sitio web en función de lo que les resulte más cómodo.

No importa cuánta experiencia tenga, PHP eventualmente se encontrará con cuellos de botella de rendimiento. No sé si sabemos exactamente dónde está el límite, pero Facebook lo aprobó hace mucho tiempo, como se indica en otras respuestas, no se han ejecutado en el PHP que usted y yo ejecutamos durante mucho tiempo (lo mismo es cierto para wikipedia). Pero hay muchos otros sitios de alto tráfico que aún ejecutan PHP “puro”. No es una crítica increíblemente profunda decir que PHP necesita un poco de ayuda para hacer frente a algunos de los sitios de mayor tráfico en la web.

Pero nada de eso es la verdadera respuesta a su pregunta. La verdadera respuesta a su pregunta es que PHP era un tema de moda hace 15 años, lo que permitió un desarrollo web fácil como ningún lenguaje antes, por lo que fue la opción elegida durante varios años antes de que Python y Ruby tuvieran Django y Rails y comenzaran a mostrarle a la gente que otros idiomas podrían proporcionar la misma facilidad de uso para la web. Pero en ese momento, WordPress estaba fuera, junto con varios otros marcos de alto perfil (Drupal, Mediawiki, etc., etc.). Mientras tanto, PHP se dejó como un lenguaje de primera elección que la gente eligió para desarrollar nuevos proyectos, pero creció en instalaciones de marcos de código abierto.

No permita que la prevalencia de PHP lo engañe: otros lenguajes ofrecen muchísimo que PHP no ofrece, en la medida en que PHP ha estado tratando desesperadamente de ponerse al día durante años. Uso el idioma todos los días y tengo la intención de seguir haciéndolo porque puedo sacar mucho provecho de él, pero parte de la razón por la que puedo hacerlo es porque aprendí y usé otros idiomas y es me enseñó a ser disciplinado de maneras que PHP no impone.

Creo que la pregunta debería formularse de manera diferente:
¿Cuáles son las motivaciones predominantes detrás de la elección de un lenguaje particular por parte de los desarrolladores web?

Nadie elige un lenguaje únicamente en función de si lo utiliza una empresa exitosa en particular.

Creo que algunas de las principales motivaciones serán:
– Experiencia previa
– Curva de aprendizaje
– Soporte comunitario
– Disponibilidad de documentación y materiales de aprendizaje.
– Idoneidad para la tarea particular (soporte de otras tecnologías elegidas, etc.)
– Facilidad de despliegue
– Velocidad de desarrollo (capacidad de entregar rápido y adaptarse): este es un factor muy importante hoy en día y es por eso que se prefieren los lenguajes de script dinámico

Además de las sorprendentes respuestas anteriores, no todo Facebook está escrito en una sintaxis php, sus servidores de spam están escritos en un haskell personalizado: Combatir el spam con Haskell

‘Person x’ ha demostrado que puedes escribir una plataforma altamente escalable en ‘Language x’.

Se puede aplicar a cualquier idioma.

Mark Zuckerberg probablemente usó PHP porque era lo que mejor sabía en ese momento, Ruby, Python, Java, JavaScript tienen compañías de alto perfil que los usan.

No escalas idiomas, escalas arquitecturas. La decisión sobre qué lenguaje de programación usar para el desarrollo web depende de una serie de factores que incluyen su caso de uso individual, el conjunto de habilidades del equipo, etc. PHP ha recorrido un largo camino y todavía puede ser una opción sólida hoy en día; en gran medida.

Ellos no. PHP sigue siendo una gran parte de la web.

No te preocupes demasiado por la escalabilidad. A menos que actualmente trabaje para una empresa que tiene un producto que se está volviendo viral, es muy probable que pueda lanzar hardware al problema.

Es mucho más simple lanzar hardware que volver a hacer el código.

Esos otros idiomas son difundidos por los defensores de aquellos idiomas que tienen necesidades específicas, como la minería de datos o sitios que van a millones de globos oculares.

Vaya con PHP, escriba el código limpio y use las mejores prácticas. Toca algunos tweeks como PHP 7 y Nginx si lo necesitas. No estaría preocupado en absoluto. El punto de quiebre es mucho más alto de lo que mucha gente piensa que es.

Incluso puede extenderlo a través de la base de datos y nuevamente arrojarle más hardware. Créame, los costos de hardware están bajando todos los días.

PHP fue la mejor y más barata opción para la aplicación web en 2000, pero la evolución tecnológica y los nuevos lenguajes llegan después, con mejores soluciones para la web.

Y uno de los mayores problemas de php es el OO, no tienen un buen soporte nativo para ello.

Muchas personas encuentran que escribir PHP no es deseable. El hecho de que pueda construir una plataforma altamente escalable en PHP no significa que tenga que hacerlo. Hay otras opciones viables.

Me sorprendería si Facebook está ejecutando * any * PHP puro en estos días. Parte de su back-end está escrito en Hack (PHP con tipos y más rápido), estoy seguro de que la mayoría de los componentes críticos están escritos en C ++ y, por lo que he visto, usan una buena cantidad de OCaml y Haskell para varios proyectos. (generalmente cosas de diseño de lenguaje).

Luego, los distintos front-end se escriben en JS / Java / Obj-C, por supuesto.