¿Qué lenguaje de backend debo elegir para aprender: Python, PHP o Ruby para desarrollar aplicaciones móviles de redes sociales como Twitter?

No elegiría ninguno de estos idiomas para este propósito. Cuando las personas escriben mensajes, querrás actualizar su IU en consecuencia. Entonces, si sigues a alguien y esta persona escribe algo, recibes una notificación de que hay nuevo contenido disponible. Para este propósito necesita websockets. Sí, Rails 5 tiene websockets a bordo, pero dudo que Ruby sea lo suficientemente rápido como para manejar una mayor cantidad de estos websockets. PHP tampoco es, con mucho, mi primera opción. El lenguaje no es muy moderno. Si necesita configurar su página de inicio, está bien, pero para cualquier otro propósito ni siquiera lo tomaría en consideración. Con respecto a Python, no tengo mucha experiencia, pero Python se comporta bastante como Ruby, por lo que hay las mismas desventajas esperándote.

Sugeriría buscar uno de estos idiomas más modernos:

  • Elixir -> Basado en el ecosistema Erlang (Erlang es el idioma en el que se escribió WhapsApp). La sintaxis es bastante similar a Ruby y muchos desarrolladores de Ruby actualmente cambian a Elixir ya que mantiene las ventajas de Ruby sin tener las desventajas. Y es uno de los idiomas más escalables que conozco. Características especiales: supervisores que reinician a los actores en caso de falla automáticamente, lo que resulta en tolerancia a fallas; escalabilidad debido al sistema de actores. Lenguaje muy pragmático. Te permite hacer las cosas muy rápido
  • Scala -> Otro idioma que tiene oportunidades de usar el modelo de actor. Además de eso con algunas herramientas adicionales (como Kafka y Akka Stream), obtienes un arma poderosa que es muy escalable y también tolerante a fallas (tal vez no sea igual a Elixir, pero mejor que la mayoría de los otros idiomas). Una desventaja en comparación con Elixir: menos pragmático . Scala a veces parece un poco académico.
  • Ir -> Muy diferente a los otros idiomas ya que sigue un paradigma diferente pero también tiene aspectos funcionales. Algo como Twitter podría lograrse mediante el uso del sistema de canales e ir a funcs. Esto hace que Go sea muy escalable al menos en un solo servidor. Cuando se usan varios servidores, hay un poco más que hacer que con Scala o Elixir, pero también será posible. La ventaja de ese lenguaje es que es muy fácil y sencillo de aprender. Pero pierde la función de tolerancia a fallas. Esto debe lograrse con herramientas de monitoreo.
  • Clojure -> Al igual que Scala, un lenguaje JVM basado en la sintaxis LISP. La inmutabilidad es la predeterminada, como en Elixir, que hace que el código sea más robusto. No sé si tiene un sistema de supervisión (su tarea es averiguarlo), pero Clojure le ofrecerá todas las herramientas que necesita para crear dicha aplicación. Los procesos asincrónicos se pueden generar fácilmente y son mucho más livianos que, por ejemplo, en Java. Clojure podría ser el lenguaje más simple de estos cuatro idiomas. Aunque la sintaxis se ve completamente diferente al principio, aprenderá a amarla.

Una cosa a tener en cuenta: Twitter fue escrito en Scala, WhatsApp en Erlang (Elixir es una variante más moderna de Erlang). Mi favorito sería Elixir, pero ya se ha demostrado que estas dos herramientas funcionan para tal fin.

La elección del idioma tiene muchas razones. Algunos se enumeran a continuación:

1) Aplicación o característica que se está creando

2) Infraestructura utilizada

3) Presupuestos para el proyecto

4) Disponibilidad de recursos

5) Curva de aprendizaje de nuevos recursos.

Según las cinco razones anteriores, estas son las opciones:

1) Aplicación o característica que se está creando:

Go / NodeJS: requisitos de concurrencia muy alta, sistemas basados ​​en eventos y tareas de procesamiento asíncrono para admitir un gran número de usuarios de múltiples operaciones o aplicaciones intensivas en datos.

Python: trabajar con datos, minería de datos, matemática, algoritmo o aplicaciones basadas en ML / AI.

Java: Multi-threading estable o maduro o big data

PHP: aplicaciones generales que se utilizan para operaciones CRUD simples o escalables.

2) Infraestructura utilizada:

NodeJS: haga más con menos infraestructura (infraestructura baja) para admitir una mayor concurrencia.

Python / Java / PHP: aplicaciones generales o empresariales con disponibilidad de infraestructura normal a alta. PHP es actualmente el más rápido, pero Java brinda cierta seguridad de código y las aplicaciones bien diseñadas pueden ser más rápidas ya que el código es código binario compilado.

3) Presupuestos para el proyecto:

NodeJS / Python / Go: los presupuestos deben estar por encima del promedio o por encima.

Java: promedio a alto.

