¿Cuál es el mejor lenguaje para un back-end de servicios web altamente escalable en tiempo real?

Depende de su definición de aceleración y del tipo de proceso en segundo plano:
Las preguntas que debe responder antes de iniciar este proceso son:

¿Cuál es el tipo de trabajo que está intentando acelerar? ¿Una tarea vinculada a la CPU o una tarea IO?

  • Las tareas de IO no ganan mucho con el cambio a un lenguaje “más rápido”. Optimiza tu código IO. El uso de C o C ++ con llamadas al sistema bien pensadas podría ayudar, pero también podría darse cuenta de estas ganancias de velocidad con el uso juicioso de las bibliotecas Ruby.
  • Las tareas vinculadas a la CPU son ligeramente diferentes. Para estas tareas, el lenguaje en sí puede ser un cuello de botella o una fuente de ineficiencia. Es posible que desee implementar el código utilizando C o C ++, ya que las partes más informáticas se escriben en ensamblaje (pero evite el ensamblaje tanto como pueda). Sin embargo, independientemente del idioma elegido para la implementación, asegúrese de hacer un perfil de su código para resolver los cuellos de botella. Las optimizaciones de rendimiento solo se pueden realizar una vez que conozca los puntos críticos en su código y pueda analizar cuantitativamente el impacto en el rendimiento de los cambios introducidos en él. De lo contrario, corre el riesgo de retroceder involuntariamente en el rendimiento del tiempo de ejecución debido a cambios de optimización en el código que no funcionan como se esperaba.

¿Se puede paralizar el trabajo?

  • El paralelismo introducido en un lenguaje lento puede producir grandes ganancias con modificaciones de código mínimas. Explore formas de obtener ganancias en el rendimiento sin una reescritura de código explorando procesos de subprocesos múltiples o cooperativos.
  • Sin embargo, tenga en cuenta que un algoritmo parcelelizado generalmente introduce gastos generales, como la sincronización y la comunicación entre procesos, que podrían hacer que las ganancias de la paralelización no valgan la pena.

¿Cuánto está dispuesto a intercambiar la productividad del desarrollador por ganancias de velocidad?

  • Por ejemplo: elegir C o C ++ probablemente hará que su código sea lo más rápido posible, pero C / C ++ es un poco más lento de desarrollar en términos de productividad para desarrolladores y tiene errores ocultos (personalmente, me encanta el lenguaje pero reconozco sus fallas ).
  • En contraste, los lenguajes basados ​​en Java o JVM son más lentos, pero le brindarán mayor seguridad contra errores ocultos (por ejemplo, desbordamientos de búfer)
  • En una nota tangencial: Erlang tiene algunas funciones de intercambio en caliente y paralelismo masivo que serían bastante difíciles de implementar usando otros idiomas o que requieren bibliotecas o código específico de la plataforma, pero el desarrollo en Erlang definitivamente pone presión sobre aquellos que son nuevos en el idioma.

En resumen, elija un idioma con el que los desarrolladores se sientan cómodos y explore el dominio del problema y descubra puntos de acceso de código antes de apresurarse para optimizar. Una solución bien pensada le ahorrará mucho dolor a largo plazo.

Todos los idiomas que mencionó son adecuados para crear un back-end de servicios web altamente escalable.
Lo que deberías pensar más es:

  1. Qué habilidades tienen los desarrolladores actuales:
    No desea utilizar un idioma que nadie en su grupo sepa todavía (a menos que no tenga otra opción).
  2. Qué marco existe para hacer tu trabajo más fácil y mejor. Por ejemplo, si elige Java, puede usar Spring para construir su servicio web que le ahorrará tiempo y dinero y le proporcionará una infraestructura bien probada para que se ejecute su servicio.

Entonces, personalmente, usaría Java y Spring, pero eso es debido a todos los lenguajes anteriores, con el que estoy más familiarizado.

Mi recomendación es simplemente ir con java. Va a ser más que lo suficientemente rápido para casi cualquier cosa. Es simple y casi todos lo saben. Cosas como erlang rock, pero básicamente necesitas estrellas de rock para escribirlo. Java también te deja con un montón de opciones, puedes mover toda tu pila a java usando jruby y obtener un aumento de rendimiento gratuito para tu interfaz al mismo tiempo que puedes compartir todas tus bibliotecas. La JVM es la mejor plataforma IMO que existe cuando se trata de optimizaciones JIT, subprocesos sin GIL y bibliotecas existentes.