En primer lugar, es un error suponer que debido a que Erlang es una buena opción para algunos equipos, será una opción igualmente buena para otros equipos, incluso si los problemas que se resuelven parecen, desde afuera, ser algo similares.
Hay una serie de razones por las cuales se pueden elegir ciertos idiomas para abordar una necesidad. Aquí hay algunos de ellos (esto no es exhaustivo, por supuesto):
- familiaridad con el lenguaje y el entorno
- costo operativo de usar el lenguaje y sus herramientas asociadas
- riqueza del ecosistema y disponibilidad de bibliotecas para abordar las necesidades específicas del dominio
- capacidad de poner al día a los nuevos miembros del equipo (es discutible si esta es una buena razón para elegir un idioma en particular)
- Aplicabilidad de las estructuras comunes soportadas por el lenguaje al problema
Estas son solo algunas consideraciones, por supuesto, pero todas son importantes. Para darle un ejemplo más concreto, señalaré cómo cada uno de los cinco elementos enumerados me ha llevado a preferir Scala para proyectos recientes. Esta es mi preferencia, pero puedo ver fácilmente a otros equipos tomando decisiones muy diferentes.
- Tomé un trabajo como consultor de software, ¿puedo usar estas habilidades para ser desarrollador algún día si no me gusta?
- ¿Cuáles son algunas sugerencias y temas que debo considerar si voy a dar una charla sobre tecnología y desarrollo de software a un grupo local de no técnicos en mi comunidad local?
- ¿Las pruebas de software son más fáciles en comparación con la codificación / desarrollo en el campo del software?
- Cuando uso el código JavaScript de código abierto para mi sitio web, ¿tengo que poner créditos solo en el archivo .js o también en la parte inferior de mi sitio web?
- ¿Necesito un doctorado en sistemas distribuidos, aprendizaje automático, bases de datos o especialización similar para llegar a L7 + en Google / FB / Amazon y ganar 1 mill + / año?
- Los equipos con los que he trabajado provienen en gran medida de fondos Java y C #, por lo que pasar a un lenguaje que tiene muchas construcciones similares hace que sea más fácil comenzar.
- La JVM es un entorno bien entendido desde una perspectiva operativa. El monitoreo, la implementación, etc. son problemas que tienen una serie de mejores prácticas establecidas para aplicaciones basadas en JVM y es relativamente fácil encontrar personal de operaciones que esté familiarizado con ellas.
- Existen innumerables bibliotecas para la JVM. Tantos, de hecho, que es casi un detrimento (solo pregunte a cualquiera que haya tenido que resolver las diferentes bibliotecas de registro en las aplicaciones JVM).
- Descubrí que contratar personas que pueden ponerse al día con Scala no es un gran problema. Hay suficientes corolarios entre muchos de los lenguajes comúnmente conocidos (Java y C #, como se mencionó, pero también Python, Ruby, etc.) que puede llenar los vacíos con bastante facilidad, al menos para tareas básicas.
- En mi caso, la concurrencia ha sido una preocupación en muchos proyectos recientes y, en todo caso, Scala casi le da demasiadas opciones sobre cómo abordar esto. Personalmente, soy fanático de los sistemas basados en actores, por lo que Erlang no habría sido una mala elección, pero los otros factores pesan más a su favor.
No hay una respuesta única para todos aquí. Tú eliges lo que tiene sentido según las circunstancias. Idealmente, los desarrolladores del equipo tendrán suficiente exposición a las diversas opciones para tomar una decisión informada y trabajarán juntos, como equipo, para descubrir qué tiene sentido.