PHP: bajo a promedio a alto dependiendo de las características de la aplicación y la optimización necesaria.

4) Disponibilidad de recursos:

NodeJS / Python / Go: los desarrolladores realmente buenos también son difíciles de encontrar.

Java: la disponibilidad de recursos es abundante de encontrar, pero tendrá que evaluar a los desarrolladores.

PHP: los desarrolladores de PHP realmente buenos son difíciles de encontrar. Todas las demás personas son desarrolladores de PHP sin conocer los estándares de codificación PHP escalables y actuales.

5) Curva de aprendizaje de nuevos recursos:

NodeJS / Go: Tiempo medio a alto. Algunas personas no solo lo entienden (Async / Concurrency)

Python: marco de tiempo medio a alto. Algunas personas no solo lo entienden (ML / AI)

Java: plazo medio

PHP: marco de tiempo bajo

Así que elija su infraestructura, decida las características, decida las necesidades de optimización / volumen de usuario / escalabilidad, presupuesto, mantenibilidad y opciones de recursos.

¿Puede PHP manejar sitios de nivel empresarial y Java?

Te daré pros y contras de PHP y ROR.

PHP
pros:

  • Fácil de aprender
  • Toma menos tiempo desarrollarse
  • Muchos marcos disponibles

contras:

  • Sin código de andamio (tendrá que buscar si hay alguno)
  • No RESTful (aunque puedes hacerlo RESTful)

ROR
pros:

  • Marco madurado (rieles 4.2.0).
  • Versiones estables de rubí (2.2.0) y rieles (4.2.0)
  • Código de andamios
  • Elección de rutas y apis de espaciado de nombres
  • Construir apis RESTful
  • Muchas gemas disponibles para hacer la vida más fácil
  • Arquitectura MVC para segregar las cosas con mayor claridad.

contras:

  • Larga curva de aprendizaje
  • Toma tiempo desarrollarse si eres un novato

Veredicto: adelante con ROR. Lo admirarás una vez que conozcas el poder que hay en él.

El término backend tiene múltiples significados, se usa para crear un sitio web / lenguaje que interactúa con la fuente de datos y tiene páginas basadas en HTML para mostrar datos y también se usa para crear scripts que pueden ejecutarse o invocarse por una aplicación web.

Hablando de lenguaje, iría con Python. Es un lenguaje bastante hermoso, pero el problema es que no estoy lo suficientemente inclinado con los marcos web modernos como Django y Flask. Django está hinchado, mientras que Flask no fue una ruta agradable para mí a pesar de que es mucho más ligero que Django. También puede escribir scripts CGI en Python, pero puede ser demasiado para usted.

Ruby es bueno, pero generalmente cuando alguien refiere a Ruby quiere decir RoR (Ruby on Rails). RoR es un marco MVC bastante hermoso y su director DRY funcionó bastante bien. DHH realmente aprovechó Ruby y creó un increíble framework web basado en MVC. Debido al rápido desarrollo y la pequeña curva de aprendizaje, muchas organizaciones se sintieron atraídas por Rails. Aunque muchas empresas se están alejando debido a su bajo rendimiento.

PHP, por otro lado, es un jugador bastante antiguo en el mercado de desarrollo web, por lo que tiene una adaptación más amplia. Si no me equivoco, es un sucesor de Perl. PHP tenía varios marcos, pero ninguno era tan hermoso como Rails hasta que surgió Laravel. Laravel es la respuesta de Rails para la comunidad PHP, ya que también sigue al director DRY y es bastante similar en términos de implementación. Lo que DHH con Ruby, Tyler hizo con PHP.

Para responder a su pregunta principal, bien, puede implementarse en cualquier lenguaje de script. Si realmente desea elegir uno de ellos, elija PHP con el marco Laravel MVC; de lo contrario, Rails es una buena opción para crear aplicaciones web. Puede usar Python para servicios de nivel medio para enviar / extraer datos hacia / desde recursos externos. Deseo que llegue un día en que alguien haga un marco hermoso similar a Laravel / Rails. Demasiadas importaciones es un gran desvío para mí.

Deberías ir con RoR (Ruby on Rails).

  • El sistema de “rutas” de Rails facilita el diseño de URL de API . Puedo decidir de antemano cómo deberían ser mis URL, y puedo cambiarlas en cualquier momento sin modificar el código real o mover los archivos.
  • La compatibilidad con JSON, XML y YAML está integrada, lo que facilita la escritura de servicios web.
  • Rails solo carga el código una vez , cuando el servidor se inicia por primera vez. La sobrecarga por solicitud es extremadamente baja.

Podrías haber buscado en Google Twitter (o cualquier otra cosa) solo para obtener alguna pista. Esto le dice rápidamente que RoR se usó inicialmente para Twitter. Cuando se hizo más popular y el “rendimiento” fue un problema, tuvieron que cambiar a Java.
¿Por qué Twitter se alejó de Ruby on Rails?